PDA

Просмотр полной версии : [Вопрос] Дата регистрации



Freaky
18.08.2016, 00:03
не выводит дату регистрации в статистику. В базе данных дата назначается, а в статистику выводиться не хочет...

http://image.prntscr.com/image/2f97060fe86446d4a0da1fe6aea4813c.png


pInfo[playerid][pRegData] = cache_get_field_content_int(0, "datareg", mysql_connect_id);


new strdate[24];
new year,month,day;
getdate(year, month, day);
format(strdate, sizeof(strdate), "%d.%d.%d",day,month,year);
new query_string[70+MAX_PLAYER_NAME+30+30];
format(query_string, sizeof(query_string), "INSERT INTO `accounts` (`player_name`, `password`, `datareg`) VALUES ('%s', '%s', '%s',)", sendername(playerid), password, strdate);


new data = pInfo[targetid][pRegData];
new msg[] = "{ffffff}Имя:\t\t\t{8d8dff}%s\n{ffffff}Номер аккаунта:\t{8d8dff}№ %d\n\n{ffffff}Уровень:\t\t%d\nОпыт в игре:\t\t%d/%d\nДата регистрации:\t %s\n";
format(coordsstr, 2000, msg, sendername(targetid),id,level,exp,expamount,data);
ShowPlayerDialog(playerid,D_NULL,DIALOG_STYLE_MSGBOX,"{8d8dff}Статистика персонажа",coordsstr,"Закрыть","");

Redsan
18.08.2016, 00:34
Integer - целое число

Desulaid
18.08.2016, 00:35
Чтобы решить этот вопрос, вам следует узнать в каком виде данных сохраняется дата в базе данных. Думаю, ответ на вопрос после этого вы быстро найдете.

gangzone.ini
18.08.2016, 00:39
cache_get_field_content_int - Функция, которая работает с целочисленными данными.
Параметры:

cache_get_field_content_int(row, const field_name[], connectionHandle = 1);
/*------------------------------------------------
row - Номер строки в ВОЗВРАЩЁННЫХ данных, с которой будем работать (первая строка всегда равна нулю и так как в результате запроса строк не может быть больше одной, мы ставим "0")
const field_name[] - Имя столбца, из которого и будем брать значение
connectionHandle - ID базы данных*/
Пример использования:

new variable = cache_get_field_content_int(0, "level", dbHandle);
printf("Уровень игрока равен %d", variable);

cache_get_field_content - Функция, которая работает с строками.

Параметры:

cache_get_field_content(row, const field_name[], destination[], connectionHandle = 1, max_len=sizeof(destination));
/*-----------------------------------------------------------------------------------------------------------------
row - Номер строки в ВОЗВРАЩЁННЫХ данных, с которой будем работать (первая строка всегда равна нулю)
const field_name[] - Имя столбца, из которого и будем брать значение
destination[] - Массив, в который будет записан текст из столбца
connectionHandle - ID базы данных
max_len - Необязательный параметр. Изначально равен числу ячеек в массиве, который указали в "destination"*/
Пример использования:

new player_name[MAX_PLAYER_NAME];
cache_get_field_content(0, "player_name", player_name, dbHandle);
printf("Имя игрока - %s", player_name);

cache_get_field_content_float - Функция, которая работает с вещественным типом данных.

Параметры:

cache_get_field_content_float(row, const field_name[], connectionHandle = 1);
/*-----------------------------------------------------------------------------------------------------------------
row - Номер строки в ВОЗВРАЩЁННЫХ данных, с которой будем работать (первая строка всегда равна нулю)
const field_name[] - Имя столбца, из которого и будем брать значение
connectionHandle - ID базы данных*/
Пример использования:

new Float: health = cache_get_field_content_float(0, "player_health", dbHandle);
printf("У игрока %f жизней", health);
© DeimoS

$continue$
18.08.2016, 01:22
А, говорят SQL запросы учить не нужно. Есть в mysql функция NOW() (http://www.mysqltutorial.org/mysql-now/) она возвращает время с сервера. Тогда не придется использовать gettime/getdate. И загружать эту дату как string (строку)

Freaky
18.08.2016, 04:50
Integer - целое число

http://image.prntscr.com/image/635456c157344a8888ce3148fdc7c445.png

123
18.08.2016, 06:15
А, говорят SQL запросы учить не нужно. Есть в mysql функция NOW() (http://www.mysqltutorial.org/mysql-now/) она возвращает время с сервера. Тогда не придется использовать gettime/getdate. И загружать эту дату как string (строку)

Ну во-первых время не на сервере, а время в БД. А поскольку время в бд не всегда равно времени на сервере, использование функций типа NOW(), UNIX_TIMESTAMP() крайне нежелательно. Всегда необходимо использовать время на сервере, лучше всего - с помощью UNIX времени (хранить намного проще).


http://image.prntscr.com/image/635456c157344a8888ce3148fdc7c445.png
Тогда вы неправильно вытаскиваете данные с бд. Такой способ -

pInfo[playerid][pRegData] = cache_get_field_content_int(0, "datareg", mysql_connect_id);

Подходит только для целых чисел. Со строкой нужно обращаться вот так:

cache_get_field_content(0, "datareg", pInfo[playerid][pRegData], mysql_connect_id, 16);

_lizard
18.08.2016, 10:49
А, говорят SQL запросы учить не нужно. Есть в mysql функция NOW() (http://www.mysqltutorial.org/mysql-now/) она возвращает время с сервера. Тогда не придется использовать gettime/getdate. И загружать эту дату как string (строку)

При использовании этих функций в запросе (плагин от BlueG) они записывают в базу всегда 00.00.00