PDA

Просмотр полной версии : [Вопрос] Неверные вывод данных.



Skyline
21.03.2017, 11:30
Здравствуйте. Проблема заключается в следующем.
При выгрузке данных из БД появляются ошибки и в игре они не отображаются.

Все данные успешно заносятся в БД, все сохраняется, но когда дело доходит, чтобы это все вывести игроку, то выводит только ник игрока.
Причина, ник администратора и количество дней не показывает.


new rows,
unbandate,
reason_ban[30],
admin_name[MAX_PLAYER_NAME+1];

cache_get_row_count(rows);
if(rows)
{
cache_get_value_name_int(0, "Unban_Date", unbandate);
if(gettime() >= unbandate) pInfo[playerid][pBan] = 1;
}
if(pInfo[playerid][pBan] == 1)
{
cache_get_value_name(0, "Reason", reason_ban);
printf("%s reason", reason_ban);
cache_get_value_name(0, "Admin_Name", admin_name);
printf("%s admin_name", admin_name);

new string[100];
format(string,sizeof(string),"Аккаунт {FF6347}%s{ffffff} временно {FF6347}заблокирован.{ffffff}",pInfo[playerid][pName]);
SendClientMessage(playerid,COLOR_WHITE,string);
format(string,sizeof(string),"Причина: {FF6347}%s{ffffff}. Забанил: {FF6347}%s,", reason_ban, admin_name);
SendClientMessage(playerid,COLOR_WHITE,string);
format(string,sizeof(string),"Осталось: {FF6347}%d дн.{ffffff} до {FF6347}разблокировки", unbandate);
SendClientMessage(playerid,COLOR_WHITE,string);
return Kick(playerid);
}

Подскажите пожалуйста в чем может быть проблема.
Вот mysql_log, который указывает, что неверно указаны названия, но каким образом тогда происходит полное сохранение всех данных?

[10:16:41] [plugins/mysql] cache_get_value_name_int: field 'Unban_Date' not found
[10:16:41] [plugins/mysql] cache_get_value_name: field 'Reason' not found
[10:16:41] [plugins/mysql] cache_get_value_name: field 'Admin_Name' not found

Структура БД/Сохранение.
http://s012.radikal.ru/i320/1703/4d/38093b4cd183t.jpg
http://s019.radikal.ru/i611/1703/4d/bf1f05bfcea7.png

Подскажите пожалуйста, в чем может быть ошибка?

DeimoS
21.03.2017, 11:39
Запрос покажи

Skyline
21.03.2017, 11:40
В OnPlayerConnect

format(query_string, sizeof query_string, "SELECT * FROM `banlist` WHERE `Name` = '%s'", pInfo[playerid][pName]);
mysql_tquery(mysql_connect_ID, query_string, "", "");

DeimoS
21.03.2017, 12:14
Эмм, так а какой коллбэк ты вызываешь запросом? :)

Alpano
21.03.2017, 12:17
У тебя загрузка идет (int - число)

cache_get_value_name_int: field 'Unban_Date' not found

А в структуре у тебя идет текст. Если я правильно понял.

DeimoS
21.03.2017, 12:22
У тебя загрузка идет (int - число)

cache_get_value_name_int: field 'Unban_Date' not found

А в структуре у тебя идет текст. Если я правильно понял.

Неправильно :) Он посылает запрос, но паблик для обработки кэша, при этом, не указывает => кэш никак не связан с загрузкой данных

format(query_string, sizeof query_string, "SELECT * FROM `banlist` WHERE `Name` = '%s'", pInfo[playerid][pName]);
mysql_tquery(mysql_connect_ID, query_string, "Вот тут должно быть имя паблика", "");
соответственно плагин не знает о существовании указанных в функциях столбцов и выдаёт соответствующую ошибку

Skyline
21.03.2017, 12:29
[11:22:59] [join] Kent_No has joined the server (0:127.0.0.1)
[11:22:59] SELECT * FROM `banlist` WHERE `Name` = 'Kent_No'
[11:23:02] unban_date
[11:23:12] 'Kent_No', 'Проверка', 'Гл. Администратор', 'Kent_No', '21.03.2017, 11:23:12', '1490084592'
[11:23:13] [part] Kent_No has left the server (0:2)
[11:24:01] [connection] 127.0.0.1:55539 requests connection cookie.
[11:24:02] [connection] incoming connection: 127.0.0.1:55539 id: 0
[11:24:02] [join] Kent_No has joined the server (0:127.0.0.1)
[11:24:02] SELECT * FROM `banlist` WHERE `Name` = 'Kent_No'
[11:24:05] unban_date
[11:24:05] reason
[11:24:05] admin_name
[11:24:05] Аккаунт {FF6347}Kent_No{ffffff} временно {FF6347}заблокирован.{ffffff}
[11:24:05] Причина: {FF6347}{ffffff}. Забанил: {FF6347},
[11:24:05] Осталось: {FF6347}0 дн.{ffffff} до {FF6347}разблокировки
[11:24:06] [part] Kent_No has left the server (0:2)

НУ все что с баном было связано прологировал.

- - - Добавлено - - -


Неправильно :) Он посылает запрос, но паблик для обработки кэша, при этом, не указывает

format(query_string, sizeof query_string, "SELECT * FROM `banlist` WHERE `Name` = '%s'", pInfo[playerid][pName]);
mysql_tquery(mysql_connect_ID, query_string, "Вот тут должно быть имя паблика", "");
соответственно плагин не знает о существовании указанных в функциях столбцов и выдаёт соответствующую ошибку

У меня public - это загрузка игрока, .т.е. действие которое производите при авторизации. Он вводит пароль и т.д.. Если игрок забанен, то выводит данное сообщение и кикает, это не отдельный паблик.

DeimoS
21.03.2017, 12:37
Ну так а сейчас ты отправляешь запрос в отдельном потоке, что подразумевает обработку результата в паблике.
Используй однопоточный запрос через mysql_query

Skyline
21.03.2017, 23:23
Ну так а сейчас ты отправляешь запрос в отдельном потоке, что подразумевает обработку результата в паблике.
Используй однопоточный запрос через mysql_query

Спасибо. Все работает, только количество дней не верное выводит..
Уже по разному пробовал, не могу ловить правильный вариант.