00:40
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
          





Рекомендуем:





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: AXE, Weddew  
SQL
elkaДата: Вторник, 08.09.2009, 17:11 | Сообщение # 1
Уверенный в себе
Группа: Продвинутые
Сообщений: 155
Награды: 1
Репутация: 12
Замечания: 0%
Статус:
Как сделать, что бы проверялось есть в бд строка с ником или нет?

[pwn]format(DBQuery, sizeof(DBQuery), "SELECT PName FROM Players WHERE lower(PName)='%s'", PName[playerid]);
Result = db_query(DataBase, DBQuery);
if(db_num_rows(Result) != 0) SendClientMessage(playerid, COLOR_YELLOW, ">Аккаунт с таким ником есть");
else
{....[/pwn]

DarkByteДата: Вторник, 08.09.2009, 17:38 | Сообщение # 2
Долгожитель
Группа: Продвинутые
Сообщений: 1577
Награды: 7
Город: Челябинск
Репутация: 182
Замечания: 0%
Статус:
Вопрос и ответ в первом посте? Тогда в чём смысл темы?


MusicSig vkontakte - расширение функционала ВКонтакте для Google Chrome
elkaДата: Вторник, 08.09.2009, 19:08 | Сообщение # 3
Уверенный в себе
Группа: Продвинутые
Сообщений: 155
Награды: 1
Репутация: 12
Замечания: 0%
Статус:
Все работает нормально. Кроме ситуации когда регестрируешь первый аккаунт. Сервер его не видит и можно нарегать 10 одинаковых.
InfernoДата: Вторник, 08.09.2009, 19:31 | Сообщение # 4
Хостинг-провайдер
Группа: I'm V.I.P.
Сообщений: 1320
Награды: 26
Город: /root
Репутация: 320
Замечания: 0%
Статус:
elka, делай запрос в бд для обновления данных, т.е UPDATE


Сообщение отредактировал Inferno - Вторник, 08.09.2009, 19:32
DarkByteДата: Вторник, 08.09.2009, 21:14 | Сообщение # 5
Долгожитель
Группа: Продвинутые
Сообщений: 1577
Награды: 7
Город: Челябинск
Репутация: 182
Замечания: 0%
Статус:
Quote (Inferno)
elka, делай запрос в бд для обновления данных, т.е UPDATE

А причём тут это? Если нужно проверить, зареган ли уже аккаунт (SELECT) или добавить новый (INSERT), но никак ничего не обновляться.

Вообще видится мне проблема в lower, а точнее месте его размещения. Либо оба параметра в lower,
либо только %s, если перед тем как новый акк добавляется в базу, ник переводится в нижний регистр.


MusicSig vkontakte - расширение функционала ВКонтакте для Google Chrome
stepmexДата: Среда, 09.09.2009, 09:27 | Сообщение # 6
Мастер джэдай
Группа: Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус:
Quote
format(DBQuery, sizeof(DBQuery), "SELECT * FROM Players WHERE lower(PName)='%s' LIMIT 1", PName[playerid]);
Result = db_query(DataBase, DBQuery);
if(db_num_rows(Result) == 1) SendClientMessage(playerid, COLOR_YELLOW, ">Аккаунт с таким ником есть");
else
{
...
}



И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
elkaДата: Среда, 09.09.2009, 14:59 | Сообщение # 7
Уверенный в себе
Группа: Продвинутые
Сообщений: 155
Награды: 1
Репутация: 12
Замечания: 0%
Статус:
Когда использовал код stepmex-a первый акаунт регестрировался нормально, повторно тот же акаунт было нельзя. Но с другим никами проверка не работала.

Изменил на
[pwn]format(DBQuery, sizeof(DBQuery), "SELECT * FROM Players WHERE lower(PName)='%s' LIMIT 1", PName[playerid]);
Result = db_query(DataBase, DBQuery);
if(db_num_rows(Result) != 0) SendClientMessage(playerid, COLOR_YELLOW, ">Аккаунт с таким ником есть");
else[/pwn]
Работает вроде без сбоев.

На сколько я знаю Db num rows - показывает номер строки. Если не равняеться нулю, то строка уже есть.


Сообщение отредактировал elka - Среда, 09.09.2009, 15:01
stepmexДата: Среда, 09.09.2009, 15:16 | Сообщение # 8
Мастер джэдай
Группа: Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус:
db_num_rows() показывает количество строк в извлеченном массиве.
"LIMIT 1" говорит о том сколько строк соответствующих критерям запроса извлекать.



И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
DarkByteДата: Среда, 09.09.2009, 17:10 | Сообщение # 9
Долгожитель
Группа: Продвинутые
Сообщений: 1577
Награды: 7
Город: Челябинск
Репутация: 182
Замечания: 0%
Статус:
Quote (elka)
На сколько я знаю Db num rows - показывает номер строки. Если не равняеться нулю, то строка уже есть.

Quote (stepmex)
db_num_rows() показывает количество строк в извлеченном массиве.
"LIMIT 1" говорит о том сколько строк соответствующих критерям запроса извлекать.

Соотвественно результат работы данной функции для этого запроса будет либо 0 (если акка с таким ником нет), либо 1 (если есть).
"==1" и "!=0" это одно и тоже для данного кода, и равносильно тому же, если вообще ничего не указывать :)
Ибо if(var) проверяет: если var==0, значит false, иначе true. т.е. false может быть только если переменная равна 0, во всех остальных случаях она true.



MusicSig vkontakte - расширение функционала ВКонтакте для Google Chrome
elkaДата: Среда, 09.09.2009, 18:06 | Сообщение # 10
Уверенный в себе
Группа: Продвинутые
Сообщений: 155
Награды: 1
Репутация: 12
Замечания: 0%
Статус:
Не сразу заметил, что значит?
Quote
SELECT * FROM...

И вторая проблема теперь с логином.
То как сделал я не правильно, как исправить.
[pwn]format(DBQuery, sizeof(DBQuery), "SELECT PPas FROM Players1 WHERE LOWER(PName) = LOWER('%s') LIMIT 1;",PName[playerid]);
Result = db_query(DataBase, DBQuery);
db_get_field(Result, 1, tmppas2, 256);
db_free_result(Result);
if(PPas[playerid] != DBQuery) SendClientMessage(playerid, COLOR_RED, " Пароль не подходит к аккаунту!");
else
{...[/pwn]


Сообщение отредактировал elka - Среда, 09.09.2009, 18:12
Dima-kunДата: Среда, 09.09.2009, 18:11 | Сообщение # 11
Группа: Разработчики
Сообщений: 6269
Награды: 72
Репутация: 3512
Замечания: 0%
Статус:
это означает SELECT (что) FROM(откуда)

по крайней мере так в php а в павно подобные структуры схожи


Мои работы:
[INC] Сборник d_includes [LAST],[FS] New Demage Effect,[FS]Авто-Поворотники,
[FS]mp3player,[FS] Fun Chat Game,[FS] Car Buy Syst,[FS] Anti-AirBrk,[INC] d_setpos,
[GM] Game Move v0.1,[FS+include]Super-Armour [0.3z],[FS + Include] Multi Checkpoints
elkaДата: Среда, 09.09.2009, 18:14 | Сообщение # 12
Уверенный в себе
Группа: Продвинутые
Сообщений: 155
Награды: 1
Репутация: 12
Замечания: 0%
Статус:
Что значит select я знаю. Просто stepmex поставил значек *. Что он дает?
InfernoДата: Среда, 09.09.2009, 18:29 | Сообщение # 13
Хостинг-провайдер
Группа: I'm V.I.P.
Сообщений: 1320
Награды: 26
Город: /root
Репутация: 320
Замечания: 0%
Статус:
Quote (stepmex)
SELECT * FROM

Выбрать все поля из таблицы...

DarkByteДата: Четверг, 10.09.2009, 05:37 | Сообщение # 14
Долгожитель
Группа: Продвинутые
Сообщений: 1577
Награды: 7
Город: Челябинск
Репутация: 182
Замечания: 0%
Статус:
Quote (elka)
Что значит select я знаю. Просто stepmex поставил значек *. Что он дает?

Он делает код не оптимизированным, т.к. выбираются лишние поля, которые всё равно не будут использоваться. Если ты не используешь все поля из таблицы, то явно перечисляй нужные тебе.
Quote (elka)
if(PPas[playerid] != DBQuery)

Для сравнения строк используй strcmp, а лучше сразу передавай ник и пароль в mysql, а он пусть уже сравнивает. И проверь код без lower, ибо например mysql при сравнении игнорирует регистр символов.



MusicSig vkontakte - расширение функционала ВКонтакте для Google Chrome
stepmexДата: Четверг, 10.09.2009, 09:11 | Сообщение # 15
Мастер джэдай
Группа: Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус:
Quote (DarkByte)
не оптимизированным
афигительная оптимизация, выбрать все поля или определенные. Всю строку скопировать в массив проще чем заставлять ещё и искать в ней столбцы по ключам cool
Quote (DarkByte)
сравнении игнорирует регистр символов
а это смотря как сделать blum



И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:





 


 


 
Хостинг от uCoz samp.at.ua