Обработка формы

kex

Guest
Обработка формы

Подскажите плиз как в коде сделать проверку заполнения поля ip-adress, а точнее чтобы при вводе ip имеющегося уже в базе выдавало типа: Извини но такой ip занят!

Форма:
<form action="processorder.php" method=post>
<table border=0>
<tr bgcolor=#cccccc>
<td width=104>
<div align="center">Юзер</div></td>
<td width=182>
<div align="center">Данные</div></td>
</tr>
<tr>
<td><div align="center">Nickname</div></td>
<td align="left"><input type="text" name="nickname" size=30 maxlength=30></td>
</tr>
<tr>
<td><div align="center">Hostname </div><td><input type="text" name="hostname" size=30 maxlength=30>

</tr>
<tr>
<td><div align="center">Ip adress</div></td>
<td align=left><input type="text" name="ip_adr" size=13 maxlength=13></td>
</tr>
<tr>
<td colspan=2 align=center><input type=submit value="Добавить"></td>
</tr>
</table>
</form>
</body>

PHP-код:
<html>
<head>
<title>Добавление ip-адреса</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"></head>
<body>
<hl><strong>Результаты добавления ip:</strong></hl>
<script language="JavaScript"> <!--
setTimeout("top.location.href = 'http://localhost/ip/ip.php'",5000);
//--> </script>
<?
//$URL=localhost;
//Header("Location: $URL");
if (!$nickname || !$hostname || !$ip_adr)
{
echo "<br>Ты не ввел все данные.<br>"
."Пож-ста вернитесь назад и повторите снова.";
exit;
}
global $userip;
$nickname = addslashes($nickname);
$hostname = addslashes($hostname);
$ip_adr = addslashes($ip_adr) ;
@ $db = mysql_pconnect("localhost", "root", "");
if (!$db)
{
echo "Ошибка: Не могу соединится к базе.
Пож-ста попробуйте еще раз . " ;
exit;
}

mysql_select_db( "kex") ;
$query = "insert into users values
( '" .$nickname." ' , ' " .$hostname. " ', ' ".$ip_adr. " ') ";
$result = mysql_query ($query) ;



if ($result)
echo mysql_affected_rows ( ) . " ip-адрес добавлен в базу сети MATRIX.";


?>


</body>
</html>
 

Ge0SuB

Guest
select 1 from yourtable where ip_field = $ip
и если запрос вернет 1 то значит есть такой ип уже в базе.
 

neko

tеam neko
<br>Ты ввел слишком много данных.<br>
Пож-ста вернись назад и повтори снова
 

kex

Guest
Ge0SuB
а немного точнее нельзя пояснить в моем примере, а то я токо начинаю в этом деле... например я не понял что означает 1 если надо столбец ip_adr из базы ?
neko
это нав. была шутка...
 

Фанат

oncle terrible
Команда форума
kex, это не шутка, а выдержка из правил этого форума.

я не понял что означает 1 если надо столбец ip_adr из базы
Зачем тебе столбец ip_adr из базы ?
Ты писал, что тебе нужен не адрес, а факт того, что такой адрес есть.
чем тебя 1 в качестве такого факта не устраивает?
 

Ge0SuB

Guest
Перед инсертом (после mysql_select_db( "kex") ; )
добавь:

PHP:
$result = mysql_query ("select 1 from users where ip_adr = '$ip_adr' ");
if (mysql_num_rows($result) >0)
{
       Echo "Такой ИП уже есть в базе!!!";
       exit();
}
Вот так :)
 

kex

Guest
Ge0SuB

попробовал по варианту вашему и пишет:
Parse error: parse error, unexpected T_LNUMBER in ...\htdocs\ip\insert_ip.php on line 33

потом сделал так:
query1 = "select 1 from users where ip_adr = 'ip_adr' ";
$res = mysql_query($query1);
if (mysql_num_rows($res) >0)
{
echo "Такой ИП есть уже в базе!!!";
exit();
}

но все же добавлет ip к примеру 192.168.0.1 хотя в базе есть!

Фанат
извините конечно...
при вводе в форму адреса php должно , выбрав из таблицы ip_adr, где уже есть куча адресов, отличащихся у меня только посл. цифрой в ip, проверить ip вводимый в форме с имеющимися и если есть такой то прекратить дальнейшую проверку и не добавлять вводимый в данный момент, сказав Извините, но такой уже есть, вернитесь назад для ввода иного.
 

Фанат

oncle terrible
Команда форума
ну, а я что сказал?
я написал ровно то же самое, что ты сейчас.
за что тебе извиняться?

по поводу того, что добавляет.
в коде Ge0SuB ошибка. которую ты благополучно перенес в свой код
то, что у него ошибка - это не удивительно.человек писал от руки. мог ошибиться. он не запускал этот код - он его написал.
теперь ошибку надо найти самостоятельно.
сделать это несложно.
почитай вот этот текст.
PHP FAQ: Ничего не работает! Что делать?
Там дана конкретная рекомендация, по которой тв легко найдешь, почему у тебя не работает проверка.

Это будет хорошая практика на будущее.
 

kex

Guest
Фанат
да за то что нав. кода много закинул сразу :)
попробую сча разобратся, спасибо
 

Ge0SuB

Guest
Вот блин, а я ведь перед постом смотрел, вроде небыло ошибок ;))) А утром аж две нашел ;))) Так всегда, вообщем сейчас пофиксил. мой код должен работать :)
 

kex

Guest
Ge0SuB
да уже работает, но все равно будет добавлятся, кстати что такое Resource id #2 при echo ($result) ?
 

Фанат

oncle terrible
Команда форума
это то, что возвращает mysql_query
echo ($result) делать не стоит
 

kex

Guest
Ge0SuB
хотя простите, все правильно, у меня в коде нашел кавычки лишние, так спереди добавляло пробел при внесении в таблицу, поэтому и проверка не делалалсь...

-~{}~ 02.02.05 17:11:

продлжая свои труды, пытаюсь сделать поиск по базе...
создал форму, потом в скрипте написал:
...
$searchtype = addslashes($searchtype);
$searchterm = addslashes($searchterm);
...
//дошел до запросов
$query = "select * from users where ".$searchtype." like
'%".$searchterm."% ' ";
$result = mysql_query($query);
$num_results = mysql_num_rows($result);
echo "<p>Результаты выбора: ".$num_results."</p>";

Вообщем не выирает он результат, т.е. $num_results получается нулю равно :(
Может что не так сделал, подскажите спецы плиз!
 
Сверху