Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2011, 01:04   #1
romantik2011
Пользователь
 
Регистрация: 20.07.2011
Сообщений: 70
По умолчанию Калькулятор

Не срабатывает вывод текста Неизвестный оператор ( и подставиться должно $rez). если неверно ввести что-то вообще ничего не выводится, а должно выводится.
PHP код:
<?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>
romantik2011 вне форума Ответить с цитированием
Старый 11.10.2011, 01:14   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от romantik2011 Посмотреть сообщение
Не срабатывает вывод текста Неизвестный оператор ( и подставиться должно $rez):
$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";
}
У вас $rez получает новое значение, только если $znak совпадает с одним из условий case.
В противном случае - $rez остается пустым.

А выводить вам в default нужно $znak - а не $rez...
Andkorol вне форума Ответить с цитированием
Старый 11.10.2011, 01:25   #3
romantik2011
Пользователь
 
Регистрация: 20.07.2011
Сообщений: 70
По умолчанию

Если заменить мою строку на эту
PHP код:
 default: echo "Неизвестный оператор $znak"
Если в первое поле ввести бурду, а во второе и третье ничего не ввести, при нажатии ЭНТЕР ничего на экран не выведется
romantik2011 вне форума Ответить с цитированием
Старый 11.10.2011, 01:32   #4
romantik2011
Пользователь
 
Регистрация: 20.07.2011
Сообщений: 70
По умолчанию

Просто вот подобный код и он срабатывает, а мой код не выводит ничего если не правильно ввел или вообще ничего не ввел и нажал ЭНТЕР.

PHP код:
<?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>
romantik2011 вне форума Ответить с цитированием
Старый 11.10.2011, 01:41   #5
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Второй код работает абсолютно так же - только вместо $znak в нем $operator.
При неправильных или отсутствующих данных он не выводит ничего.
Andkorol вне форума Ответить с цитированием
Старый 14.10.2011, 02:05   #6
romantik2011
Пользователь
 
Регистрация: 20.07.2011
Сообщений: 70
По умолчанию

Хочу проверить каждое поле на пустоту, вот так пробую что-то не срабатывает.

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; 14.10.2011 в 02:09.
romantik2011 вне форума Ответить с цитированием
Старый 14.10.2011, 12:36   #7
mrgrudge
Форумчанин
 
Аватар для mrgrudge
 
Регистрация: 20.02.2010
Сообщений: 229
По умолчанию

дайте кнопке id,<input type="submit" value="Считать!" id='sub'/>
и код начниайте с
Код:
if($_POST['sub'])
{
//php script
}
думай как баг, действуй как баг, и ты найдешь баг )
mrgrudge вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ калькулятор napanin Общие вопросы C/C++ 0 09.05.2010 16:32
калькулятор Hilda Помощь студентам 2 28.04.2010 22:50
Калькулятор Hilda Помощь студентам 3 25.04.2010 16:04
калькулятор Bat{CMD}_Men Общие вопросы Delphi 1 22.04.2010 09:36
Калькулятор slivochny Общие вопросы C/C++ 4 17.06.2009 20:49