|
|
|
| Господа есть простая регистрационная форма, там ник емайл и пароль. Так вот проблема не пойму какими средствами ее можно решить. Я хочу чтобы ник бил индивидуален на сайте.
Привожу пример регистрации 2-ух пользователей где возникнет ошибка:
1- ый пишет ник: Vasek.
2- Ой пишет ник: vasek
И обоих зарегистрирует мой сайт и запишет в базу данный mysql.
Вопрос: Как избежать этой ошибки, средствами php или есть встроенные функции mysql? Было бы здорого если бы привели пример. | |
|
|
|
|
|
|
|
для: Mikael
(10.06.2006 в 18:46)
| | Для MySQL регистр не важен, поэтому:
<?php
//Соединение с базой данных
include "config.php";
//Пытаемся извлечь из БД ник, который передан методом POST
$query = mysql_query("SELECT * FROM users WHERE nick='".$_POST['nick']."' LIMIT 1;");
//Если такой в БД имеется выдать ошибку и остановить скрипт
if(mysql_affected_rows != 0)
{
echo "Ошибка, такой ник уже существует.";
exit();
}
?>
|
| |
|
|
|
|
|
|
|
для: Unkind™
(10.06.2006 в 18:52)
| |
<?php
include "config.php";
$query="select login from polzovateli where login = '$login'";
$result=mysql_query($query);
$kol=mysql_num_rows($result);
if($kol!= 0)
{
echo "Ошибка, такой ник уже существует.";
exit();
}
?>
|
Но это не проходит все равно записывается второй ник с другим ренистром... обьясните в чем ошибка? | |
|
|
|
|
|
|
|
для: Mikael
(10.06.2006 в 19:01)
| | - | |
|
|
|
|
|
|
|
для: Mikael
(10.06.2006 в 19:01)
| | $query="select login from polzovateli where login = '$login'";
ти взял переменную в одинарние скобки ' ' а ето означет што виден чисто текст и что с ним не надо ничего делать!!!! он просто передает $login а не то что ему присвоено! | |
|
|
|
|
|
|
|
для: Mikael
(10.06.2006 в 19:01)
| | Так попробуй
Все как у Unkind'a, только одну строку измени
$query = mysql_query("SELECT lower(nick) as lo_nick FROM users HAVING lo_nick='".strtolower($_POST['nick'])."' LIMIT 1;");
|
значения будут сравниваться в одном регистре и со стороны БД и со стороны скрипта. Поэтому vasek и Vasek будут считаться одинаковым значением.
При этом в никах можно будет использовать разный регистр
Ты это хотел? | |
|
|
|
|
|
|
|
для: WebTech
(10.06.2006 в 21:08)
| | только не HAVING а WHERE. | |
|
|
|
|
|
|
|
для: Trianon
(10.06.2006 в 21:29)
| | Насколько я знаю WHERE не может ссылаться на результаты функций... | |
|
|
|
|
|
|
|
для: WebTech
(10.06.2006 в 21:36)
| | Может.
Никакой взаимосвязи между этими вещами нет.
Разве что HAVING увязано на агрегатные функции, да и то, не само по себе, а через GROUP BY. | |
|
|
|
|
|
|
|
для: Trianon
(11.06.2006 в 00:31)
| | Ваша правда оказалась :-)
Можно так
$query = mysql_query("SELECT lower(nick) as lo_nick FROM users WHERE nick='".strtolower($_POST['nick'])."' LIMIT 1;");
|
Но вариант с HAVING тоже рабочий :-) | |
|
|
|