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
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.

<?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:

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
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
0
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 à 20:31
ton if est à l'envers.
if($_POST['choix'] == 1 AND isset($_POST['choix'])) { 

tu devrais tester isset en premier car si c'est false ça ne sert à rien de tester si la valeur est 1 ...
0
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
il te manque un = dans tes tests dans les if ;)

if($_POST['choix'] == 1) {
}
0
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
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);
		}	
	
?>
0
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
Salut,

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 !
0
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
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
0

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
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 ...
0
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
Utilisation du switch case :
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.
0
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
Merci !!!! Vous m'aidez enomémant ! Maintenent je vais tester le tout, j'ai juste une petite question, ou je dois mettre la "fonction"?
0
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
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:
0
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
Je suis confu ^^
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;
}
0
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
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
0
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
Que signifie "instruction" et "Fonction appelée" ?
0
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
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 :
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.
0
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
Je suis vraiment dessolé mais mon niveau est vraiment trop bas pour faire cela...
Je comprend rien
0
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
0
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
Je comprend pas le "switch"
0
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
Tu as une variable $toto qui vaut soit 1, soit 2, soit 3, soit 4.
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.
0
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
J'ai bien compris cela mais je sais pas ou il faut mettre la fonction pour calculer
0
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
Tu la met tout en haut de ton code.
Essaye et dis moi ce que ça donne.
0
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
J'ai tout tester mais ca ne marche toujours pas ... Pourriez vous me donner quelque ligne en exemple avec mon code ? Merci
0
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
Bonjour,
juste un détail...

si tes options ont comme value "choix1", "choix2"... tes if doivent porter sur:

if($_POST['choix'] == 1) ...
0
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
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, ...

<?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>
0
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
Un très grand merci a toi !! Je pourrais enfin faire des calculs un peu plus difficile que ca !

Lukas
0
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
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 :

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.
0
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
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)
0
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
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.
0
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
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">
0
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
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>
0