За последние 24 часа нас посетили 21034 программиста и 1621 робот. Сейчас ищут 933 программиста ...

Проверка на уникальность регистрируемого пользователя.

Тема в разделе "PHP и базы данных", создана пользователем ruletka131, 5 дек 2007.

  1. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Посчета чего???
     
  2. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    существующих строк по этому условию. Ты вообще описание функции mysql COUNT читал?
    Прочти тут.
    http://ict.edu.ru/ft/001779/index.shtml
     
  3. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    количества строк удовлетворяющих условию
    никогда ТАК не делай
    есть COUNT его и юзай
    вот будет у тебя 1000000000000 записей в сетевой базе и 75% из этого удовлетворит запросу
    ты будешь ждать когда ЭТО ВОЙДЕТ из базы в пых чтобы почитать их в mysql_num_rows
    а я возму COUNT() на стороне БД, получу одну строку и пока ты будешь ждать данных я пойду за пивом
     
  4. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Ganzal не будет столько запией, не переживай ;)
     
  5. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    это не аргумент. Ты не справился - пока что.
     
  6. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    armadillo согласен... но не справился с ДАННОЙ формулировкой задания... Однако само заае сделал и сделал верно ;) Согласитесь - это тоже вариант :)
     
  7. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    неверно. Об чем и талдычим. И о чем плачем - что ты этим гордишься.
     
  8. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    armadillo, ну почему нет, если по линкам которые Вы дали именно так и сделано???? и оно работает...
     
  9. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    снова неверно. Там сделано совсем не так.
    Сделай с Count, тогда перестанешь упираться и распишем что и почему. Ни у кого нет желания тянуть с тобой резину на много страниц "да-нет-да". Довольно.
     
  10. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
  11. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
     
  12. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Ни по одной, ни по второй ссылке такого не нашел! :(((
    Ладно, до завтра
     
  13. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    (шепотом) а мануал и сам работает! Без меня! http://php.net/ введи название функции.
     
  14. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    а гугл уже сожгли?
    кто хочет понять тот найдет все что нужно, имхо
     
  15. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Согласен!
     
  16. ruletka131

    ruletka131 Активный пользователь

    С нами с:
    5 дек 2007
    Сообщения:
    31
    Симпатии:
    0
    Адрес:
    Ростов-на-Дону
    2 armadillo
    Сделал так. вроде все работает:
    PHP:
    1.  
    2.             $link = mysql_connect("localhost", "root", "");
    3.             mysql_select_db ("goldDB", $link);
    4.             $table_name = "logged_clients";
    5.             $query = "SELECT count(*) FROM $table_name WHERE user_login = \"$logged_login\"";  
    6.             $query_done = mysql_query($query, $link);
    7.             $result = mysql_fetch_row($query_done);
    8.             if ($result[0] == 1)
    9.             {
    10.                 print ("Пользователь с таким именем существует. Пожалуйста вернитесь назад и измените login");
    11.             }
    12.             else
    13.             {
    14.                 $query = "INSERT INTO $table_name
    15.                 VALUES (\"0\", \"$date_register\", \"$logged_login\", \"$logged_pass\",
    16.                 \"$logged_email\", \"$logged_name\")";
    17.                 $result = mysql_db_query("goldDB", $query, $link);
    18.                 $link_close = mysql_close ($link);
    19.                 if ($result)
    20.                 {
    21.                     print ("Данные  записаны");
    22.                 }
    23.                 else
    24.                 {
    25.                     print ("Данные не записаны");
    26.                 }
    27.             }
    28.           ?>
    29.  
    30.  
     
  17. RomanBush

    RomanBush Активный пользователь

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    хм. Я, наверное, немного поздно. Но лучше поздно, чем никогда...
    А кто помешал сделать поле user_login уникальным?
     
  18. Mavir

    Mavir Guest

    RomanBush, если не покажется никакой ошибки, то пользователь будет свято верить, что зарегистрировался.
     
  19. RomanBush

    RomanBush Активный пользователь

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    Mavir А при чём здесь выдача ошибки? Если поле будет уникальным - Вы гарантировано будете застрахованы от повторяющихся логинов юзеров (хотя я не очень понимаю, зачем это нужно). А ошибку пользователю конечно же нужно выдавать. Что мол "не получилось у Вас зарегистрироваться. Попробуйте ещё".

    Во избежание продолжения дисскусии хочу сказать, что тот вариант, который ruletka131 написал - тоже очень хорош. Просто я напомнил ещё про один вариант решения задачи.
     
  20. Ti

    Ti Активный пользователь

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    ruletka131

    а что если между select и insert будет insert другим юзером? "Данные не записаны"?
    имхо, лучше повесить уникальный индекс, сразу делать инсерт и парсить ошибку сервера на дубликацию
    как бонус - минус один запрос к базе (SELECT COUNT)