PDA

Просмотр полной версии : [Вопрос] Система счетов в банке



Andrik851
12.10.2019, 18:25
Добрый день помогите пожалуйста имеестся система счетов в банке но вот такая проблемма при открытии нового счета в банке он открывается далее второй третий и так далее но когда переходишь во вкладку управления счетами пишет что " Что у вас нет счетов в банке " хотя в базе даннызх их 3 но в отдельной таблице они не создаются



case D_BANK_MENU + 1:
{
if(!response) return 1;

if(GetMoney(playerid) < 5000)
return SendClientMessage(playerid, -1, ""cER"У Вас недостаточно средств на счете, для открытия нового счета в банке");

PI[playerid][pBankCount] ++ ;
MysqlUpdatePlayerInt(playerid, "bankcount", PI[playerid][pBankCount]);

new player_ip[16];
GetPlayerIp(playerid, player_ip, sizeof player_ip);

global_string = "";

mysql_format(dbHandle, global_string, 128, "INSERT INTO bank (name, ip, data, cash) values ('%s', '%s', NOW(), '250')", GetName(playerid), player_ip);// вся проблемма думаю в этом
mysql_tquery(dbHandle, global_string, "", "");

SendMes(playerid, 0x76CD5EFF, "[Банк]: {FFFFFF}новый счет на имя {F3F142}%s {FFFFFF}успешно открыт в нашем банке", GetName(playerid));
}


и вот диалог и паблик управления счетами в банке



case D_BANK_MENU + 2:
{
if(!response) return 1;

switch(listitem)
{
case 0:
{

SetPVarInt(playerid, "bank_type", 1);

global_string = "";

mysql_format(dbHandle, global_string, 128, "SELECT * FROM `bank` WHERE `name` = '%s'", GetName(playerid));
mysql_tquery(dbHandle, global_string, "ShowBankMoney", "i", playerid);

}

case 1:
{
ShowPlayerDialog(playerid, D_BANK_MENU + 3, DIALOG_STYLE_INPUT, "{"#cSV"}Заблокировать банковский счет", "{FFFFFF}В данном окне Вы можете заблокировать Ваш банковский счет\nПосле блокировки счета, Вы, и никто другой, не сможет совершать платежи и переводы на Ваш счет\nСчет всегда можно разблокировать в меню банка\n\nУкажите номер счета, который необходимо заблокировать:", "Далее", "Назад");
}

case 2:
{
ShowPlayerDialog(playerid, D_BANK_MENU + 4, DIALOG_STYLE_INPUT, "{"#cSV"}Разблокировать банковский счет", "{FFFFFF}В данном окне Вы можете разблокировать Ваш банковский счет\n\nУкажите номер счета, который необходимо разблокировать:", "Далее", "Назад");
}

case 3:
{
ShowPlayerDialog(playerid, D_BANK_MENU + 5, DIALOG_STYLE_INPUT, "{"#cSV"}Закрыть банковский счет", "{FFFFFF}В данном окне Вы можете закрыть счет в нашем банке\nСчет закрывается навсегда и больше не сможет использоваться\nВсе деньги, которые остались на этом счете, будут утеряны\n\nУкажите номер счета, который необходимо закрыть:", "Далее", "Назад");
}

}
}


и паблик управления счетами в банке



publics: ShowBankMoney(playerid)
{
new r, f;
cache_get_data(r, f);
if(!r)
return SendClientMessage(playerid, -1, ""cER"У Вас не имеется счетов в банке"), DeletePVar(playerid, "bank_type");

new fmt_str[128], b_id, b_money, b_block;
global_string = "";

for(new idx; idx < r; idx++)
{
b_id = cache_get_field_content_int(idx, "id");
b_money = cache_get_field_content_int(idx, "cash");
b_block = cache_get_field_content_int(idx, "block");
format(fmt_str, sizeof fmt_str, "{FFFFFF}Счёт №%d - Баланс: {9C9E9B}%d руб. {FFFFFF}- %s\n", b_id, b_money, !b_block ? ("{8DC65B}Активен") : ("{F77625}Заблокирован"));
strcat(global_string, fmt_str);
SetPlayerListitemValue(playerid, idx, b_id);
}

ShowPlayerDialog(playerid, D_BANK_MONEY, DIALOG_STYLE_LIST, "{"#cSV"}Ваши банковские счета:", global_string, "Выбрать", "Выход");

return 1;
}

Fallen A.
12.10.2019, 20:27
Лучше, при привязке данных к аккаунту, использовать ключом ID игрока из базы, нежели его имя.

Andrik851
12.10.2019, 20:37
а как это сделать можете подсказать как правильно сделать этот запрос или как оно называется в бд

Fallen A.
12.10.2019, 22:58
а как это сделать можете подсказать как правильно сделать этот запрос или как оно называется в бд

Это уже из темы "правильное проектирование БД".

Andrik851
12.10.2019, 23:27
я сейчас понял что то сделал и получилось так что у меня счета теперь создаются но только вместо имени заполняет айпи

DeimoS
13.10.2019, 13:18
Во-первых, зачем вот в этом запросе 250?
mysql_format(dbHandle, global_string, 128, "INSERT INTO bank (name, ip, data, cash) values ('%s', '%s', NOW(), '250')", GetName(playerid), player_ip);
mysql_tquery(dbHandle, global_string, "", "");
В структуре таблицы можно выставить значение по умолчанию для столбца. Указываешь там 250, а тут убиваешь "cash" и "250", тем самым экономя память и время при формировании запроса.

Во-вторых, ты логировал этот запрос вообще? Данные правильные вставляются? Что в mysql_log пишется?