[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Таблица умножения
romantik2011
Не срабатывает вывод текста Неизвестный оператор ( и подставиться должно $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>




Спустя 9 минут, 36 секунд (10.10.2011 - 23:56) Winston написал(а):
Цитата (romantik2011 @ 10.10.2011 - 23:47)
если неверно ввести что-то вообще ничего не выводится, а должно выводится

У меня все выводится.
А чтобы выводился неизвестный оператор перепиши вот так строку
default: echo "Неизвестный оператор $znak";

Спустя 2 минуты, 31 секунда (10.10.2011 - 23:59) romantik2011 написал(а):
Если заменить мою строку на эту
 default: echo "Неизвестный оператор $znak";

Если в первое поле ввести бурду, а во второе и третье ничего не ввести, при нажатии ЭНТЕР ничего на экран не выведется

Спустя 13 минут, 14 секунд (11.10.2011 - 00:12) Winston написал(а):
Ну, а если так переписать ?
Свернутый текст
<?php
$ch1 = isset($_POST['chislo1']) ? $_POST['chislo1'] : NULL;
$ch2 = isset($_POST['chislo2']) ? $_POST['chislo2'] : NULL;
$znak = isset($_POST['znak']) ? $_POST['znak'] : NULL;
$submit = isset($_POST['submit']) ? $_POST['submit'] : NULL;

if($submit && is_numeric($ch1) && is_numeric($ch2) && $znak)
{
$rez = '';
switch($znak){
case '+': $rez = $ch1 + $ch2; break;
case '-': $rez = $ch1 - $ch2; break;
case '*': $rez = $ch1 * $ch2; break;
case '/': $rez = ($ch2 != 0) ? ($ch1 / $ch2) : 'Деление на ноль'; break;
default: echo "Неизвестный оператор $znak";
}
echo $rez;
echo '<hr width="100%" color="blue" />';
}
else
echo 'Возможно не все данные корректны !';
?>

Спустя 6 минут, 43 секунды (11.10.2011 - 00:19) romantik2011 написал(а):
Получится что даже при запуске сайта пустого выведется некорректные данные, то есть даже не даст возможность их заполнить, сразу выдаст что некоректно.
Вот фото при запуске сайта пустого с нуля.

Спустя 2 минуты, 13 секунд (11.10.2011 - 00:21) Winston написал(а):
А, тогда переписать так
elseif($submit)
echo 'Возможно не все данные корректны !';

Спустя 2 минуты, 44 секунды (11.10.2011 - 00:24) romantik2011 написал(а):
Надпись убралась, но при вводе ничего и нажатии ЭНТЕР, не выдает ошибки что что-то не введено.

Спустя 6 минут, 58 секунд (11.10.2011 - 00:31) romantik2011 написал(а):
Просто вот подобный код и он срабатывает, а мой код не выводит ничего если не правильно ввел или вообще ничего не ввел и нажал ЭНТЕР.


<?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>



Спустя 2 минуты, 54 секунды (11.10.2011 - 00:34) imbalance_hero написал(а):
В самом начале напиши:
print_r($_POST['znak']);
echo htmlspecialchars($POST['znak']);

Спустя 2 дня, 22 часа, 33 минуты, 17 секунд (13.10.2011 - 23:07) romantik2011 написал(а):
Хочу проверить каждое поле на пустоту, вот так пробую что-то не срабатывает.


<?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>


Получается даже не дает ввести, сразу выдает что пустое. Как сделать проверку на пустоту поля если ничего не введено и нажата кнопка вычислить? Я вот сделал и не дает даже ввести что-то, сразу выдает что не пусто.

Спустя 48 минут, 55 секунд (13.10.2011 - 23:56) Игорь_Vasinsky написал(а):
Может в скобочки взять

Цитата
case '/': if($ch2!=0){ $rez = $ch1 / $ch2; }else { echo 'Деление на ноль'; } break;


case '/':
{
if($ch2!=0){ $rez = $ch1 / $ch2; }else { echo 'Деление на ноль'; }
}

break;

Спустя 5 минут, 3 секунды (14.10.2011 - 00:01) Winston написал(а):
Цитата (Игорь_Vasinsky @ 13.10.2011 - 23:56)
Может в скобочки взять

Это на любителя.
Быстрый ответ:

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