Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблемы с регистром.
 
 автор: Mikael   (10.06.2006 в 18:46)   письмо автору
 
 

Господа есть простая регистрационная форма, там ник емайл и пароль. Так вот проблема не пойму какими средствами ее можно решить. Я хочу чтобы ник бил индивидуален на сайте.
Привожу пример регистрации 2-ух пользователей где возникнет ошибка:

1- ый пишет ник: Vasek.
2- Ой пишет ник: vasek

И обоих зарегистрирует мой сайт и запишет в базу данный mysql.

Вопрос: Как избежать этой ошибки, средствами php или есть встроенные функции mysql? Было бы здорого если бы привели пример.

   
 
 автор: Unkind™   (10.06.2006 в 18:52)   письмо автору
 
   для: 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();
}
?>

   
 
 автор: Mikael   (10.06.2006 в 19:01)   письмо автору
 
   для: 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(); 

?> 

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

   
 
 автор: Unkind™   (10.06.2006 в 20:10)   письмо автору
 
   для: Mikael   (10.06.2006 в 19:01)
 

-

   
 
 автор: saint_cv   (10.06.2006 в 21:05)   письмо автору
 
   для: Mikael   (10.06.2006 в 19:01)
 

$query="select login from polzovateli where login = '$login'";

ти взял переменную в одинарние скобки ' ' а ето означет што виден чисто текст и что с ним не надо ничего делать!!!! он просто передает $login а не то что ему присвоено!

   
 
 автор: WebTech   (10.06.2006 в 21:08)   письмо автору
 
   для: 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 будут считаться одинаковым значением.
При этом в никах можно будет использовать разный регистр
Ты это хотел?

   
 
 автор: Trianon   (10.06.2006 в 21:29)   письмо автору
 
   для: WebTech   (10.06.2006 в 21:08)
 

только не HAVING а WHERE.

   
 
 автор: WebTech   (10.06.2006 в 21:36)   письмо автору
 
   для: Trianon   (10.06.2006 в 21:29)
 

Насколько я знаю WHERE не может ссылаться на результаты функций...

   
 
 автор: Trianon   (11.06.2006 в 00:31)   письмо автору
 
   для: WebTech   (10.06.2006 в 21:36)
 

Может.
Никакой взаимосвязи между этими вещами нет.
Разве что HAVING увязано на агрегатные функции, да и то, не само по себе, а через GROUP BY.

   
 
 автор: WebTech   (11.06.2006 в 09:19)   письмо автору
 
   для: 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 тоже рабочий :-)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования