Хочу проверить каждое поле на пустоту, вот так пробую что-то не срабатывает. PHP: <?php if(empty($_POST['chislo1'])) echo 'Пожалуйста, введите Число №1 <br />'; if(empty($_POST['chislo2'])) echo 'Пожалуйста, введите Число №2 <br />'; if(empty($_POST['znak'])) echo 'Введите знак во второе поле <br />'; if(isset($_POST['chislo1']) && isset($_POST['chislo2']) && is_numeric($_POST['chislo1']) && is_numeric($_POST['chislo2']) && !empty($_POST['znak']) ) { $ch1 = $_POST['chislo1']*1; $ch2 = $_POST['chislo2']*1; $znak = $_POST['znak']; switch($znak){ case '+': $rez = $ch1 + $ch2; break; case '-': $rez = $ch1 - $ch2; break; case '*': $rez = $ch1 * $ch2; break; case '/': if($ch2!=0){ $rez = $ch1 / $ch2; }else { echo 'Деление на ноль'; } break; default: echo "Неизвестный оператор $znak"; } if(isset($rez)) echo $rez; echo '<hr width="100%" color="blue" />'; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <head><title>Моя страница</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <input type="text" name="chislo1"/><br /> <input type="text" name="znak"/><br /> <input type="text" name="chislo2"/><br /> <input type="submit" value="Вычислить" > </form> </body> </html> Получается даже не дает ввести, сразу выдает что пустое. Как сделать проверку на пустоту поля если ничего не введено и нажата кнопка вычислить? Я вот сделал и не дает даже ввести что-то, сразу выдает что не пусто.
romantik2011, ваш код должен выполняться только тогда, когда была нажата кнопка Submit То есть нужно это прежде всего проверить: Код (Text): if(isset($_POST['submit']) { // тут уже проверка на пустоту и все остальное }
Вот так лучше работает. Код (Text): <? if(!empty($_POST)){ if(empty($_POST['chislo1'])) echo 'Пожалуйста, введите Число №1 <br />'; if(empty($_POST['chislo2'])) echo 'Пожалуйста, введите Число №2 <br />'; if(empty($_POST['znak'])) echo 'Введите знак во второе поле <br />'; if(isset($_POST['chislo1']) && isset($_POST['chislo2']) && is_numeric($_POST['chislo1']) && is_numeric($_POST['chislo2']) && !empty($_POST['znak']) ) { $ch1 = $_POST['chislo1']*1; $ch2 = $_POST['chislo2']*1; $znak = $_POST['znak']; switch($znak){ case '+': $rez = $ch1 + $ch2; break; case '-': $rez = $ch1 - $ch2; break; case '*': $rez = $ch1 * $ch2; break; case '/': if($ch2!=0){ $rez = $ch1 / $ch2; }else { echo 'Деление на ноль'; } break; default: echo "Неизвестный оператор $znak"; } if(isset($rez)) echo $rez; echo '<hr width="100%" color="blue" />'; } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <head><title>Моя страница</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <input type="text" name="chislo1"/><br /> <input type="text" name="znak"/><br /> <input type="text" name="chislo2"/><br /> <input type="submit" value="Вычислить" > </form> </body> </html> Подскажите,а как регулярными выражениями сделать?
YSandro Он всё правильно говорит. Для приложений, в которых используется частая отправка форм, выгодно делать клиентскую валидацию данных для минимизации обращений на сервер. А вот, что делать проверку надо и на клиенте, и на сервере - это 100%, яваскрипт легко обходится.
клиентскую валидацию надо делать ВСЕГДА. как и серверную. это хороший тон. я даже сказал маст хев. 2012 год на подходе. хтмл5, а мы еще думаем где делать валидацию...
я надеюсь ты говоришь что её нужно делать там где нужно ? =) меня лично раздражает логинилка аля укоз - первое что пришло в голову из бредового