Калькулятор на ПХП
Не срабатывает вывод текста Неизвестный оператор ( и подставиться должно $rez). если неверно ввести что-то вообще ничего не выводится, а должно выводится.
<?php 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']; $rez = ''; 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 "Неизвестный оператор $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> |
Просто вот подобный код и он срабатывает, а мой код не выводит ничего если не правильно ввел или вообще ничего не ввел и нажал ЭНТЕР.
<?php // Проверим, была ли форма отправлена if( isset($_POST['num1']) && is_numeric($_POST['num1']) && isset($_POST['num2']) && is_numeric($_POST['num2']) && isset($_POST['operator']) && !empty($_POST['operator']) ){ // Отфильтруем полученные значения $num1 = $_POST['num1'] * 1; $num2 = $_POST['num2'] * 1; $operator = $_POST['operator']; // Создадим переменную для хранения результата вычисления $output = "$num1 $operator $num2 = "; // В зависимости от оператора будем выполнять разные математические действия switch ($operator){ case '+': $output .= $num1 + $num2; break; case '-': $output .= $num1 - $num2; break; case '*': $output .= $num1 * $num2; break; case '/': // В случае деления не забываем проверить, // чтобы делитель не был равен нулю if($num2 == 0){ $output = 'Деление на ноль запрещено!'; }else{ $output .= $num1 / $num2; } break; default: $output = "Неизвестный оператор '$operator'"; } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru"> <head> <title>Калькулятор</title> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> </head> <body> <h1>Калькулятор</h1> <?php // Если результат существует, выводим его if(isset($output)){ print "<p>Результат: $output</p><hr />"; } ?> <!-- http://www.softtime.ru/info/articlephp.php?id_article=69 --> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> Число 1:<br /> <input type="text" name="num1" /><br /><br /> Оператор:<br /> <input type="text" name="operator" /><br /><br /> Число 2:<br /> <input type="text" name="num2" /><br /><br /> <input type="submit" value="Считать!" /> </form> </body> </html> |
Может все же так?
default: echo "Неизвестный оператор $znak"; |
Хочу проверить каждое поле на пустоту, вот так пробую что-то не срабатывает.
<?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> Получается даже не дает ввести, сразу выдает что пустое. Как сделать проверку на пустоту поля если ничего не введено и нажата кнопка вычислить? Я вот сделал и не дает даже ввести что-то, сразу выдает что не пусто. |
$ch2 = preg_replace('/[^0-9., ]/si', '', $_POST['chislo2']); if ( trim($ch2) == '') echo 'введите число2'; так же надо будет проверить, не ввели ли одни точки или запятые далее в $ch2 меняем запятые на точку (что бы всё-таки добиться числа, которое понимается пхп как число) потом убираем ведущие нули, при чем надо учитывать, что может быть введено 00123,56 или 0,159 или 000,659 еще надо сделать проверку на такое 123,156.954 и такое 123 156.954 |
еще вспомнил: в одном из кредитных калькуляторов я так и написал юзерам подсказку, что разделитель разрядов пробел, а десятичных точка или зпт, или дефис (тогда выше надо так [^0-9., \-])
|
Вот так лучше работает.
Код:
<? |
Часовой пояс GMT +3, время: 09:37. |