Récupération des conditions d'un IF

Résolu
hashux Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -  
hashux Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous

Le code ci-dessous m'affichera très logiquement une erreur pour les conditions non remplies:
if(isset($A) || isset($B) || isset($C)){
echo $A;
echo $B;
echo $C;
}


Je dois donc utiliser le code suivant:
if(isset($A) || isset($B) || isset($C)){
if(isset($A)){echo $A;}
if(isset($B)){echo $B;}
if(isset($C)){echo $C;}
}

mais j'aimerais ne pas devoir revérifier chaque conditions.
Y a-t-il moyen de simplifier, de récupérer directement la ou les conditions qui ont validé le IF?

Merci pour votre aide

4 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Renomme tes checkbox en format array

par exemple :
<td><input type="checkbox" name="p1[]" value="Préservé" /></td>
<td><input type="checkbox" name="p1[]" value="Sauvé" /></td>
<td><input type="checkbox" name="p1[]" value="Valorisé" /></td>


Et regarde ensuite dans ton formulaire ce que contient $_POST['p1'] ( si en post ) ou $_GET['p1'] (si en get... )

Tu verras que tu obtiens un array avec la/les cases cochées....
Ne te reste plus qu'à boucler dessus pour faire ton affichage...
par exemple

$p1 = !empty($_POST['p1']) ? $_POST['p1'] : NULL;

if($p1){
  foreach($p1 as $V ){
     echo "<br>".$V;
  }
}


Tu n'as plus qu'à faire pareil avec p2 ...
1
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Au passage, merci de poster, à l'avenir, correctement ton code ( en indiquant le langage dans les balises de code afin d'avoir la coloration syntaxique comme dans les codes que je te donne )
Explications sur le fonctionnement des balises de code disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Merci.
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,
Si ton but est d"afficher le contenu des variable que si elles sont remplis... pas besoin de ton premier if
if(isset($A)){echo $A;}
if(isset($B)){echo $B;}
if(isset($C)){echo $C;}

Quoi qu'il en soit, il est préférable de récupérer proprement les variables avant de les utiliser...
Je t'invite à lire ceci : https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

0
hashux Messages postés 12 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour
En fait, j'ai oublié un petit bout de code :
if(isset($A) || isset($B) || isset($C)){
echo "l'utilisateur a coché la ou les cases suivantes:";
if(isset($A)){echo $A;}
if(isset($B)){echo $B;}
if(isset($C)){echo $C;}
}

J'affiche un message si 1 ou plusieurs conditions sont remplies et ensuite, la condition.
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > hashux Messages postés 12 Date d'inscription   Statut Membre Dernière intervention  
 
Tu parles de cases ...
Je suppose donc que ce sont des checkbox ....
Comment les as tu créé ?
Quel nom leur as tu donné ?
Comment les récupères tu ? En post ou en get ?
0
hashux Messages postés 12 Date d'inscription   Statut Membre Dernière intervention  
 
Oui, des checkbox que je récupère en POST
J'ai simplifié le code ici pour plus de clarté
C'est un formulaire html, les gens peuvent cocher 0, 1, 2 ou 3 cases
Elles ont chacune un nom différent : chk1 chk2 et chk3
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > hashux Messages postés 12 Date d'inscription   Statut Membre Dernière intervention  
 
y'a t'il un intérêt à ce qu'elles aient des noms différents ? Pourquoi ne pas utiliser un array ?
C'est pour ça que je t'ai demandé le code "html" de tes checkbox
0
hashux Messages postés 12 Date d'inscription   Statut Membre Dernière intervention  
 
<table><form action="send.php"><tr>
<td style="text-align:left;"><label><input type="checkbox" name="p1" value="commerces"/> Des commerces</label></td>
<td>→ <input type="text" name="ex-1" size="23" /></td>
<td><input type="checkbox" name="p1p" value="Préservé" /></td>
<td><input type="checkbox" name="p1s" value="Sauvé" /></td>
<td><input type="checkbox" name="p1v" value="Valorisé" /></td>
</tr>
<tr>
<td style="text-align:left;"><label><input type="checkbox" name="p2" value="logements"/> Des logements</label></td>
<td>→ <input type="text" name="ex-2" size="23" /></td>
<td><input type="checkbox" name="p2p" value="Préservé" /></td>
<td><input type="checkbox" name="p2s" value="Sauvé" /></td>
<td><input type="checkbox" name="p2v" value="Valorisé" /></td>
</tr>
<tr>
<td colspan="5"><hr /><input type="submit" value="Envoyer le formulaire" /> | <input type="reset" value="Effacer tout" /></td>
</tr></form></table>
0
hashux Messages postés 12 Date d'inscription   Statut Membre Dernière intervention  
 
Merci jordane45 pour ton aide.
J'essaierai d'être plus clair pour ma prochaine question ;)
0