PDA

Просмотр полной версии : [Вопрос] MySql R8



[ForD]
03.06.2014, 23:50
В принципе в некоторых функциях разобрался
но..
что главное то, что так и не могу разобраться до конца в том,как узнать находится ли аккаунт в базе данных или нет или верен ли введенный пароль игрока в диалог или нет :pardon:

Nazarik
04.06.2014, 00:32
;40618']как узнать находится ли аккаунт в базе данных

вот пример моей функции

stock bool:IsAFexistAccount(name[])
{
new query[70];
format(query, sizeof query, "select id from table where name = '%s'", name); // запрос надо переделать под себя
new Cache:result = mysql_query(_, query);
new rows = cache_num_rows();
cache_delete(result);
return rows ? (true) : (false);
}

рекомендую посмотреть :smile:
http://wiki.sa-mp.com/wiki/MySQL/R33

DeimoS
04.06.2014, 07:39
Ну в OnPlayerConnect что-то типа

new string[50+MAX_PLAYER_NAME];
format(string, sizeof(string),"SELECT * FROM `Account` WHERE `NickName` = '%s' LIMIT 0,1", pNick(playerid));
mysql_function_query(iMySQL, string, true, "FindPlayerInTable", "i", playerid);//true - включаем кэширование запроса и тем самым мы сможем работать с данными, которые вернёт таблица

И в колбэке

forward FindPlayerInTable(playerid);
public FindPlayerInTable(playerid)
{
new rows, fields;
cache_get_data(rows, fields);// Проверяем сколько столбцов и строк "откликнулось" на запрос и можно регистрировать игрока
if(!rows)//Если нуль - значит аккаунт не найден
{
print("Аккаунт не найден");
}
else//Иначе хоть 1 столбец подходит под условие запроса и игрок зарегистрирован уже
{
}
return 1;
}

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

[ForD]
04.06.2014, 12:57
С паролем нормально или что-то не так?


case 2:
{
if(!response) return SendClientMessage(playerid,COLOR_GREEN,"Вы вышли");
if(!strlen(inputtext))
{
format(Dialog_Enter,sizeof(Dialog_Enter),"\t%s добро пожаловать на сервер!\n\n\nВведите пароль:",PlayerInfo[playerid][pName]);
ShowPlayerDialog(playerid,2, DIALOG_STYLE_PASSWORD,"\tАвторизация",Dialog_Enter,"Ок","Отмена");
}
else
{
mysql_format(MySQL_ID,MySQL_Data,78+MAX_PLAYER_NAME,"SELECT * FROM "Base" WHERE `Name` = '%e' AND `password` = '%e'", PlayerInfo[playerid][pName], pPassword);
mysql_function_query(MySQL_ID,MySQL_Data, true, "OnPlayerLogin","s", playerid);
}
}
}
return 1;
}

void OnPlayerLogin(playerid)
{
new rows,fields;
cache_get_data(rows, fields);
if(!rows)
{
format(Dialog_Enter,sizeof(Dialog_Enter),"Ваш ник зарегистрирован\n\nЛогин: %s\nВы ввели неверный пароль!\nПопробуйте еще раз:",PlayerInfo[playerid][pName]);
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_PASSWORD,"Авторизация",Dialog_Enter,"Вход","Отмена");
return 1;
}
PlayerLogged{playerid} = true;
SpawnPlayer(playerid);
return 1;
}
:pardon:

DmX
05.06.2014, 02:02
а
WHERE BINARY?

[ForD]
05.06.2014, 10:27
а
WHERE BINARY?

Ну ладно,хорошо,а теперь просто скажи мне все по Русски что бы я скорее всего исправил что-то а не продолжал кочевать свою долбаную жизнь в долбаных раздумьях над твоим постом! Ага?

DeimoS
05.06.2014, 10:40
Ну так а что говорит проверка кода в боевых условиях?

[ForD]
05.06.2014, 13:13
Ну так а что говорит проверка кода в боевых условиях?

Слушайте,на вас разом болезнь нести бред нашла?
У меня было 2 бессонные ночи,я так думаю по этому несколько постов выше я напрочь не могу понять,будьте добры выражайтесь человеческими словами,пожалуйста!

DeimoS
05.06.2014, 13:55
Ну запусти сервер и проверь, работает код или нет

[ForD]
05.06.2014, 18:24
Ну запусти сервер и проверь, работает код или нет

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

underwoker
05.06.2014, 20:32
;40838']я не дома,негде сейчас проверить,увы,вот по этому и хочу узнать будет-ли работоспособность данного кода или нет,и где мои ошибки
К сожалению, тут еще не все обрели дар Ванги. Но мы стараемся, так что простите нас за некомпетентность, господин.
Мы правда уже почти обрели этот дар, и как только обретем, сразу же вам скажем - будет работать или нет.
Спасибо за внимание.

[ForD]
05.06.2014, 22:27
К сожалению, тут еще не все обрели дар Ванги. Но мы стараемся, так что простите нас за некомпетентность, господин.
Мы правда уже почти обрели этот дар, и как только обретем, сразу же вам скажем - будет работать или нет.
Спасибо за внимание.

Очень смешно,ну прям описаться..
не думаю что нужен полный колбэк диалогов и различные переменные что бы посмотреть функцию обработки запроса,а точнее отправятся или примуться данные,тут вроде не хватает переменной которую не трудно нарисовать в своей затейлевой голове,опять же у меня в данный момент есть только этот кусок кода,а дома я скорее всего появлюсь только завтра,увы вангованый ты наш тебя наверное кормят и поят родители и так-же обеспечивают тебя и дают жилье,мне же надо для этого всего работать.

underwoker
06.06.2014, 01:54
;40899']Очень смешно,ну прям описаться..
не думаю что нужен полный колбэк диалогов и различные переменные что бы посмотреть функцию обработки запроса,а точнее отправятся или примуться данные,тут вроде не хватает переменной которую не трудно нарисовать в своей затейлевой голове,опять же у меня в данный момент есть только этот кусок кода,а дома я скорее всего появлюсь только завтра,увы вангованый ты наш тебя наверное кормят и поят родители и так-же обеспечивают тебя и дают жилье,мне же надо для этого всего работать.
У меня нету родителей. :punish:

DeimoS
06.06.2014, 06:17
;40899']Очень смешно,ну прям описаться..
не думаю что нужен полный колбэк диалогов и различные переменные что бы посмотреть функцию обработки запроса,а точнее отправятся или примуться данные,тут вроде не хватает переменной которую не трудно нарисовать в своей затейлевой голове,опять же у меня в данный момент есть только этот кусок кода,а дома я скорее всего появлюсь только завтра,увы вангованый ты наш тебя наверное кормят и поят родители и так-же обеспечивают тебя и дают жилье,мне же надо для этого всего работать.

Тогда два вопроса:
1) Раз вы не дома, какой вам толк от того, что мы оценим работоспособность кода? Запрос мешает вам продолжать разработку?
2) Что вам мешает проверить код по приезду домой?

На первый взгляд код верен. Возвратов не хватает и с заполнителем "%e" у многих часто бывают проблемы (строку вставляет не всю. Если будет так - поменяйте на обычный %s), но это не критично. Более подробно скажет только проверка кода в боевых условиях

[ForD]
06.06.2014, 11:18
У меня нету родителей. :punish:

Бывает

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


Тогда два вопроса:
1) Раз вы не дома, какой вам толк от того, что мы оценим работоспособность кода? Запрос мешает вам продолжать разработку?
2) Что вам мешает проверить код по приезду домой?

На первый взгляд код верен. Возвратов не хватает и с заполнителем "%e" у многих часто бывают проблемы (строку вставляет не всю. Если будет так - поменяйте на обычный %s), но это не критично. Более подробно скажет только проверка кода в боевых условиях

Просто мне хотелось знать с чего мне продолжать работу по приезду домой,код счас проверю.
Но вот почему "%е" вставляет не всю строку?С чем если что это может быть связанно?

DeimoS
07.06.2014, 07:04
;40935']
Просто мне хотелось знать с чего мне продолжать работу по приезду домой,код счас проверю.
Но вот почему "%е" вставляет не всю строку?С чем если что это может быть связанно?

Это уже к разработчикам Pawn/MySQL вопросы