Insérer une Instruction If else dans une instruction existante
Fermé
max-jacob
Messages postés
28
Date d'inscription
jeudi 19 octobre 2017
Statut
Membre
Dernière intervention
23 mai 2020
-
Modifié le 22 oct. 2017 à 17:15
henkan Messages postés 342 Date d'inscription jeudi 16 février 2012 Statut Membre Dernière intervention 22 octobre 2017 - 22 oct. 2017 à 19:21
henkan Messages postés 342 Date d'inscription jeudi 16 février 2012 Statut Membre Dernière intervention 22 octobre 2017 - 22 oct. 2017 à 19:21
A voir également:
- Insérer une Instruction If else dans une instruction existante
- Insérer une vidéo dans powerpoint - Guide
- Insérer une liste déroulante excel - Guide
- Insérer signature word - Guide
- Insérer une image dans word sans bouger le texte - Guide
- Comment insérer une table des matières dans word - Guide
4 réponses
NHenry
Messages postés
15163
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
1 novembre 2024
345
22 oct. 2017 à 17:15
22 oct. 2017 à 17:15
Déjà il faut doubler ton = pour tester l'égalité
Ensuite, elseif
Ensuite, elseif
henkan
Messages postés
342
Date d'inscription
jeudi 16 février 2012
Statut
Membre
Dernière intervention
22 octobre 2017
29
22 oct. 2017 à 17:18
22 oct. 2017 à 17:18
Bonjour,
il est possible de faire une instruction else if, qui revient à remettre un if dans un else, mais est beaucoup plus propre.
Tu peux donc tester si $etat vaut 0 ou 1, et sinon écrire aucune données.
A noter, que le code donné ne marchera pas comme voulu, car dans ton if, tu écris :
Pour tester une égalité, il te faut un double égal (==) ou un triple (===). Le double ou triple égale fait une instruction logique : est-ce que a est égale à b ? (Avec pour différence que le triple égal renvoie true seulement si le type de a est le même que le type de b). Tandis qu'un simple égale fait : a prend la valeur b.
Pour revenir à ton code, tu peux faire cela :
il est possible de faire une instruction else if, qui revient à remettre un if dans un else, mais est beaucoup plus propre.
Tu peux donc tester si $etat vaut 0 ou 1, et sinon écrire aucune données.
A noter, que le code donné ne marchera pas comme voulu, car dans ton if, tu écris :
if ($etat = 0)Or ce code, même dans un if, donne la valeur 0 à la variable $etat.
Pour tester une égalité, il te faut un double égal (==) ou un triple (===). Le double ou triple égale fait une instruction logique : est-ce que a est égale à b ? (Avec pour différence que le triple égal renvoie true seulement si le type de a est le même que le type de b). Tandis qu'un simple égale fait : a prend la valeur b.
Pour revenir à ton code, tu peux faire cela :
if ($etat == 0)
echo "La solution incorrecte";
else if ($etat == 1)
echo "La solution est correcte";
else
echo "Aucune données";
max-jacob
Messages postés
28
Date d'inscription
jeudi 19 octobre 2017
Statut
Membre
Dernière intervention
23 mai 2020
22 oct. 2017 à 17:29
22 oct. 2017 à 17:29
J'obtiens un message d'erreur avec ce code:
<?php
if ($etat == 0) // Le message d'erreur indique cette ligne.
echo "La solution incorrecte";
else if ($etat == 1)
echo "La solution est correcte";
else
echo "Aucune données";
?>
NB: La valeur 0 et 1 est insérer dynamiquement avec un echo php depuis une base de donnée, donc pas la peine de faire deux instructions avec le 0 et le 1. Mais plutôt ajouter une instruction qui dit: si la valeur est différent de 0 et de 1 affiché aucune donnée.
<?php
if ($etat == 0) // Le message d'erreur indique cette ligne.
echo "La solution incorrecte";
else if ($etat == 1)
echo "La solution est correcte";
else
echo "Aucune données";
?>
NB: La valeur 0 et 1 est insérer dynamiquement avec un echo php depuis une base de donnée, donc pas la peine de faire deux instructions avec le 0 et le 1. Mais plutôt ajouter une instruction qui dit: si la valeur est différent de 0 et de 1 affiché aucune donnée.
henkan
Messages postés
342
Date d'inscription
jeudi 16 février 2012
Statut
Membre
Dernière intervention
22 octobre 2017
29
22 oct. 2017 à 17:40
22 oct. 2017 à 17:40
Tu peux alors mettre dans ton instruction if :
if ($etat != 0 || $etat != 1)
echo "Aucune données";
max-jacob
Messages postés
28
Date d'inscription
jeudi 19 octobre 2017
Statut
Membre
Dernière intervention
23 mai 2020
>
henkan
Messages postés
342
Date d'inscription
jeudi 16 février 2012
Statut
Membre
Dernière intervention
22 octobre 2017
22 oct. 2017 à 17:59
22 oct. 2017 à 17:59
J'ai défini une variable donc plus de message d'erreur. En effet votre code résout le problème mais les valeurs sont saisis depuis un formulaire. Voici le vrai code source:
<?php
$etat = "calcul";
if ($etat == $row_transac['zotikwa_paye'])
{
echo "Ce Transfert est déja payé. Ne procédez pas au Paiement";
}
else
echo "Ce Transfert nest pas encore payer. <br><a href=\"pay.php?id=".$row_transac['toka_id']."\">>>Cliquer ici pour procedez au paiement<<</a>";
?>
Il s'agit d'un système de transfert d'argent basé sur une application web du type western-union. Le problème avec mon système c'est qu'un bénéficiaire peut se rendre dans plusieurs agences et être servit avec un seul code de transfert.
Le système marche a perfection,
- si on entre un code de transfert impayé, le système l'indique à l'agent qui doit le payer avec un lien vers la page de paiement.
- si un transfert est déjà payé, le système indique clairement à l'agent que le transfert portant ce code est déjà payé et qu'il ne doit pas procéder au paiement, le lien vers la page de paiement ne sortira pas. Tout est OK jusque là.
- Maintenant le problème se trouve ici: il peut se trouver qu'une personne se trompe et nous apporte un code de transfert issu d'un autre système de transfert du genre: western-union, money-gram, etc Bref un code qui n'est pas présent dans la base de donnée, le système n'affiche rien et indique que "le transfert n'est pas payer que l'agent doit proceder au paiement" or ce qui est un Bug.
Mon système doit clairement indiquer "AUCUNE DONNEES"
Comme vous pouvez le voir dans le code source ci-haut, les valeurs (code de transfert que je fesait le test avec 0 et 1) sont insérer dynamiquement donc pas la peine de faire des instruction séparer mais juste une instruction qui affiche "AUCUNE DONNEE" lorsque la valeur saisi ne figure pas dans la base de données.
Désolé si j'ai pas bien exposé la situation au départ.
<?php
$etat = "calcul";
if ($etat == $row_transac['zotikwa_paye'])
{
echo "Ce Transfert est déja payé. Ne procédez pas au Paiement";
}
else
echo "Ce Transfert nest pas encore payer. <br><a href=\"pay.php?id=".$row_transac['toka_id']."\">>>Cliquer ici pour procedez au paiement<<</a>";
?>
Il s'agit d'un système de transfert d'argent basé sur une application web du type western-union. Le problème avec mon système c'est qu'un bénéficiaire peut se rendre dans plusieurs agences et être servit avec un seul code de transfert.
Le système marche a perfection,
- si on entre un code de transfert impayé, le système l'indique à l'agent qui doit le payer avec un lien vers la page de paiement.
- si un transfert est déjà payé, le système indique clairement à l'agent que le transfert portant ce code est déjà payé et qu'il ne doit pas procéder au paiement, le lien vers la page de paiement ne sortira pas. Tout est OK jusque là.
- Maintenant le problème se trouve ici: il peut se trouver qu'une personne se trompe et nous apporte un code de transfert issu d'un autre système de transfert du genre: western-union, money-gram, etc Bref un code qui n'est pas présent dans la base de donnée, le système n'affiche rien et indique que "le transfert n'est pas payer que l'agent doit proceder au paiement" or ce qui est un Bug.
Mon système doit clairement indiquer "AUCUNE DONNEES"
Comme vous pouvez le voir dans le code source ci-haut, les valeurs (code de transfert que je fesait le test avec 0 et 1) sont insérer dynamiquement donc pas la peine de faire des instruction séparer mais juste une instruction qui affiche "AUCUNE DONNEE" lorsque la valeur saisi ne figure pas dans la base de données.
Désolé si j'ai pas bien exposé la situation au départ.
henkan
Messages postés
342
Date d'inscription
jeudi 16 février 2012
Statut
Membre
Dernière intervention
22 octobre 2017
29
22 oct. 2017 à 19:21
22 oct. 2017 à 19:21
Pour vérifier qu'un code entré n'est pas dans ta base de données, tu peux exécuter une requête SQL et vérifier comme ça
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
22 oct. 2017 à 18:01
22 oct. 2017 à 18:01
Bonjour
Dans l'idéal. .. il fautrait nous montrer ton code entier.
Dans l'idéal. .. il fautrait nous montrer ton code entier.
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
22 oct. 2017 à 18:03
22 oct. 2017 à 18:03
Et à l'avenir. ..evite de creer des doublons sur le forum...
Tu avais déjà ouvert une discussion pour cette meme question !
Tu avais déjà ouvert une discussion pour cette meme question !
max-jacob
Messages postés
28
Date d'inscription
jeudi 19 octobre 2017
Statut
Membre
Dernière intervention
23 mai 2020
>
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
22 oct. 2017 à 18:04
22 oct. 2017 à 18:04
C'est le même projet mais pas les même problèmes. J'ai retenu la remarque.
max-jacob
Messages postés
28
Date d'inscription
jeudi 19 octobre 2017
Statut
Membre
Dernière intervention
23 mai 2020
22 oct. 2017 à 18:03
22 oct. 2017 à 18:03
En effet, j'en m'en rend compte.
Merci!
Merci!
max-jacob
Messages postés
28
Date d'inscription
jeudi 19 octobre 2017
Statut
Membre
Dernière intervention
23 mai 2020
22 oct. 2017 à 17:20
22 oct. 2017 à 17:20
Bjour & merci de votre réaction. j'obtiens un message d'erreur si je double le signe égale (=)
henkan
Messages postés
342
Date d'inscription
jeudi 16 février 2012
Statut
Membre
Dernière intervention
22 octobre 2017
29
22 oct. 2017 à 17:23
22 oct. 2017 à 17:23
Quel est le message d'erreur ?
max-jacob
Messages postés
28
Date d'inscription
jeudi 19 octobre 2017
Statut
Membre
Dernière intervention
23 mai 2020
>
henkan
Messages postés
342
Date d'inscription
jeudi 16 février 2012
Statut
Membre
Dernière intervention
22 octobre 2017
22 oct. 2017 à 17:30
22 oct. 2017 à 17:30
Notice: Undefined variable: etat in C:\Program Files\EasyPHP-DevServer-14.1VC9\data\localweb\projects\postecash\test.php on line 11
La solution incorrecte
La solution incorrecte
henkan
Messages postés
342
Date d'inscription
jeudi 16 février 2012
Statut
Membre
Dernière intervention
22 octobre 2017
29
22 oct. 2017 à 17:32
22 oct. 2017 à 17:32
Le problème vient d'ailleurs, le message d'erreur stipule que la variable etat n'existe pas. Si tu copies et teste exactement le code que tu as mis dans ton premier message, cela ne marchera pas car il faut créer la variable etat.