Хотелось бы узнать, можно ли сделать, чтобы поиск в таблице шел не от начала к концу, а наоборот?
Если что-то нужно уточнить, пишите, уточню.
Хотелось бы узнать, можно ли сделать, чтобы поиск в таблице шел не от начала к концу, а наоборот?
Если что-то нужно уточнить, пишите, уточню.
Поподробнее можно? Просто не могу в гугле найти ничего стоящего. У меня идет номер банковского счета A_I. Мне нужно его узнать, для этого я выбираю в таблице всех счетов по паролю, который ввел игрок, но баг в том, что если такой пароль есть, то он выдаст первый счет, который попадется с таким паролем. Если же он начнет искать с конца такой проблемы не будет.
Сохранить ID банковского счёта в аккаунте игрока не вариант? Ибо по идее достаточно всего одного счёта на игрока - разрешить игроку создавать несколько счетов значит дать ему возможность невозбранно засорять базу данных.
Зато баг наверняка снова проявится, если чужой счёт с таким же паролем будет расположен после того счёта, который нужно отыскать. Что ещё раз доказывает некомпетентность идеи поиска по паролю.
Нужно устранять проблему, а не пытаться спрятать её.
Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).
Стол заказов:
Мои работы:
Можно сделать их отдельно от счетов игроков. Впрочем, если вам нравится делать всё на соплях, как показано по ссылке в моём предыдущем посте - пожалуйста (я уже говорил, почему поиск по паролю ненадёжен, и никакая смена порядка поиска не спасёт). Стрелять себе в ногу - это ваше право.
Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).
Стол заказов:
Мои работы:
Я уже описал способ решения проблемы, что вам в этом не нравится?
Хорошо, распишу подробнее. Можно даже, немного схитрив, сделать счета в одной таблице.
В таблице с банковскими счетами добавляем поле "OwnerID". В этом поле будет либо ID игрока-владельца (имеется в виду ID в таблице аккаунтов игроков), либо номер организации (в виде отрицательного числа). Например, если это число 125, владелец счёта - игрок, который зарегистрирован 125-м в таблице аккаунтов. Если же в OwnerID число -10, доступ к этому счёту может получить только лидер организации под номером 10. Соответственно, поиск счёта должен будет производиться по этому полю, значение которого уникально для каждого счёта, а значит вам не попадётся чей-то чужой счёт.
Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).
Стол заказов:
Мои работы:
Повторюсь, игрок может создать несколько счетов, и если выбирать по ID аккаунта, то он покажет первый попавшийся, а зарегистрированный игроком является последним, ну или почти последним. Я делаю проверку в таблице по паролю, введенному игроком
Вот код:
Мне это нужно лишь чтобы сообщить игроку номер счета, ибо другого способа я не знаю.PHP код:
new query[128];
format(query, sizeof(query), "INSERT INTO `banks` (`bank_password`) VALUES ('%d')", strval(inputtext));
mysql_function_query(mysql_connect_ID, query, false, "","");
format(query, sizeof(query), "SELECT * FROM `banks` WHERE `bank_password` = '%d'", strval(inputtext));
mysql_function_query(mysql_connect_ID, query, true, "FindBankNumber","ii", playerid, strval(inputtext));
SetPVarInt(playerid, "Bank", 2);
fpublic FindBankNumber(playerid, banknumber);
{
new rows,fields, query[128];
cache_get_data(rows, fields);
if(!rows) return SendClientMessage(playerid, COLOR_GREY, "Такого счета не существует!");
pInfo[playerid][pBankNumber] = cache_get_field_content_int(0, "bank_number", mysql_connect_ID);
pInfo[playerid][pBankPassword] = cache_get_field_content_int(0, "bank_password", mysql_connect_ID);
if(GetPVarInt(playerid, "Bank") == 1) return ShowPlayerDialog(playerid, dialog_bank+3, DIALOG_STYLE_INPUT, "Мой счет", "{ffffff}Введите пароль от счета:", "Далее", "Закрыть");
if(GetPVarInt(playerid, "Bank") == 2) return format(query, sizeof(query), "Номер счета: %d\nПароль: %d", pInfo[playerid][pBankNumber], pInfo[playerid][pBankPassword]), ShowPlayerDialog(playerid, dialog_bank+7, DIALOG_STYLE_MSGBOX, "Информация о счете", query, "Закрыть", "");
return 1;
}
Последний раз редактировалось Niko_Grey; 29.05.2015 в 07:09.
Повторюсь, что нельзя однозначно найти нужный счёт вашим способом поиска по паролю, поскольку может оказаться сразу несколько счетов с одинаковым паролем. Поиск нужно проводить по полю, значение которого уникально для каждого счёта. Если вы не способны понять основ построения баз данных, то тут я ничем не могу вам помочь.
Как я уже говорил, вашим способом проблему решить невозможно, в любом случае нужно изменять структуру таблицы банковских счетов или игроков (один из таких способов я описал выше).
Если не знаете, как это реализовать - учите основы построения БД, чтобы потом не пытаться орудовать вслепую.
Либо можете заказать работу в разделе Стол заказов.
Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).
Стол заказов:
Мои работы:
Эту тему просматривают: 2 (пользователей: 0 , гостей: 2)