За последние 24 часа нас посетили 17045 программистов и 1652 робота. Сейчас ищут 918 программистов ...

Калькулятор

Тема в разделе "PHP для новичков", создана пользователем romantik2011, 11 окт 2011.

  1. romantik2011

    romantik2011 Активный пользователь

    С нами с:
    23 июл 2011
    Сообщения:
    26
    Симпатии:
    0
    Не срабатывает вывод текста Неизвестный оператор ( и подставиться должно $rez). если неверно ввести что-то вообще ничего не выводится, а должно выводится.
    PHP:
    1.  
    2. <?php
    3. if(isset($_POST['chislo1']) && isset($_POST['chislo2'])
    4. && is_numeric($_POST['chislo1']) && is_numeric($_POST['chislo2'])
    5. && !empty($_POST['znak']) )
    6. {
    7. $ch1 = $_POST['chislo1']*1;
    8. $ch2 = $_POST['chislo2']*1;
    9. $znak = $_POST['znak'];
    10. $rez = '';
    11. switch($znak){
    12. case '+': $rez = $ch1 + $ch2; break;
    13. case '-': $rez = $ch1 - $ch2; break;
    14. case '*': $rez = $ch1 * $ch2; break;
    15. case '/': if($ch2!=0){ $rez = $ch1 / $ch2; }else { echo 'Деление на ноль'; } break;
    16. default: echo "Неизвестный оператор $rez";
    17. }
    18. echo $rez;
    19. echo '<hr width="100%" color="blue" />';
    20. }
    21. ?>
    22.  
    23. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    24. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    25. <head><title>Моя страница</title>
    26. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    27.     </head>
    28. <body>
    29. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    30. <input type="text" name="chislo1"/><br />
    31. <input type="text" name="znak"/><br />
    32. <input type="text" name="chislo2"/><br />
    33. <input type="submit" value="Вычислить" >
    34. </form>
    35. </body>
    36.  
    37. </html>
    38.  
     
  2. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    echo "Неизвестный оператор $znak";
     
  3. romantik2011

    romantik2011 Активный пользователь

    С нами с:
    23 июл 2011
    Сообщения:
    26
    Симпатии:
    0
    Просто вот подобный код и он срабатывает, а мой код не выводит ничего если не правильно ввел или вообще ничего не ввел и нажал ЭНТЕР.

    PHP:
    1.  
    2. <?php
    3.  
    4. // Проверим, была ли форма отправлена
    5. if(
    6.     isset($_POST['num1']) && is_numeric($_POST['num1']) &&
    7.     isset($_POST['num2']) && is_numeric($_POST['num2']) &&
    8.     isset($_POST['operator']) && !empty($_POST['operator'])
    9. ){
    10.     // Отфильтруем полученные значения
    11.     $num1 = $_POST['num1'] * 1;
    12.     $num2 = $_POST['num2'] * 1;
    13.     $operator = $_POST['operator'];
    14.    
    15.     // Создадим переменную для хранения результата вычисления
    16.     $output = "$num1 $operator $num2 = ";
    17.    
    18.     // В зависимости от оператора будем выполнять разные математические действия
    19.     switch ($operator){
    20.         case '+':
    21.             $output .= $num1 + $num2; break;
    22.         case '-':
    23.             $output .= $num1 - $num2; break;
    24.         case '*':
    25.             $output .= $num1 * $num2; break;
    26.         case '/':
    27.             // В случае деления не забываем проверить,
    28.             // чтобы делитель не был равен нулю
    29.             if($num2 == 0){
    30.                 $output = 'Деление на ноль запрещено!';
    31.             }else{
    32.                 $output .= $num1 / $num2;
    33.             }
    34.             break;
    35.         default:
    36.             $output = "Неизвестный оператор '$operator'";
    37.     }
    38.    
    39. }
    40. ?>
    41.  
    42. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    43.  
    44. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
    45. <head>
    46.     <title>Калькулятор</title>
    47.     <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
    48. </head>
    49. <body>
    50.  
    51. <h1>Калькулятор</h1>
    52.  
    53. <?php
    54. // Если результат существует, выводим его
    55. if(isset($output)){
    56.     print "<p>Результат: $output</p><hr />";
    57. }
    58. ?>
    59. <!-- [url=http://www.softtime.ru/info/articlephp.php?id_article=69]http://www.softtime.ru/info/articlephp. ... article=69[/url] -->
    60. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    61.  
    62. Число 1:<br />
    63. <input type="text" name="num1" /><br /><br />
    64.  
    65. Оператор:<br />
    66. <input type="text" name="operator" /><br /><br />
    67.  
    68. Число 2:<br />
    69. <input type="text" name="num2" /><br /><br />
    70.  
    71. <input type="submit" value="Считать!" />
    72.  
    73. </form>
    74.  
    75. </body>
    76. </html>
    77.  
    78.  
    79.  
     
  4. romantik2011

    romantik2011 Активный пользователь

    С нами с:
    23 июл 2011
    Сообщения:
    26
    Симпатии:
    0
    Если заменить мою строку на эту
    PHP:
    1.  default: echo "Неизвестный оператор $znak";
    Если в первое поле ввести бурду, а во второе и третье ничего не ввести, при нажатии ЭНТЕР ничего на экран не выведется
     
  5. crautcher

    crautcher Активный пользователь

    С нами с:
    21 май 2011
    Сообщения:
    156
    Симпатии:
    0
    $ch1 = $_POST['chislo1']*1;

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