boucle if

hagelslag
Invité n'ayant pas de compte PHPfrance

21 déc. 2011, 22:44

Bonjour,

je rencontre quelques soucis dans un code qui me paraissait pourtant simple de prime abord pour le néophite que je suis en php.

Je vérifie que les champs de formulaire sont remplis ou vides et, pour tester, je renvoie un"echo".
Curieusement, certaines conditions sont bien vérifiées et l'écho s'affiche correctement, mais d'autres renvoie un echo incorrect d'une autre condition.
Il me semble pourtant que l'ensemble des elseif sont tous identiques, si vous pouvez me donner votre avis, merci.

Code : Tout sélectionner

<?php include('base/connexion_base.php'); $nom_acte = $_POST['nom_acte']; $checkbox_naissance = $_POST['checkbox_naissance']; $checkbox_mariage = $_POST['checkbox_mariage']; $checkbox_deces = $_POST['checkbox_deces']; $ville_acte = $_POST['ville_acte']; $departementacte = $_POST['departementacte']; // si les checkbox sont vides if(empty($checkbox_naissance) && empty($checkbox_mariage) && empty($checkbox_deces)) { echo "<font color=\"red\">Merci de cocher une table pour lancer une recherche.</font>"; exit; } // si le nom, la ville et le département sont vides elseif(empty($nom_acte) && empty($ville_acte) && empty($departementacte)) { echo "<font color=\"red\">Un minimum d'informations svp</font>"; exit; } //***************************************************************************// // si le nom est rempli, mais la ville et le département sont vides**********// //***************************************************************************// elseif (isset($nom_acte) && empty($ville_acte) && empty($departementacte)) { echo "<font color=\"red\">Nom remplis, ville et département vide</font>"; exit; } //***************************************************************************// // si le nom et le département sont remplis, la ville est vide***************// //***************************************************************************// elseif (isset($nom_acte) && empty($ville_acte) && isset($departementacte)) { echo "<font color=\"red\">Nom et Ville remplis, département vide</font>"; exit; } //***************************************************************************// // si le nom est vide, et la ville et le département sont remplis************// //***************************************************************************// elseif (empty($nom_acte) && isset($ville_acte) && isset($departementacte)) { echo "<font color=\"red\">Nom vide, Ville et département sont remplis</font>"; exit; } //***************************************************************************// // si le nom et la ville sont vides, département est remplis*****************// //***************************************************************************// elseif (empty($nom_acte) && empty($ville_acte) && isset($departementacte)) { echo "<font color=\"red\">Nom vide et Ville sont vides, département est rempli</font>"; exit; } //***************************************************************************// // si le nom et le département sont vides et la ville est remplie************// //***************************************************************************// elseif (empty($nom_acte) && isset($ville_acte) && empty($departementacte)) { echo "<font color=\"red\">Nom et département vide, ville remplis</font>"; exit; } //***************************************************************************// // si le nom et la ville sont remplis, mais le département est vide**********// //***************************************************************************// elseif (isset($nom_acte) && isset($ville_acte) && empty($departementacte)) { echo "<font color=\"red\">Nom et Ville remplis, département vide</font>"; exit; } //***************************************************************************// // si le nom, la ville et le département sont remplis************************// //***************************************************************************// elseif (isset($nom_acte) && isset($ville_acte) && isset($departementacte)) { echo "<font color=\"red\">Nom, Ville et département remplis</font>"; exit; } ?>

Eléphanteau du PHP | 22 Messages

21 déc. 2011, 23:43

Bonsoir,

T'es commentaires par rapport au code sont mal formulé.

isset() Test si une variable à été précédemment définit (créé), si la variable n'a pas été créé, isset() te renverra false.
empty() Test si la variable est vide.

faq-tutoriels/isset-empty-null-sont-sur ... 49889.html

ViPHP
ViPHP | 1996 Messages

22 déc. 2011, 00:03

empty() Test si la variable est vide.l
Pas que...
En fait empty te fait aussi un isset pour vérifier si la variable existe. Si la variable n'existe pas empty te renverra FALSE.
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphanteau du PHP | 22 Messages

22 déc. 2011, 00:33

Bonsoir Aureusms,

Je viens de faire un test :
if (empty($e))
echo $e;
Me retourne une erreur de variable non définie et ne renvoi pas false.
Après je suis loin d'être un pro en PHP.

hagelslag
Invité n'ayant pas de compte PHPfrance

22 déc. 2011, 10:23

Merci à tous pour vos retours.
Vous m'avez mis sur la voie pour chercher une alternative à mon code.
J'ai donc mixé les vides (empty) et non vides (!empty)
Celà fonctionne parfaitement même si nul doute que l'on peut faire plus propre, je reste à l'écoute.

Voici le nouveau code

Code : Tout sélectionner

// si les checkbox sont vides if(empty($checkbox_naissance) && (empty($checkbox_mariage)) && (empty($checkbox_deces))) { echo "<font color=\"red\">Merci de cocher une table pour lancer une recherche.</font>"; exit; } // si le nom, la ville et le département sont vides elseif(empty($nom_acte) && (empty($ville_acte)) && (empty($departementacte))) { echo "<font color=\"red\">Un minimum d'informations svp</font>"; exit; } // si le nom est rempli, mais la ville et le département sont vides**********// elseif(!empty($nom_acte) && (empty($ville_acte)) && (empty($departementacte))) { echo "<font color=\"red\">Nom remplis, ville et département vide</font>"; exit; } // si le nom et le département sont remplis, la ville est vide***************// elseif(!empty($nom_acte) && (empty($ville_acte)) && (!empty($departementacte))) { echo "<font color=\"red\">Nom et département remplis, ville vide</font>"; exit; } // si le nom est vide, et la ville et le département sont remplis************// elseif(empty($nom_acte) && (!empty($ville_acte)) && (!empty($departementacte))) { echo "<font color=\"red\">Nom vide, Ville et département sont remplis</font>"; exit; } // si le nom et la ville sont vides, département est remplis*****************// elseif(empty($nom_acte) && (empty($ville_acte)) && (!empty($departementacte))) { echo "<font color=\"red\">Nom vide et Ville sont vides, département est rempli</font>"; exit; } // si le nom et le département sont vides et la ville est remplie************// elseif(empty($nom_acte) && (!empty($ville_acte)) && (empty($departementacte))) { echo "<font color=\"red\">Nom et département vide, ville remplis</font>"; exit; } // si le nom et la ville sont remplis, mais le département est vide**********// elseif(!empty($nom_acte) && (!empty($ville_acte)) && (empty($departementacte))) { echo "<font color=\"red\">Nom et Ville remplis, département vide</font>"; exit; } // si le nom, la ville et le département sont remplis************************// elseif(!empty($nom_acte) && (!empty($ville_acte)) && (!empty($departementacte))) { echo "<font color=\"red\">Nom, Ville et département remplis</font>"; exit; }

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

22 déc. 2011, 10:36

Bonsoir Aureusms,

Je viens de faire un test :
if (empty($e))
echo $e;
Me retourne une erreur de variable non définie et ne renvoi pas false.
Après je suis loin d'être un pro en PHP.
si l'on réfléchie à ton code tu fait
- si la variable $e est vide ou n'existe pas (rappelons que empty c'est isset + test de contenue)
- J'affiche la variable ....

c'est donc normal que tu ais une erreur.
empty retour true lorsque la variable
- n'existe pas
- contient zéro
- contient null
- contient false

la donc de la fonction empty pour plus d'info :)

le bon test est
<?php
if (!empty($e)) 
    echo $e;
?>
@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 22 Messages

22 déc. 2011, 11:41

Merci moogli pour l'éclaircissement.
Je l'avais pourtant dis que j'étais pas un pro en PHP... :lol: fallait que je face une erreur sinon ce n'était pas drôle !!!

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

22 déc. 2011, 11:49

:mrgreen: :mrgreen: :mrgreen: :mrgreen:
Il en faut peu pour être heureux ......

Mammouth du PHP | 2278 Messages

22 déc. 2011, 15:43

<input type="text" name="usrname" required="required" />
mériterait des tests plus approfondis que ceux que j'ai faits.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD