Простая ошибка и калькулятор [закрыт]

154
26 сентября 2019, 23:30

нужно сделать простой калькулятор по примеру учителя,сверил свой код и учителя больше 10 раз и не нашел ошибку. Вроде как ошибка в переменной $output . Сам я в php полный ноль.

Калькулятор

<html> 
<head> 
 
 <title></title> 
 <meta charset="utf-8"> 
</head> 
 
<body> 
 
 
 
<?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 '/': 
    $output .=$num1 / $num2;break; 
       if ($num1 = 0){ 
            echo "Нельзя делить на ноль"; 
            break; 
        }break; 
     
    break; 
 default: 
    $output="Неизвестный оператор '$operator'"; 
     
} 
 
} 
 
 
 
 
 ?> 
 
 
 <style> 
.calc{ 
    text-align:center; 
     
} 
 
    table,th,td{ 
        border:2px solid #000; 
        border-collapse: collapse;   
        margin:50px auto; 
        font-size: 20px; 
    } 
 
    th{ 
       
       
    } 
 
    </style> 
 
     
 
<div class="calc"> 
    <h1>Каклькулятор</h1> 
 
    <?php  
 
if(isset ($output)){ 
    print "<p>Результат:$output</p>"; 
} 
 
?> 
 
 
 
 
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" menthod="post"> 
<p>Число 1</p> 
<input type="text" name="num1"> 
<P>Оператор:</P> 
<input type="text" name="operator"> 
<P>Число 2</P> 
<input type="text" name="num2"> <br> 
<input type="submit" value="Cчитать!"> 
</form> 
 
 
 
</div> 
 
 
 
 
 
 
 
 
</body> 
</html>

Answer 1

Похоже, что ошибка в этой строчке:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" menthod="post">

У вас атрибут называется menthod, а вы, конечно, имели в виду method, поэтому браузер отправляет запрос как GET, следовательно, в массив $_POST ничего не попадает.

Кроме того, вот в этом фрагменте

case '/':
$output .=$num1 / $num2;break;
   if ($num1 = 0){
        echo "Нельзя делить на ноль";
        break;
    }break;

куча ошибок: вы сначала делите, а потом проверяете (для сравнения используется ==), да еще и не тот операнд (нужно проверять делитель, а не делимое); более того, сравнение бессмысленно, так как будет совершен выход из switch раньше времени из-за лишнего break. То есть:

case '/':
   if ($num1 == 0)                         // Если делитель равен нулю
        $output = "Нельзя делить на ноль"; // то сохраняем в output сообщение
   else
        $output .= $num1 / $num2;          // иначе производим деление
   break;
READ ALSO
Примеры использования указателей

Примеры использования указателей

Пытаюсь разобраться в указателяхУвидел такие примеры, но не нашёл что они делают

143
Обработка ввода и клика в WM_COMMAND

Обработка ввода и клика в WM_COMMAND

После запуска ни на что не реагирует

152
Events QGraphicsSceneMouseEvent работают, только если graphicsview активно qt

Events QGraphicsSceneMouseEvent работают, только если graphicsview активно qt

Как сделать так, чтобы при запуске программы сразу graphicsview становился активным и события срабатывалиА то необходимо сначала кликнуть на сцену

143
Перегрузка оператора. Сложение дробей

Перегрузка оператора. Сложение дробей

Изменяю код, в расчёте, может быть кому-нибудь пригодитсяЗадача: Даны две дроби a/b и c/d

158