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
Bonjour,

J'ai l'instruction ci-dessous qui fonctionne très bien en:
<?php
if ($etat = 0) //Le 0 est inséré dynamiquement.
{
echo "La solution est incorrecte";
}
else
echo "La solution est correcte";
?>



Lorsque la valeur est 0, elle affiche "La solution est incorrecte"

Lorsque la valeur est 1, elle affiche "La solution est correcte"

Combien même que j'ai prévu seulement la saisi des valeurs 1 et 2, certaine personne saisiront certainement une autre valeur que 0 et 1 dans le but peut-être d'afficher un Bug.
J'aimerais que si on saisi une valeur différent de 0 et 1, le système doit afficher "AUCUNE DONNEES".

J'ai pas pu modifier le code, merci de votre aide
A voir également:

4 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
22 oct. 2017 à 17:15
Déjà il faut doubler ton = pour tester l'égalité
Ensuite, elseif
1
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
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 :
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";
1
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
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.
0
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
Tu peux alors mettre dans ton instruction if :
if ($etat != 0 || $etat != 1)
echo "Aucune données";
0
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
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.
0
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
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
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
22 oct. 2017 à 18:01
Bonjour

Dans l'idéal. .. il fautrait nous montrer ton code entier.
1
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
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 !
0
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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
22 oct. 2017 à 18:04
C'est le même projet mais pas les même problèmes. J'ai retenu la remarque.
0
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
En effet, j'en m'en rend compte.
Merci!
0
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
Bjour & merci de votre réaction. j'obtiens un message d'erreur si je double le signe égale (=)
0
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
Quel est le message d'erreur ?
0
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
Notice: Undefined variable: etat in C:\Program Files\EasyPHP-DevServer-14.1VC9\data\localweb\projects\postecash\test.php on line 11
La solution incorrecte
0
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
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.
0