Problème avec mon PHP
Résolu/Fermé
luki31
Messages postés
68
Date d'inscription
mardi 22 février 2011
Statut
Membre
Dernière intervention
14 mai 2011
-
22 févr. 2011 à 19:37
crapoulou Messages postés 28160 Date d'inscription mercredi 28 novembre 2007 Statut Modérateur, Contributeur sécurité Dernière intervention 21 mai 2024 - 24 févr. 2011 à 15:56
crapoulou Messages postés 28160 Date d'inscription mercredi 28 novembre 2007 Statut Modérateur, Contributeur sécurité Dernière intervention 21 mai 2024 - 24 févr. 2011 à 15:56
12 réponses
mouf13
Messages postés
142
Date d'inscription
mardi 20 juin 2006
Statut
Membre
Dernière intervention
22 février 2011
17
Modifié par mouf13 le 22/02/2011 à 19:48
Modifié par mouf13 le 22/02/2011 à 19:48
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
floverdevel
Messages postés
121
Date d'inscription
dimanche 18 février 2001
Statut
Membre
Dernière intervention
20 mai 2011
15
22 févr. 2011 à 19:42
22 févr. 2011 à 19:42
il te manque un = dans tes tests dans les if ;)
if($_POST['choix'] == 1) { }
luki31
Messages postés
68
Date d'inscription
mardi 22 février 2011
Statut
Membre
Dernière intervention
14 mai 2011
2
22 févr. 2011 à 20:07
22 févr. 2011 à 20:07
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); } ?>
crapoulou
Messages postés
28160
Date d'inscription
mercredi 28 novembre 2007
Statut
Modérateur, Contributeur sécurité
Dernière intervention
21 mai 2024
7 998
22 févr. 2011 à 20:41
22 févr. 2011 à 20:41
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 !
luki31
Messages postés
68
Date d'inscription
mardi 22 février 2011
Statut
Membre
Dernière intervention
14 mai 2011
2
23 févr. 2011 à 17:19
23 févr. 2011 à 17:19
Merci de votre aide mais mon niveau en PHP est pas super donc je sais pas comment utiliser les balise switch case . Pourriez vous m'aidez ? Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
floverdevel
Messages postés
121
Date d'inscription
dimanche 18 février 2001
Statut
Membre
Dernière intervention
20 mai 2011
15
22 févr. 2011 à 21:14
22 févr. 2011 à 21:14
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 ...
crapoulou
Messages postés
28160
Date d'inscription
mercredi 28 novembre 2007
Statut
Modérateur, Contributeur sécurité
Dernière intervention
21 mai 2024
7 998
23 févr. 2011 à 17:23
23 févr. 2011 à 17:23
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.
luki31
Messages postés
68
Date d'inscription
mardi 22 février 2011
Statut
Membre
Dernière intervention
14 mai 2011
2
23 févr. 2011 à 17:35
23 févr. 2011 à 17:35
Merci !!!! Vous m'aidez enomémant ! Maintenent je vais tester le tout, j'ai juste une petite question, ou je dois mettre la "fonction"?
crapoulou
Messages postés
28160
Date d'inscription
mercredi 28 novembre 2007
Statut
Modérateur, Contributeur sécurité
Dernière intervention
21 mai 2024
7 998
23 févr. 2011 à 17:37
23 févr. 2011 à 17:37
La question à se poser :
- As-tu vraiment de nommer des fonctions ? (Oui si tu réutilises ce code plusieurs fois dans ta page).
- Si oui, nomme toutes tes fonctions en haut de code et appelle les ensuite.
- Si tu n'as pas besoin de fonction, saisis juste le code de la fonction dans le case:
- As-tu vraiment de nommer des fonctions ? (Oui si tu réutilises ce code plusieurs fois dans ta page).
- Si oui, nomme toutes tes fonctions en haut de code et appelle les ensuite.
- Si tu n'as pas besoin de fonction, saisis juste le code de la fonction dans le case:
luki31
Messages postés
68
Date d'inscription
mardi 22 février 2011
Statut
Membre
Dernière intervention
14 mai 2011
2
23 févr. 2011 à 17:42
23 févr. 2011 à 17:42
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; }
crapoulou
Messages postés
28160
Date d'inscription
mercredi 28 novembre 2007
Statut
Modérateur, Contributeur sécurité
Dernière intervention
21 mai 2024
7 998
23 févr. 2011 à 17:46
23 févr. 2011 à 17:46
Non, la fonction passe avant le switch.
Globalement, cela donne ceci :
- Fonctions
- Switch
- case 1
-instruction 1
-instruction 2
-Fonction1 appelée
- Fin case 1
- case 2
-instruction 1
- Fin case 2
- case 3
-instruction 1
-Fonction2
- Fin case 3
Globalement, cela donne ceci :
- Fonctions
- Switch
- case 1
-instruction 1
-instruction 2
-Fonction1 appelée
- Fin case 1
- case 2
-instruction 1
- Fin case 2
- case 3
-instruction 1
-Fonction2
- Fin case 3
luki31
Messages postés
68
Date d'inscription
mardi 22 février 2011
Statut
Membre
Dernière intervention
14 mai 2011
2
23 févr. 2011 à 17:57
23 févr. 2011 à 17:57
Que signifie "instruction" et "Fonction appelée" ?
crapoulou
Messages postés
28160
Date d'inscription
mercredi 28 novembre 2007
Statut
Modérateur, Contributeur sécurité
Dernière intervention
21 mai 2024
7 998
Modifié par crapoulou le 23/02/2011 à 18:16
Modifié par crapoulou le 23/02/2011 à 18:16
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.
luki31
Messages postés
68
Date d'inscription
mardi 22 février 2011
Statut
Membre
Dernière intervention
14 mai 2011
2
23 févr. 2011 à 18:53
23 févr. 2011 à 18:53
Je suis vraiment dessolé mais mon niveau est vraiment trop bas pour faire cela...
Je comprend rien
Je comprend rien
crapoulou
Messages postés
28160
Date d'inscription
mercredi 28 novembre 2007
Statut
Modérateur, Contributeur sécurité
Dernière intervention
21 mai 2024
7 998
23 févr. 2011 à 18:59
23 févr. 2011 à 18:59
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 ?
luki31
Messages postés
68
Date d'inscription
mardi 22 février 2011
Statut
Membre
Dernière intervention
14 mai 2011
2
23 févr. 2011 à 19:03
23 févr. 2011 à 19:03
Je comprend pas le "switch"
crapoulou
Messages postés
28160
Date d'inscription
mercredi 28 novembre 2007
Statut
Modérateur, Contributeur sécurité
Dernière intervention
21 mai 2024
7 998
23 févr. 2011 à 19:15
23 févr. 2011 à 19:15
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.
luki31
Messages postés
68
Date d'inscription
mardi 22 février 2011
Statut
Membre
Dernière intervention
14 mai 2011
2
23 févr. 2011 à 19:38
23 févr. 2011 à 19:38
J'ai bien compris cela mais je sais pas ou il faut mettre la fonction pour calculer
crapoulou
Messages postés
28160
Date d'inscription
mercredi 28 novembre 2007
Statut
Modérateur, Contributeur sécurité
Dernière intervention
21 mai 2024
7 998
23 févr. 2011 à 20:47
23 févr. 2011 à 20:47
Tu la met tout en haut de ton code.
Essaye et dis moi ce que ça donne.
Essaye et dis moi ce que ça donne.
luki31
Messages postés
68
Date d'inscription
mardi 22 février 2011
Statut
Membre
Dernière intervention
14 mai 2011
2
23 févr. 2011 à 21:17
23 févr. 2011 à 21:17
J'ai tout tester mais ca ne marche toujours pas ... Pourriez vous me donner quelque ligne en exemple avec mon code ? Merci
minalud
Messages postés
91
Date d'inscription
lundi 10 janvier 2011
Statut
Membre
Dernière intervention
4 janvier 2013
8
23 févr. 2011 à 20:08
23 févr. 2011 à 20:08
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) ...
crapoulou
Messages postés
28160
Date d'inscription
mercredi 28 novembre 2007
Statut
Modérateur, Contributeur sécurité
Dernière intervention
21 mai 2024
7 998
23 févr. 2011 à 21:42
23 févr. 2011 à 21:42
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>
luki31
Messages postés
68
Date d'inscription
mardi 22 février 2011
Statut
Membre
Dernière intervention
14 mai 2011
2
23 févr. 2011 à 22:21
23 févr. 2011 à 22:21
Un très grand merci a toi !! Je pourrais enfin faire des calculs un peu plus difficile que ca !
Lukas
Lukas
crapoulou
Messages postés
28160
Date d'inscription
mercredi 28 novembre 2007
Statut
Modérateur, Contributeur sécurité
Dernière intervention
21 mai 2024
7 998
23 févr. 2011 à 22:46
23 févr. 2011 à 22:46
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.
luki31
Messages postés
68
Date d'inscription
mardi 22 février 2011
Statut
Membre
Dernière intervention
14 mai 2011
2
Modifié par crapoulou le 24/02/2011 à 15:55
Modifié par crapoulou le 24/02/2011 à 15:55
Je sais que cela n'est pas extraordinaire mais apres je voudrais resoudre des equations comme 4x + 2 = 7x - 12 (pour trouver x )
(Site supprimé, Modération CCM)
(Site supprimé, Modération CCM)
crapoulou
Messages postés
28160
Date d'inscription
mercredi 28 novembre 2007
Statut
Modérateur, Contributeur sécurité
Dernière intervention
21 mai 2024
7 998
24 févr. 2011 à 15:56
24 févr. 2011 à 15:56
luki, merci de ne pas tout mélanger.
Si tu as un souci d'hébergement, ce un nouveau topic à ce propos.
De plus, merci de ne pas faire de publicité pour ton site ici.
Pour les équations, aucune idée, à toi de trouver l'algorithme.
Si tu as un souci d'hébergement, ce un nouveau topic à ce propos.
De plus, merci de ne pas faire de publicité pour ton site ici.
Pour les équations, aucune idée, à toi de trouver l'algorithme.
floverdevel
Messages postés
121
Date d'inscription
dimanche 18 février 2001
Statut
Membre
Dernière intervention
20 mai 2011
15
24 févr. 2011 à 02:18
24 févr. 2011 à 02:18
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">
crapoulou
Messages postés
28160
Date d'inscription
mercredi 28 novembre 2007
Statut
Modérateur, Contributeur sécurité
Dernière intervention
21 mai 2024
7 998
24 févr. 2011 à 14:12
24 févr. 2011 à 14:12
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>
22 févr. 2011 à 20:31
tu devrais tester isset en premier car si c'est false ça ne sert à rien de tester si la valeur est 1 ...