За последние 24 часа нас посетил 16881 программист и 1641 робот. Сейчас ищут 905 программистов ...

Помогите устранить ошибки в веб-калькуляторе на PHP

Тема в разделе "PHP для новичков", создана пользователем blbulyandavbulyan, 12 май 2017.

  1. blbulyandavbulyan

    blbulyandavbulyan Новичок

    С нами с:
    12 май 2017
    Сообщения:
    16
    Симпатии:
    0
    Код (Text):
    1. <!DOCTYPE html>
    2. <html lang="ru">
    3. <head>
    4. <title>Калькулятор</title>
    5. </head>
    6. <body><div id="fl1">
    7.      <form method="GET">
    8.      <input type="text" placeholder="Число a" name="a">
    9.      <input type="text" placeholder="Число b" name="b"></div><div id="fl2">
    10.      <input type="radio" id="sm" name="oper" value='+'>
    11.      <label for="sm" class="radio"><div>Сумма</div></label>
    12.      <input type="radio" id="sub" name="oper" value='-'>
    13.      <label for="sub" class="radio"><div>Вычитание</div></label>
    14.      <input type="radio" id="mul" name="oper" value='*'>
    15.      <label for="mul" class="radio"><div>Умножение</div></label>
    16.      <input type="radio" id="di" name="oper" value='/'>
    17.      <label for="di" class="radio"><div>Деление</div></label>
    18.      <input type="radio" id="trtap" name="oper" value="**">
    19.      <label for="trtap" class="radio"><div>В степень</div></label>
    20.      <input type="submit" name="res" value="Посчитать">
    21.      <input type="reset" value="Очистить">
    22.      </form>
    23.      <form method="GET">
    24.         <input type="submit" name="cl" value="Почистить">
    25.     </form></div>
    26.      <?php
    27.         $clear = $_GET['cl'];
    28.         if($clear == 'Почистить'){
    29.             clear();
    30.         }
    31.         else{
    32.             calc();
    33.         }
    34.         function calc(){
    35.             if($_GET['res'] && $_GET['oper']){
    36.             $a = $_GET['a'];
    37.             $b = $_GET['b'];
    38.             $radio = $_GET['oper'];
    39.             if($radio == '+'){$c = $a + $b; print "<input id='res1' type=text value='$a $radio $b = $c' >";}
    40.             if($radio == '-'){$c = $a - $b; print "<input id='res1' type=text value='$a $radio $b = $c' >";}
    41.             if($radio == '*'){$c = $a * $b; print "<input id='res1' type=text value='$a $radio $b = $c' >";}
    42.             if($radio == '/'){$c = $a / $b; print "<input id='res1' type=text value='$a $radio $b = $c' >";}
    43.             if($radio == '**'){$c = $a ** $b; print "<input id='res1' type=text value='$a $radio $b = $c' >";}
    44.         }
    45.  
    46.             else{
    47.                 echo 'Упс что-то пошло не так.';
    48.             }
    49.         }
    50.         function clear(){
    51.             unset($_GET['a'], $_GET['b'], $_GET['oper']);
    52.         }
    53.     ?>
    54.  
    55. </body>
    56. </html>
    Можете запустить этот код и помочь устранить ошибки в PHP коде. Пожалуйста! (Запускать на тестовом сервере). Сам калькулятор работает, и ошибки как-бы не мешают но они засоряют логи и хотелось бы их устранить с вашей помощью. П.С Я новичок, мне не двадцать и не бородат. :)
     
    #1 blbulyandavbulyan, 12 май 2017
    Последнее редактирование: 12 май 2017
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Это в смысле: "Я идиот, не могу в гугл-транслейт забить ошибки"? Какая разница, сколько тебе лет, главное - хочешь думать головой, или не хочешь.
    У тебя там постоянное обращение к $_GET, без проверки, а был ли передан параметр. Назначение функции clear() я вообще не понял. Проверяй, короче, isset($_GET["имя-параметра"]) перед тем как использовать что-то из $_GET.
     
  3. blbulyandavbulyan

    blbulyandavbulyan Новичок

    С нами с:
    12 май 2017
    Сообщения:
    16
    Симпатии:
    0
    Функция clear нужна для того что бы очистить (просто при обновлении страницы результат сохранялся а когда она вызывается, то результат удаляется (речь тут шла о ответе который собственно и выводил калькулятор). А так спасибо попробую ваш метод.
    --- Добавлено ---
    Большое спасибо помогло. Уж простите меня за столь глупый вопрос.:)
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Отправь на страницу без параметров.
    Это не "мой метод", это называется логика :) И если бы ты переводил сообщения об ошибках, тоже бы догадался.
     
  5. blbulyandavbulyan

    blbulyandavbulyan Новичок

    С нами с:
    12 май 2017
    Сообщения:
    16
    Симпатии:
    0
    Да сразу не догадался, бывает.
    - это как не подскажите?