Всем привет! Очень не хотелось позориться и вставлять код, но думаю что нужно.... PHP: <?php error_reporting($level = 2); if($_POST[login] and $_POST[name] and $_POST[sourname] and $_POST[email]) { $link = mysql_connect($server = localhost, $username = root, $password = 260885) or die("Could not connect: " . mysql_error()); mysql_select_db("mailchat", $link) or die("NO"); mysql_set_charset('utf8', $link); $login = $_POST[login]; $name = $_POST[name]; $sourname = $_POST[sourname]; $email = $_POST[email]; $readsql = "SELECT * FROM users"; $resultsql = mysql_query($readsql, $link); while ($r = mysql_fetch_array($resultsql,0)) { echo $r[login].$r[email] ."<br>"; } //А КАК ДАЛЕЕ???=( $querty = "INSERT INTO users SET login = '$login', name = '$name', sourname = '$sourname', email = '$email'"; $result = mysql_query($querty) or die (mysql_error()); echo "Спасибо за регистрацию, БоБро пожаловать!!!"; } else { echo "Регистрация не удалась, база не обновлена." ; } ?> Затея тут в том что бы записать данные в МУСКУЛ, а затем перед вводом новых даннных проверить есть ли эти данные уже ... если есть, выдать ошибку. С грехом пополам, наверное кривовато накидал часть из головы, часть из мануала и вот что получилось... PHP: $readsql = "SELECT * FROM users"; $resultsql = mysql_query($readsql, $link); while ($r = mysql_fetch_array($resultsql,0)) { echo $r[login].$r[email] ."<br>"; } Тут я сел и задумался на тему того куда плыть дальше? Тоесть я выбрал масив из MYSQL , но ума не приложу как массив раазбить на значения из базы, что бы сравнить с переменной. Или нужно как то иначе читать данные из mysql? Нужно сравнить $email и $r на одинаковость. Гуглить не ленюсь и мануал читать тоже, буду рад намекам.
PHP: <? $query = 'SELECT COUNT(*) FROM `users` WHERE `nick`=\''.$nick.'\' or `email`=\''.$email.'\''; $count = mysql_fetch_row(mysql_query($query)); if ($count[0] > 0) { // такой ник или мыло уже есть
siiXth Спасибо, но немного не то... [vs] Зарааботало, спасибо. Есть пару вопросов по ккоду... Пытаюсь понять свим неразвиты умом как это получилось? Код (Text): COUNT(*) - сравнивает в базе? Код (Text): `nick`=\''.$nick.'\' or `email`=\''.$email.'\' - вообще не могу найти логику, переведите пожалуйста на русско-нубский.=) Код (Text): if ($count[0] > 0) { - количество совпадений?
Подсчет. По этому запросу MySQL подсчитает, сколько походящих записей в таблице users. а ты сделай echo $query, посмотри, что получается =) Можно еще написать PHP: $query = "SELECT COUNT(*) FROM `users` WHERE `nick`='$nick' or `email`='$email'"; просто мы двойные кавычки не любим-с upd. еще http://phpfaq.ru/slashes
хммм.... вывод SELECT COUNT(*) FROM `users` WHERE `login`='sadasd' or `email`='asfsafafasf' Тоесть для users подсчитывает сколько совпадений с login или email... Млин, а я наоборот путаюсь если их заменять на Код (Text): ' \ код становится таким страшным =) Более понятно. Код (Text): $count = mysql_fetch_row(mysql_query($readsql)); Это значит что $count присваевается количество совпадений из базы?=) И дальше просто выбирается первая ячейка массива и условие не больше нуля... Я бы до такого не додумался бы...=( Спасибо!
а я бы написал Код (Text): $query = "SELECT COUNT(*) FROM `users` WHERE `nick`='".$nick."' or `email`='".$email."'"; =)
=) Неее... уже не получится такого эффекта ... уже знаю =) А я вот думаю что буду наверное писать с двойными кавычками, а перед выпуском автозаменой исправлю на такой вариант двойных кавычек =) Пока не освоюсь=)
Я буду долго и упорно учиться ездить на праворульной машине, а на экзамене спокойно проеду на леворульке. Вариант, конечно, может и прокатить....возможно... ) $query = 'SELECT COUNT(*) FROM `users` WHERE `nick`="'.$nick.'" or `email`="'.$email.'"'; вроде как "правильнее", не? )))
тоже правильно, но если запрос длинный, без слешей можно запутаться в трех-четырех идущих подряд кавычках (двойная выглядит почти как две одинарных)
А я бы написал: [sql] $query = " SELECT count(*) FROM `users` WHERE `nick` = '{$nick}' OR `email` = '{$email}' "; [/sql]
А я бы на дату сперва посмотрел... А потом не городил огород в виде выборки SELECT и проверки существования данных, а сразу делал бы запрос INSERT. Если данные существуют, то вернется FALSE, если нет, произойдет вставка.