Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá a todos!
Estou fazendo uma lista de exercicios PHP para ver até onde consigo, e estou com um problema num exercício muito simples
O exercício é de uma calculadora, segue o enunciado:
"Crie um programa em que o usuário escolha uma operação (soma, subtração, multiplicação ou divisão). Crie duas caixas de texto para receber 2 números. Realize a operação escolhida em cada um dos números."
Então fiz o HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Calculadora</title>
</head>
<body>
<form method="POST" action="calculadora.php">
<p>Digite dois números e escolha a operação:</p>
<p>Primeiro número:</p>
<input type="text" name="valor1">
<p>Segundo número:</p>
<input type="text" name="valor2">
<p>
<input type="radio" name="operacao" value="adicao"/>Adição<br/>
<input type="radio" name="operacao" value="sub"/>Subtração<br/>
<input type="radio" name="operacao" value="div"/>Divisão<br/>
<input type="radio" name="operacao" value="mult"/>Multiplicação
</p>
<input type="submit" value="Calcular">
</form>
</body>
</html>
E o PHP:
<?php
$val1 = isset($_POST['valor1']) ? $_POST['valor2']: null;
$val2 = isset($_POST['valor2']) ? $_POST['valor2']: null;
$operacao = isset($_POST['operacao']) ? $_POST['operacao']: null;
//var_dump($_POST);exit;
switch ($operacao) {
case 'adicao':
echo $val1 + $val2;
break;
case 'sub':
echo $val1 - $val2;
break;
case 'div':
echo $val2 / $val2;
break;
case 'mult':
echo $val1 * $val2;
break;
default:
echo 'ERRO!!! Escolha uma operação!';
break;
}
Porém as contas estão saindo erradas e eu não consigo entender o porque -_-
Tipo, se eu entro com o valor 2 e 3 e seleciono o RADIO adicao, teria que me retornar 5, mas retorna 4.
Alguém sabe onde estou errando?
Grato!Só para lhe dar uma sugestão. PHP >= 7 pode-se usar o operador null coalesce:
$val1 = $_POST['valor1'] ?? null;
Ele é útil sempre que precisar validar um valor usando isset e, em caso de false, atribuir um valor default.
Já achei onde estava errando... na verdade tinha dois erros haha
Um era no if ternário:
case 'div':