Why is this calculator in php not working?

0
<body>
<form role="form" action="pratica_fazer_calculadora.php" method="get">
    <input type="number" placeholder="Digite um número" name="primeiro_numero"/>
    <select>
        <option value="1">Soma</option>
        <option value="2">Subtração</option>
        <option value="3">Divisão</option>
        <option value="1">Multiplicação</option>
    </select>
    <input type="number" placeholder="Digite um número" name="segundo_numero"/>
    <button type="submit">Ver resultado</button>
</form>    

    <?php 
      $num_1 = $_GET ['primeiro_numero'];
      $num_2 = $_GET ['segundo_numero'];

      $operacao[1] = 1;
      $operacao[2] = 2;
      $operacao[3] = 3;
      $operacao[4] = 4;

      $resultado = null;

      if($operacao[1]){
          $resultado = ($num_1 + $num_2);
      }
      echo $resultado;

    ?>
</body>

The interesting thing is that no error message appears.

    
asked by anonymous 07.03.2018 / 15:43

3 answers

5

It does not work because it was not programmed to work.

First of all, let's get a name in select and fix item 4:

<select name="operacao"> <!-- aqui eu pus um "name" -->
    <option value="1">Soma</option>
    <option value="2">Subtração</option>
    <option value="3">Divisão</option>
    <option value="4">Multiplicação</option>
</select>

Then in PHP:

<?php 
  $num_1    = $_GET ['primeiro_numero'];
  $num_2    = $_GET ['segundo_numero'];
  $operacao = $_GET ['operacao'];           // recuperamos a operação

  if ($operacao == 1) {                     // e comparamos para ver qual usar
      $resultado = ($num_1 + $num_2);
  } else if ($operacao == 2) {
      $resultado = ($num_1 - $num_2);
  } else if ($operacao == 3) {

     // ... vai repetindo o elseif e fazendo as operações corretas ...
  }
  echo $resultado;

?>

I did not change if to switch because I understand that I am learning, but I recommend using it in the future.

    
07.03.2018 / 16:01
2

I made a different way of the above companions only by disengagement of consciousness, and show other possibilities as well.

Instead of setting a value direct in <option> , set the operation to happen according to the name that is within <option> available:

<body>
<form role="form" action="teste2.php" method="get">
    <input type="number" placeholder="Digite um número" name="primeiro_numero"/>
    <select name="operacao">
        <option>Soma</option>
        <option>Subtração</option>
        <option>Divisão</option>
        <option>Multiplicação</option>
    </select>
    <input type="number" placeholder="Digite um número" name="segundo_numero"/>
    <button type="submit">Ver resultado</button>
</form>    

    <?php 
      $num_1 = $_GET ['primeiro_numero'];
      $num_2 = $_GET ['segundo_numero'];
      $operacao = $_GET['operacao'];

      if($operacao == "Soma"){
          $resultado = ($num_1 + $num_2);
          echo $resultado;

      } else if($operacao == "Subtração"){
          $resultado = ($num_1 - $num_2);
          echo $resultado;

      } else if($operacao == "Divisão"){
          $resultado = ($num_1 / $num_2);
          echo $resultado;

      } else if($operacao == "Multiplicação"){
          $resultado = ($num_1 * $num_2);
          echo $resultado;
      }
    ?>
</body>
    
07.03.2018 / 16:07
2

So I made some changes to the code and finished the file. I've placed a validation for $_GET to avoid giving error when you enter the page. And I've added switch to perform the operations, it's working normally.

<body>
<form role="form" action="pratica_fazer_calculadora.php" method="get">
    <input type="number" placeholder="Digite um número" name="primeiro_numero"/>
    <select name="operacao">
        <option value="1">Soma</option>
        <option value="2">Subtração</option>
        <option value="3">Divisão</option>
        <option value="4">Multiplicação</option>
    </select>
    <input type="number" placeholder="Digite um número" name="segundo_numero"/>
    <button type="submit">Ver resultado</button>
</form>

<?php
if (isset($_GET) && !empty($_GET)) {
   $num_1 = (double)isset($_GET ['primeiro_numero']) ? $_GET ['primeiro_numero'] : 0;
   $num_2 = (double)isset($_GET ['segundo_numero']) ? $_GET ['segundo_numero'] : 0;

    $resultado = null;

switch ($_GET['operacao']) {
    case 1:
        $resultado = ($num_1 + $num_2);
        break;
    case 2;
        $resultado = ($num_1 - $num_2);
        break;
    case 3;
        $resultado = ($num_1 / $num_2);
        break;
    case 4;
        $resultado = ($num_1 * $num_2);
        break;
}

    echo 'O Resultado é : ' .$resultado;
}
?>
</body>

    
07.03.2018 / 16:00