За последние 24 часа нас посетили 23808 программистов и 1737 роботов. Сейчас ищут 1742 программиста ...

Обработка данных mysql -массив - сравнение

Тема в разделе "Вопросы от блондинок", создана пользователем VampiR_WAR, 9 ноя 2010.

  1. VampiR_WAR

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

    С нами с:
    19 авг 2009
    Сообщения:
    409
    Симпатии:
    1
    Адрес:
    Нижний Новгород
    Всем привет!
    Очень не хотелось позориться и вставлять код, но думаю что нужно....
    PHP:
    1. <?php
    2. error_reporting($level = 2);
    3. if($_POST[login] and $_POST[name] and $_POST[sourname] and $_POST[email]) {
    4. $link = mysql_connect($server = localhost, $username = root, $password = 260885) or die("Could not connect: " . mysql_error());
    5. mysql_select_db("mailchat", $link) or die("NO");
    6. mysql_set_charset('utf8', $link);
    7. $login = $_POST[login];
    8. $name = $_POST[name];
    9. $sourname = $_POST[sourname];
    10. $email = $_POST[email];
    11. $readsql = "SELECT * FROM users";
    12. $resultsql = mysql_query($readsql, $link);
    13. while ($r = mysql_fetch_array($resultsql,0)) {
    14.     echo $r[login].$r[email] ."<br>";
    15.     }
    16.     //А КАК ДАЛЕЕ???=(
    17.    
    18.  
    19. $querty = "INSERT INTO users SET login = '$login', name = '$name', sourname = '$sourname', email = '$email'";
    20. $result = mysql_query($querty) or die (mysql_error());
    21. echo "Спасибо за регистрацию, БоБро пожаловать!!!";
    22. }
    23. else
    24. {
    25. echo "Регистрация не удалась, база не обновлена."    ;
    26.     }
    27.                
    28. ?>
    29.  
    Затея тут в том что бы записать данные в МУСКУЛ, а затем перед вводом новых даннных проверить есть ли эти данные уже ... если есть, выдать ошибку.
    С грехом пополам, наверное кривовато накидал часть из головы, часть из мануала и вот что получилось...


    PHP:
    1. $readsql = "SELECT * FROM users";
    2. $resultsql = mysql_query($readsql, $link);
    3. while ($r = mysql_fetch_array($resultsql,0)) {
    4.     echo $r[login].$r[email] ."<br>";
    5.     }
    Тут я сел и задумался на тему того куда плыть дальше?
    Тоесть я выбрал масив из MYSQL , но ума не приложу как массив раазбить на значения из базы, что бы сравнить с переменной.
    Или нужно как то иначе читать данные из mysql?
    Нужно сравнить $email и $r на одинаковость.
    Гуглить не ленюсь и мануал читать тоже, буду рад намекам. :D :)
     
  2. siiXth

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

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
     
  3. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    PHP:
    1. <?
    2. $query = 'SELECT COUNT(*) FROM `users` WHERE `nick`=\''.$nick.'\' or `email`=\''.$email.'\'';
    3. $count = mysql_fetch_row(mysql_query($query));
    4. if ($count[0] > 0) {
    5.      // такой ник или мыло уже есть
     
  4. VampiR_WAR

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

    С нами с:
    19 авг 2009
    Сообщения:
    409
    Симпатии:
    1
    Адрес:
    Нижний Новгород
    siiXth
    Спасибо, но немного не то...
    [vs]
    Зарааботало, спасибо.
    Есть пару вопросов по ккоду...
    Пытаюсь понять свим неразвиты умом как это получилось?
    Код (Text):
    1. COUNT(*)
    - сравнивает в базе?
    Код (Text):
    1. `nick`=\''.$nick.'\' or `email`=\''.$email.'\'
    - вообще не могу найти логику, переведите пожалуйста на русско-нубский.=)
    Код (Text):
    1. if ($count[0] > 0) {
    - количество совпадений?
     
  5. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Подсчет.
    По этому запросу MySQL подсчитает, сколько походящих записей в таблице users.
    а ты сделай echo $query, посмотри, что получается =)
    Можно еще написать
    PHP:
    1. $query = "SELECT COUNT(*) FROM `users` WHERE `nick`='$nick' or `email`='$email'";
    просто мы двойные кавычки не любим-с

    upd. еще http://phpfaq.ru/slashes
     
  6. VampiR_WAR

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

    С нами с:
    19 авг 2009
    Сообщения:
    409
    Симпатии:
    1
    Адрес:
    Нижний Новгород
    хммм.... вывод
    SELECT COUNT(*) FROM `users` WHERE `login`='sadasd' or `email`='asfsafafasf'
    Тоесть для users подсчитывает сколько совпадений с login или email...
    Млин, а я наоборот путаюсь если их заменять на
    Код (Text):
    1. ' \
    код становится таким страшным =)
    Более понятно.
    Код (Text):
    1. $count = mysql_fetch_row(mysql_query($readsql));
    Это значит что $count присваевается количество совпадений из базы?=)
    И дальше просто выбирается первая ячейка массива и условие не больше нуля...
    Я бы до такого не додумался бы...=(
    Спасибо!
     
  7. VampiR_WAR

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

    С нами с:
    19 авг 2009
    Сообщения:
    409
    Симпатии:
    1
    Адрес:
    Нижний Новгород
    Куул... теперь начинаю понимать зачем именно так...
    В закладки кинул, потом почитаю.
     
  8. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    а я бы написал
    Код (Text):
    1. $query = "SELECT COUNT(*) FROM `users` WHERE `nick`='".$nick."' or `email`='".$email."'";
    =)
     
  9. VampiR_WAR

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

    С нами с:
    19 авг 2009
    Сообщения:
    409
    Симпатии:
    1
    Адрес:
    Нижний Новгород
    =) Неее... уже не получится такого эффекта ... уже знаю =)
    А я вот думаю что буду наверное писать с двойными кавычками, а перед выпуском автозаменой исправлю на такой вариант двойных кавычек =) Пока не освоюсь=)
     
  10. Johnatan

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

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    Я буду долго и упорно учиться ездить на праворульной машине, а на экзамене спокойно проеду на леворульке.
    Вариант, конечно, может и прокатить....возможно... )

    $query = 'SELECT COUNT(*) FROM `users` WHERE `nick`="'.$nick.'" or `email`="'.$email.'"';

    вроде как "правильнее", не? )))
     
  11. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    тоже правильно, но если запрос длинный, без слешей можно запутаться в трех-четырех идущих подряд кавычках (двойная выглядит почти как две одинарных)
     
  12. VampiR_WAR

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

    С нами с:
    19 авг 2009
    Сообщения:
    409
    Симпатии:
    1
    Адрес:
    Нижний Новгород
    А в документации вообще что нибудь есть про кавычуи? Искал... что то не увидел.=)
     
  13. Nextdrift

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

    С нами с:
    20 янв 2011
    Сообщения:
    1
    Симпатии:
    0
    А я бы написал:
    [sql]
    $query = "
    SELECT
    count(*)
    FROM
    `users`
    WHERE
    `nick` = '{$nick}'
    OR
    `email` = '{$email}'
    ";
    [/sql]
     
  14. Jampire

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

    С нами с:
    22 авг 2009
    Сообщения:
    181
    Симпатии:
    0
    Адрес:
    Гомель
    А я бы на дату сперва посмотрел...

    А потом не городил огород в виде выборки SELECT и проверки существования данных, а сразу делал бы запрос INSERT. Если данные существуют, то вернется FALSE, если нет, произойдет вставка.