Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 3 1 2 3 ПоследняяПоследняя
Показано с 1 по 10 из 22
  1. #1
    Аватар для Skyline
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.01.2014
    Адрес
    Россия
    Сообщений
    304
    Репутация:
    2 ±

    Дата вступления MySQL.

    Здравствуйте. Подскажите пожалуйста, как в БД обозначить дату вступления и дату повышения игрока.
    При назначении лидерки и вступления игрока я добавил:
    PHP код:
    PlayerInfo[params[0]][pDataInvite] = gettime(); 
    А какой тип указать в БД? Полазил по интернету, прочитал что DATETIME выводит дату и время, как раз то, что мне нужно. Попробовал, но когда я назначил лидерку, ничего не произошло, в БД запись не обновилась, а осталась 0000-00-00 00:00:00
    Если выбираю INT - то выводит просто целое огромное число.
    Подскажите как быть и как это вывести потом в игре, через format например.

  2. #2
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    gettime() возвращает UNIX Time
    Пример с WIKI:
    PHP код:
    new HourMinuteSecondTimestamp;
    Timestamp gettime(HourMinuteSecond);
    printf("%02d:%02d:%02d"HourMinuteSecond);
    printf("Seconds since midnight 1st January 1970: %d"Timestamp); 


    Советую использовать функцию NOW() и тогда тип столбца - DATETIME.
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

  3. #3
    Аватар для Skyline
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.01.2014
    Адрес
    Россия
    Сообщений
    304
    Репутация:
    2 ±
    Т.е. если я использую NOW() он запишет один раз, без изменений, т.е если игрока приняли, записалась дата и все, а если потом повысили, то она уже не перезапишется?
    И как тогда вывести мой PlayerInfo[params[0]][pDataInvite] через NOW? Подскажи пожалуйста.

  4. #4
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Не совсем понял, но почему дата принятия перезаписывается в зависимости от повышения игрока?
    Цитата Сообщение от Skyline Посмотреть сообщение
    Т.е. если я использую NOW() он запишет один раз, без изменений, т.е если игрока приняли, записалась дата и все, а если потом повысили, то она уже не перезапишется?
    Зачем это нужно? И как оно используется?
    Цитата Сообщение от Skyline Посмотреть сообщение
    И как тогда вывести мой PlayerInfo[params[0]][pDataInvite] через NOW? Подскажи пожалуйста.
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

  5. #5
    Аватар для wAx
    ¯\_(ツ)_/¯

    Статус
    Оффлайн
    Регистрация
    13.12.2013
    Сообщений
    377
    Репутация:
    146 ±
    Значение из поля datetime, если не ошибаюсь, выводится как строка. Пр. Повышении игрока просто в то же поле еще раз запиши данные по такому же принципу, время обновится

  6. #6
    Аватар для Skyline
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.01.2014
    Адрес
    Россия
    Сообщений
    304
    Репутация:
    2 ±
    Цитата Сообщение от $continue$ Посмотреть сообщение
    Не совсем понял, но почему дата принятия перезаписывается в зависимости от повышения игрока?

    Зачем это нужно? И как оно используется?

    Дата принятия записывается единожды, но когда игрока кикнут, она должна обнулиться.
    Потом при принятии в другую например фракцию, снова записывается.
    А вот при повышении игрока уже она меняется, т.е. дата принятия не изменяется, а при повышении, перезаписывается.

    А DataInvite хочу чтобы хранило в себе эту дату принятия, чтобы можно например было вывести в статистике игрока.
    Или же можно как то сделать иначе?

  7. #7
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Ну так какие проблемы? При вступлении во фракцию отправляй запрос с использованием NOW() на нужный столбец. Когда нужно выгрузить, выгружай как строку (соответственно, в массив). Когда нужно обнулить - обнуляй. Когда нужно обновить - обновляй. Всё работает точно так же, как и с другими столбцами. Для дат нет каких-то особенных условий, кроме определённого типа столбца в БД (о чём уже сказали) и, собственно, всё.
    С повышением всё точно так же.

    Или ты хочешь, чтоб мы тебе тут готовые запросы написали и рассказали куда их вставлять?
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  8. #8
    Аватар для _lizard
    Пользователь

    Статус
    Оффлайн
    Регистрация
    11.02.2016
    Адрес
    Геленджик
    Сообщений
    193
    Репутация:
    26 ±
    Если я не ошибаюсь, функция NOW () в плагине от Blue-G всегда возвращает нулевые значения

  9. #9
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от _lizard Посмотреть сообщение
    Если я не ошибаюсь, функция NOW () в плагине от Blue-G всегда возвращает нулевые значения
    NOW() - это не функция плагина, это функция сервера. Если возвращается нулевое значение, то ваш MySQL сервер настроен неправильно. Гораздо надёжнее будет воспользоваться функцией SA-MP - gettime() и передать полученное значение в MySQL.

  10. #10
    Аватар для Skyline
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.01.2014
    Адрес
    Россия
    Сообщений
    304
    Репутация:
    2 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    NOW() - это не функция плагина, это функция сервера. Если возвращается нулевое значение, то ваш MySQL сервер настроен неправильно. Гораздо надёжнее будет воспользоваться функцией SA-MP - gettime() и передать полученное значение в MySQL.
    Тогда тип DataInvite в БД будет INT? Просто он записывает не дату, а целое число.

 

 
Страница 1 из 3 1 2 3 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •