[RESOLU] Variable non définie

Jahrom
Invité n'ayant pas de compte PHPfrance

04 mars 2021, 17:14

Bonjour à tous,

J'ai un petit soucis, je dois afficher le résultat d'une variable ($result) dans le navigateur.
Le soucis c'est que cette variable n'est pas définie , je ne sais pas comment la définir en dehors de la condition sachant quelle utilise 2 autres variables pour donner son résultat.
Pour info il s'agit d'un exercice de création d'une "calculatrice".

Merci d'avance pour votre aide

Voici le code :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
http://www.w3.org/TR/REC-html40/strict.dtd">
<HTML>

<HEAD>
<TITLE>Calculatrice</TITLE>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
</HEAD>

<BODY>

<form method="POST" action="Calculatrice.php">
<input name="number1" type="text" placeholder="Renseigner un premier nombre" style="width : 200px">
<select name="operator">
<option value ="plus">+</option>
<option value ="moins">-</option>
<option value ="multiplié par">x</option>
<option value ="divisé par">/</option>
</select>
<input name="number2" type="text" placeholder="Renseigner un second nombre" style="width : 200px">
<input name="Submit" type="submit" value="Calculer">
</form>

<?php

$number1 = isset($_POST["number1"]) ? $_POST["number1"] : '';
$operator = isset($_POST["operator"]) ? $_POST["operator"] : '';
$number2 = isset($_POST["number2"]) ? $_POST["number2"] : '';

if ($number1 && $operator && $number2) {
if (isset ($_POST["submit"])) {
if (is_numeric($number1) && is_numeric($number2)) {
if ($operator == "plus") {
$result = $number1 + $number2;
}
if ($operator == "moins") {
$result = $number1 - $number2;
}
if ($operator == "multiplié par") {
$result = $number1 * $number2;
}
if ($operator == "divisé par") {
$result = $number1 / $number2;
}
}
}
echo "<h1>Le résultat de $number1 $operator $number2 est égal à $result.</h1>";
} else {
echo "Veuillez saisir des valeurs et cliquez sur \"Calculer\" pour obtenir le résultat";
}
?>

Mammouth du PHP | 1967 Messages

05 mars 2021, 10:20

En régle genarale, on peut initier une variable en lui donnant une valeur nulle ou une chaine vide
$var = '';
ou
$var = null
mais bien souvent on se contente de savoir si elle est initier ou non vide avec isset ou empty avant de l'utiliser afin de gérer le cas ou elle n'éxiste pas.

mais ce n'est pas ce que je te conseillerai.
regarde ton code, indente le pour mieux comprendre l'ordre des conditions et dis toi que si $_POST['submit'] n'est pas initier, inutile de récupèrer $nombre1, $operator et $nombre2. un autre ordre est possible et résoudra ton problème
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Jahrom
Invité n'ayant pas de compte PHPfrance

05 mars 2021, 15:34

Merci pour ta réponse. Pour l'indentation, ici c'est un copier-coller donc tout s'ajuste sur la gauche mais j'utilise PhpStorm et c'est effectué dans le logiciel.
J'ai trouvé l'erreur, c'est un problème de majuscule minuscule pour le 'submit'.

//ici Submit avec S majuscule
<input name="Submit" type="submit" value="Calculer">

et

//ici submit avec S minuscule
if (isset ($_POST["submit"])) {

Merci d'avoir pris le temps de répondre :D

Avatar du membre
Mammouth du PHP | 1609 Messages

05 mars 2021, 15:41

Si tu utilises la balise code ou php l'indentation du code est bien conservée. ;)
Développeur web depuis + de 20 ans

Jahrom
Invité n'ayant pas de compte PHPfrance

05 mars 2021, 15:45

Ok merci pour l'info :wink: