Problème avec mon PHP
Résolu
luki31
Messages postés
68
Date d'inscription
Statut
Membre
Dernière intervention
-
crapoulou Messages postés 28195 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
crapoulou Messages postés 28195 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
Bonjour,
J'ai un problème avec mon PHP, le problème est le suivant, quand je tape ma saisie il m'affiche les 4 résultats des 4 fonctions alors que j'en veux que un.
et voici la saisie
Aidez moi S.V.P
Cordialement
Cordialement
J'ai un problème avec mon PHP, le problème est le suivant, quand je tape ma saisie il m'affiche les 4 résultats des 4 fonctions alors que j'en veux que un.
<?php $_POST['nombre']; $_POST['result']; $_POST['choix']; if($_POST['choix'] = 1 AND isset($_POST['choix'])) { function xCalc($nombre, $result) { $inconu = $_POST['result'] - $_POST['nombre']; echo "<h1>= $inconu </h1> "; } xCalc(1, 2, 3); } if($_POST['choix2'] = 2 AND isset($_POST['choix'])) { function yCalc($nombre, $result) { $inconu = $_POST['nombre'] + $_POST['result']; echo "<h1>= $inconu </h1>"; } yCalc(1, 2, 3); } if($_POST['choix3'] = 3) { function zCalc($nombre, $result) { $inconu = $_POST['nombre'] / $_POST['result']; echo "<h1>= $inconu </h1>"; } zCalc(1, 2, 3); } if($_POST['choix'] = 4) { function qCalc($nombre, $result) { $inconu = $_POST['result'] / $_POST['nombre']; echo"<h1>= $inconu </h1>"; } qCalc(1, 2, 3); } ?>
et voici la saisie
<form action="xCalc.php" method="post"> <p>Saisissez:<br/> <input type="text" name="nombre" /><select name="choix"> <option value="choix1">+</option> <option value="choix2">-</option> <option value="choix3">x</option> <option value="choix4">÷</option> </select> X = <input type="text" name="result" /> <input type="submit" value="Valider" /> </p> </form>
Aidez moi S.V.P
Cordialement
Cordialement
A voir également:
- Problème avec mon PHP
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour a la ligne php - Forum Webmastering
- Alert php - Forum PHP
- Retour a la ligne php ✓ - Forum PHP
12 réponses
if($_POST['choix'] = 1 AND isset($_POST['choix'])) {
il manque un egal dans tes autres cas aussi
if($_POST['choix'] == 1 AND isset($_POST['choix'])) {
Puis si c'est ou l'un ou lautre autant utilise des if ..elseif
...
de plus...
tu test la valeur de ta variable et ensuite tu verifies qu'elle existe, l'inverse t"eviterais qques notice
il manque un egal dans tes autres cas aussi
if($_POST['choix'] == 1 AND isset($_POST['choix'])) {
Puis si c'est ou l'un ou lautre autant utilise des if ..elseif
...
de plus...
tu test la valeur de ta variable et ensuite tu verifies qu'elle existe, l'inverse t"eviterais qques notice
J'ai fais les changement mais maintenent rien ne s'affiche...
<?php $_POST['nombre']; $_POST['result']; $_POST['choix']; if($_POST['choix'] == 1 AND isset($_POST['choix'])) { function xCalc($nombre, $result) { $inconu = $_POST['result'] - $_POST['nombre']; echo "<h1>= $inconu </h1> "; } xCalc(1, 2, 3); } if($_POST['choix'] == 2 AND isset($_POST['choix'])) { function yCalc($nombre, $result) { $inconu = $_POST['nombre'] + $_POST['result']; echo "<h1>= $inconu </h1>"; } yCalc(1, 2, 3); } if($_POST['choix'] == 3 AND isset($_POST['choix'])) { function zCalc($nombre, $result) { $inconu = $_POST['nombre'] / $_POST['result']; echo "<h1>= $inconu </h1>"; } zCalc(1, 2, 3); } if($_POST['choix'] == 4 AND isset($_POST['choix'])) { function qCalc($nombre, $result) { $inconu = $_POST['result'] / $_POST['nombre']; echo"<h1>= $inconu </h1>"; } qCalc(1, 2, 3); } ?>
Salut,
Au lieu de faire ceci :
Teste tout en haut de ta fonction ceci :
if(isset($_POST['choix']))
Ensuite, tu fais un switch case sur la valeur de $_POST['choix']
Vérifie aussi le nom du paramètre choix passé en paramètre !
Au lieu de faire ceci :
if($_POST['choix'] == 3 AND isset($_POST['choix'])) { ... } if($_POST['choix'] == 4 AND isset($_POST['choix']))
Teste tout en haut de ta fonction ceci :
if(isset($_POST['choix']))
Ensuite, tu fais un switch case sur la valeur de $_POST['choix']
Vérifie aussi le nom du paramètre choix passé en paramètre !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Tu fais des divisions avec tes nombres.
Tu devrais aussi t'assurer que tu ne fais pas une division par zéro avant de faire le calcul ...
Tu devrais aussi t'assurer que tu ne fais pas une division par zéro avant de faire le calcul ...
Utilisation du switch case :
https://www.php.net/manual/fr/control-structures.switch.php
Exemple où $i est la variable à tester :
Tu peux mettre une ou plusieurs instructions dans le case (jusqu'au break).
Je te laisse tester et demande-moi si tu as des questions.
https://www.php.net/manual/fr/control-structures.switch.php
Exemple où $i est la variable à tester :
switch ($i) { case 0: //Cas où i vaut 0 echo "i égal 0"; echo "i est égal 0 j'ai dit !"; break; case 1: //Cas où i vaut 1 echo "i égal 1"; break; case 2: //Cas où i vaut 2 echo "i égal 2"; break; }
Tu peux mettre une ou plusieurs instructions dans le case (jusqu'au break).
Je te laisse tester et demande-moi si tu as des questions.
Merci !!!! Vous m'aidez enomémant ! Maintenent je vais tester le tout, j'ai juste une petite question, ou je dois mettre la "fonction"?
Je suis confu ^^
donc si je veux faire mon calcul je dois faire:
donc si je veux faire mon calcul je dois faire:
$_POST['nombre']; $_POST['result']; $_POST['choix']; switch ($i) { function xCalc($nombre, $result) { $inconu = $_POST['result'] - $_POST['nombre']; echo "<h1>= $inconu </h1> "; } xCalc(1, 2, 3); break; case 1: //comme en haut echo "i égal 1"; break; case 2: //comme au premier echo "i égal 2"; break; }
Il est essentiel que tu connaisses les bases de la programmation !
Définition d'une instruction.
"Fonction appelée" => tu appelle la fonction écrite.
Exemple :
Définition d'une instruction.
"Fonction appelée" => tu appelle la fonction écrite.
Exemple :
function eriretoto() { echo("toto"); } //... Le programme continue ici et 100 lignes plus loin : ecriretoto(); //J'appelle la fonction ici que j'ai dégini plus haut.
Je suis vraiment dessolé mais mon niveau est vraiment trop bas pour faire cela...
Je comprend rien
Je comprend rien
Lis ceci :
https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/912352-les-fonctions
Qu'est-ce que tu ne comprends pas exactement ?
https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/912352-les-fonctions
Qu'est-ce que tu ne comprends pas exactement ?
Tu as une variable $toto qui vaut soit 1, soit 2, soit 3, soit 4.
Au lieu de faire :
TU FAIS CECI :
Je ne peux rien faire de plus si tu ne comprends pas.
Lis bien ceci :
https://www.php.net/manual/fr/control-structures.switch.php
Tu as ainsi bien moins de lignes de code.
Au lieu de faire :
if ($toto == 1) { //Je fais ceci } elseif ($toto == 2) { //Je fais ceci } elseif ($toto == 3) { //Je fais ceci } else { //Je fais cela }
TU FAIS CECI :
switch ($toto) //On teste la valeur de $toto { case 1: //Cas où $toto vaut 1 echo "i égal 0"; //Je fais donc telle action break; //Fin du cas où $toto vaut 1, on ne rentrera pas dans les autres cas => le programme quitte le switch. case 2: //On traite le cas où $toto vaut 2 echo "toto égal 2"; break; case 3: echo "toto égal 3"; break; default: echo "Tous les autres cas non satisfaits !"; }
Je ne peux rien faire de plus si tu ne comprends pas.
Lis bien ceci :
https://www.php.net/manual/fr/control-structures.switch.php
Tu as ainsi bien moins de lignes de code.
Bonjour,
juste un détail...
si tes options ont comme value "choix1", "choix2"... tes if doivent porter sur:
if($_POST['choix'] == 1) ...
juste un détail...
si tes options ont comme value "choix1", "choix2"... tes if doivent porter sur:
if($_POST['choix'] == 1) ...
Cela devrait mieux entrer en adéquation avec ce que tu veux faire.
Maintenant, il faut restreindre l'utilisation des zones de texte à des chiffres, ...
Maintenant, il faut restreindre l'utilisation des zones de texte à des chiffres, ...
<?php //--------------------------- Définition des fonctions -------------------------// function soustCalc($nombre, $nombre2) //Sousctraction du nombre 1 par le nombre 2 { $resultat = $nombre - $nombre2; echo "<h1>= $resultat </h1>"; } function plusCalc($nombre, $nombre2) //Addition des deux nombres { $resultat = $nombre + $nombre2; echo "<h1>= $resultat </h1>"; } function multiplieCalc($nombre, $nombre2) //Soustraction du nombre 1 par le nombre 2 { $resultat = $nombre - $nombre2; echo "<h1>= $resultat </h1>"; } function DiviseCalc($nombre, $nombre2) //Division nombre1 par nomnbre 2 (Attention aux divisions par 0 !) { if ($nombre2 != 0) { $resultat = $nombre / $nombre2; echo"<h1>= $resultat </h1>"; } else { echo"<h1>Pas de dsivision par 0 !</h1>"; } } //--------------------------- Début du traitement -------------------------// if(isset($_POST['nombre2']) && isset($_POST['nombre'])) { $nombre = $_POST['nombre']; $nombre2 = $_POST['nombre2']; $choix = $_POST['choix']; echo "Nb1 = $nombre // Nb2 = $nombre2 // Choix = $choix"; switch ($choix) { case 1: plusCalc($nombre, $nombre2); break; case 2: soustCalc($nombre, $nombre2); break; case 3: multiplieCalc($nombre, $nombre2); break; case 4: DiviseCalc($nombre, $nombre2); } } ?> <!------------------------ Affichage => Code HTML ----------------------!--> <form action="test2.php" method="post"> <p>Saisissez:<br/> <input type="text" name="nombre" /><select name="choix"> <option value="1">+</option> <option value="2">-</option> <option value="3">x</option> <option value="4">÷</option> </select> <input type="text" name="nombre2" /> <input type="submit" value="Valider" /> </p> </form>
PArfait.
Que cela te serve de base au moins pour comprendre.
Ce n'est pas extraordinaire mais bon.
Ce que je disais aussi c'est que ici, les fonctions ne sont pas utiles !
On aurait pu faire par exemple ceci :
A ce moment là, toutes les fonctions ne sont pas utilisées.
Mais l'avantage est de bien structurer le code : si tu veux modifier une fonction tu sais rapidement où cela se fait.
Que cela te serve de base au moins pour comprendre.
Ce n'est pas extraordinaire mais bon.
Ce que je disais aussi c'est que ici, les fonctions ne sont pas utiles !
On aurait pu faire par exemple ceci :
case 1: echo "<h1>= $nombre + $nombre2 </h1>"; break;
A ce moment là, toutes les fonctions ne sont pas utilisées.
Mais l'avantage est de bien structurer le code : si tu veux modifier une fonction tu sais rapidement où cela se fait.
Je crois que j'ai trouve le probleme ...
Dans ta saisie tu as des options tel que :
<option value="choix1"> mais ca ne correspond pas aux "if" que tu fais ...
Tu devrais avoir des options defini de cette facon :
<option value="1">
Dans ta saisie tu as des options tel que :
<option value="choix1"> mais ca ne correspond pas aux "if" que tu fais ...
Tu devrais avoir des options defini de cette facon :
<option value="1">
Oui, je ne l'ai pas précisé mais je l'ai modifié dans mon code :
<form action="test2.php" method="post"> <p>Saisissez:<br/> <input type="text" name="nombre" /><select name="choix"> <option value="1">+</option> <option value="2">-</option> <option value="3">x</option> <option value="4">÷</option> </select>
tu devrais tester isset en premier car si c'est false ça ne sert à rien de tester si la valeur est 1 ...