[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: добавить пользователя в таблицу
vagif
я хочу добавить пользователя и перед добавлением проверить,есть ли пользователь с таким именем.вот у меня такой код:
<?PHP
mysql_connect("localhost", "root", "");
mysql_select_db ("vagif");
$a=$_GET['name'];
$b=$_GET['surname'];

if(isset($a)){ //начало работы с таблицей
$sql="SELECT * FROM `users` WHERE `Name` = '$a'";
$result=mysql_query($sql);
while($row = mysql_fetch_array($result))
{
$names[]=$row[Name];
$num=count($names);
}

}
//конец работы с таблицей

if($num=0){
if((isset($a))&&isset($b)){ //начало добавления пользователя
$sql="INSERT INTO users VALUES ('$a','$b',NULL)";
$result=mysql_query($sql);
} //конец добавления пользователя
}
else{
echo "Пользователь с таким именем уже существует,выберите другое имя!!!";
}

?>
<html>
<
head>
<
title>Hello!!!</title>
</
head>
<
body>
<
form action="" method="get">
<
table border=0><tr>
<
td>Name:</td><td><input type="text" name="name"/></td></tr>
<
tr><td>Surname:</td><td><input type="text" name="surname"/></td></tr> </table><br />
<
input type="submit" value="Go!!!">
</
form>
<
a href="http:\\localhost\testa.ru\admin.php">Admin</a>
</
body>
</
html>



у меня в этом скрипте пользователь добавляется,несмотря уже есть такой.ошибок не выдает.прошу помочь)))спс!!!



Спустя 10 минут, 27 секунд (6.09.2010 - 15:53) ApuktaChehov написал(а):
Объясните зачем вы результат запроса на проверку юзера в цикл загнали,
если у вас не может возвращаться больше одной строки при проверке юзера, т.к. в базе не может быть 2 и более юзеров с одним именем.


Этого достаточно:
count( mysql_fetch_array($result) );


А вообще, это делается так:
mysql_result($result, 0)

Проверяем есть ли в результате запроса первая строка. Если есть. Все. Отбой.

И вот тут надо так:
if($num == 0){

Спустя 4 часа, 21 минута, 28 секунд (6.09.2010 - 20:14) vagif написал(а):
а ,да,цикл не нужен.просто до этого было много одинаковых пользователей.там сделаю ==,вместо =.и вообще если там нет такого пользователя там должно писать 0.это не пишет.а если есть пользователь,то правильно пишет,пишет 1.

Спустя 4 минуты, 8 секунд (6.09.2010 - 20:18) vagif написал(а):
все,получилось.дело было всего лишь в ==.спасибо ApuktaChehov))

Спустя 8 минут, 30 секунд (6.09.2010 - 20:27) ApuktaChehov написал(а):
Всегда пожалуйста wink.gif

Я на этом (==) частенько парюсь. Но сразу замечаю. Дам Вам совет. Юзайте трассировку. Если что то не так, наблюдайте за переменными на каждом этапе их обработки. Таким образом можно увидеть, что пошло не так.

Спустя 18 минут, 23 секунды (6.09.2010 - 20:45) vagif написал(а):
становится все легче и легче решать проблемы на форуме)))

Спустя 15 часов, 33 минуты, 3 секунды (7.09.2010 - 12:18) SlavaFr написал(а):
1)нельзя делать fetch_array до тех пор пока не убедился что есть результат, в противном случае пхп ругается( если ему рот не затыкать).
2) зачем при помощи "*" все столбцы вызывать?
3)это ты гениально написал:
<a href="http:\\localhost\testa.ru\admin.php">Admin</a>

это Windows http-protocol ?
smile.gif

Спустя 35 минут, 46 секунд (7.09.2010 - 12:54) Nord написал(а):
Цитата
1)нельзя делать fetch_array до тех пор пока не убедился что есть результат, в противном случае пхп ругается( если ему рот не затыкать).

Эм, что вы имеете в виду?

Спустя 1 час, 32 минуты, 30 секунд (7.09.2010 - 14:26) SlavaFr написал(а):
Цитата (Nord @ 7.09.2010 - 09:54)
Цитата
1)нельзя делать fetch_array до тех пор пока не убедился что есть результат, в противном случае пхп ругается( если ему рот не затыкать).

Эм, что вы имеете в виду?

именно то, что я сказал.
другими словами в начале делай mysql_mum_rows, а только если он не равен нулю, то тогда можно fetch_array делать.

Тест:
попровуй включить error_reporting(E_ALL), потом зделать запрос который не пренисет не одного результата, и зделай на него fetch_array();


Спустя 5 минут, 48 секунд (7.09.2010 - 14:32) inpost написал(а):
mysql_mum_rows - делает проверку, сколько пользователей с данным именем в таблице. Просто считает количество полученной информации. Тебе надо, чтоб было 0, если 1 - то выводить сообщение, что такой пользователь уже существует.

Спустя 7 часов, 24 минуты, 17 секунд (7.09.2010 - 21:56) Nord написал(а):
Цитата
именно то, что я сказал.
другими словами в начале делай mysql_mum_rows, а только если он не равен нулю, то тогда можно fetch_array делать.

По правде говоря: mysql_fetch_array()

Цитата
Returns an array of strings that corresponds to the fetched row, or FALSE if there are no more rows.

Если нет результата, функция без какой-либо ошибки вернет false

Спустя 12 часов, 51 минута, 27 секунд (8.09.2010 - 10:48) vagif написал(а):
там я тренируюсь на локальном сервере,denwer

Спустя 36 минут, 14 секунд (8.09.2010 - 11:24) SlavaFr написал(а):
Цитата (Nord @ 7.09.2010 - 18:56)
Если нет результата, функция без какой-либо ошибки вернет false

Да ...
Спасибо, что поправил.
С пхп 3.0 начал, но вижу, что пора мне основы повторять smile.gif

Спустя 2 часа, 28 минут, 56 секунд (8.09.2010 - 13:53) inpost написал(а):
SlavaFr
Хм... да не только тебе =)


_____________
хороший программист должен знать-он тоже когда-то ничего не знал.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.