Problème avec La condition IF qui s'execute pas
Résolu/Fermé
modemo2018
Messages postés
226
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
13 octobre 2022
-
15 juin 2020 à 11:17
Utilisateur anonyme - 18 juin 2020 à 13:16
Utilisateur anonyme - 18 juin 2020 à 13:16
A voir également:
- Problème avec La condition IF qui s'execute pas
- Excel cellule couleur si condition texte - Guide
- Condition et excel - Guide
- Php if plusieurs conditions ✓ - Forum PHP
- Couleur texte avec la fonction si - Forum Excel
12 réponses
Alvin1614
Messages postés
107
Date d'inscription
lundi 24 avril 2017
Statut
Membre
Dernière intervention
22 décembre 2021
4
15 juin 2020 à 11:33
15 juin 2020 à 11:33
Bonjour,
Je ne code absolument pas en PHP mais peut-être que sur un malentendu, ça peut marcher.
Essaye peut-être avec une de ces syntaxes :
Alors, ensuite, il y a ça :
Remplace tes = par des == ou même par des === s'il s'agit d'une égalité stricte. Au niveau des
Si tu veux dire ou remplace par
Je ne sais pas si ma réponse sera utile... Si je peut encore aider, en tout cas, n'hésite pas.
Cordialement,
Je ne code absolument pas en PHP mais peut-être que sur un malentendu, ça peut marcher.
<?php if($mois1 != 'mai') ?>Ici, si je comprends bien, tu vérifies si $mois1 est différent de mai .
Essaye peut-être avec une de ces syntaxes :
<?php if($mois1 !== 'mai') ?>
<?php if($mois1 <> 'mai') ?>
Alors, ensuite, il y a ça :
<?php $mois ='juin'; $mois2 = trim($mois);.
Remplace tes = par des == ou même par des === s'il s'agit d'une égalité stricte. Au niveau des
;, je ne sais pas ce que ça signifie...
Si tu veux dire ou remplace par
||, si tu veux dire et, remplace par
&&. Peut-être que ça veut dire autre chose, mais comme je viens de le dire, je ne code pas du tout en PHP.
Je ne sais pas si ma réponse sera utile... Si je peut encore aider, en tout cas, n'hésite pas.
Cordialement,
modemo2018
Messages postés
226
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
13 octobre 2022
15 juin 2020 à 11:48
15 juin 2020 à 11:48
cette partie du code
j'utilise '=' pour affecter le trim($mois); dans $mois2, si je met '==', cela signifie égale et qui n'a pas de sens vu la partie de mon code.
Le 'ou' que j'ai mis est or mon espace code, c'est juste dans l'explication de mon problème
À ce que je sache dans le PHP quand on veut signifier different on écrit '' != ''
Je precise que les autres pages de j'ai programmé je n'ai pas ce problème, c'est juste sur cette partie de mon code
<?php $mois ='juin'; $mois2 = trim($mois); ?>
j'utilise '=' pour affecter le trim($mois); dans $mois2, si je met '==', cela signifie égale et qui n'a pas de sens vu la partie de mon code.
Le 'ou' que j'ai mis est or mon espace code, c'est juste dans l'explication de mon problème
À ce que je sache dans le PHP quand on veut signifier different on écrit '' != ''
Je precise que les autres pages de j'ai programmé je n'ai pas ce problème, c'est juste sur cette partie de mon code
Alvin1614
Messages postés
107
Date d'inscription
lundi 24 avril 2017
Statut
Membre
Dernière intervention
22 décembre 2021
4
15 juin 2020 à 11:53
15 juin 2020 à 11:53
Bon, sinon, il y a le cours d'OpenClassroom (https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/912046-les-conditions) sur les conditions. Va faire un tour dessus et vérifie tes syntaxes.
Utilisateur anonyme
15 juin 2020 à 12:12
15 juin 2020 à 12:12
Bonjour,
Ton 2ème code est-il complet ? Si je le prend tel quel et que je le colle dans mon éditeur j'ai immédiatement une alerte. L'accolade à la fin du texte semble être mal placée ?
Ton 2ème code est-il complet ? Si je le prend tel quel et que je le colle dans mon éditeur j'ai immédiatement une alerte. L'accolade à la fin du texte semble être mal placée ?
modemo2018
Messages postés
226
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
13 octobre 2022
15 juin 2020 à 12:23
15 juin 2020 à 12:23
Peut tu me renvoyé la partie où on te signale l'accolade est mal placé?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
Modifié le 15 juin 2020 à 12:36
Modifié le 15 juin 2020 à 12:36
Regarde simplement la fin du code, la balise PHP finale est située avant l'accolade.
Et la balise echo n'est pas fermée par un
Ceci est accepté par mon éditeur, mais je n'ai pas testé le code sur serveur.
Et la balise echo n'est pas fermée par un
;.
Ceci est accepté par mon éditeur, mais je n'ai pas testé le code sur serveur.
<?php echo "<a href=\"index3.php?class=nom=$nom & prenom=$prenom & ideleve=$ideleve &$class & cycle=$cycle &serie=$serie &mois=$mois &an=$annee\"";?><?php echo 'class="place"><h4>Juin</h4></a><br></div>';} ?>
modemo2018
Messages postés
226
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
13 octobre 2022
15 juin 2020 à 12:35
15 juin 2020 à 12:35
Je vois, c'est une erreur lors de ma saisi, mais sur le vrai code c'est pas comme ça
Utilisateur anonyme
Modifié le 15 juin 2020 à 13:17
Modifié le 15 juin 2020 à 13:17
En reprenant ton code à l'identique et en supprimant les echo inutiles pour debug, j'ai bien le bon comportement.
(si mois différent de mai)
(si mois == mai, rien, ta condition ne vérifie que la différence)
(si mois == juin)
Un conseil que je peux te donner, ajoute un else sur tes conditions, avec un var_dump.
(si mois différent de mai)
?mois=sdfsdfsd
=> "pas mai"
(si mois == mai, rien, ta condition ne vérifie que la différence)
?mois=mai
=> (rien, ton code ne contient aucune action sur l'égalité)
(si mois == juin)
?mois=juin
=> "pas mai juin"
<?php $mois1 = !empty($_GET['mois']) ? $_GET['mois'] : NULL; if ($mois1 != 'mai') { echo "pas mai"; } ?> <?php $mois = 'juin'; $mois2 = trim($mois); if ($mois1 == $mois2) { echo 'juin'; }
Un conseil que je peux te donner, ajoute un else sur tes conditions, avec un var_dump.
modemo2018
Messages postés
226
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
13 octobre 2022
15 juin 2020 à 13:21
15 juin 2020 à 13:21
Tel que tu l'as fait, c'est presque ce que j'ai fait, je suppose que chez toi ça marche?
Je comprend pas pourquoi chez moi ça marche pas, pourtant c'est tellement claire et facile à comprendre
Je comprend pas pourquoi chez moi ça marche pas, pourtant c'est tellement claire et facile à comprendre
Je t'ai donné le résultat du code avec les variables testées, donc oui ça marche chez moi ;-)
Je pense que ton code fonctionne, c'est peut-être ton écho qui a un souci. Mais avec un code incomplet on ne peut pas trop t'aider.
Pour debug un code c'est simple, des echo et des var_dump. Met un petit die('oui') dans ton if, ajoute un else pour afficher un autre messages. Bref, ajoute des messages pour essayer de suivre ton code. Si tu ne cherches pas à voir le contenu de tes variables tu seras limité pour comprendre le bug.
Les messages de debug à base de print("merde") ne sont pas une légende urbaine :p.
Je pense que ton code fonctionne, c'est peut-être ton écho qui a un souci. Mais avec un code incomplet on ne peut pas trop t'aider.
Pour debug un code c'est simple, des echo et des var_dump. Met un petit die('oui') dans ton if, ajoute un else pour afficher un autre messages. Bref, ajoute des messages pour essayer de suivre ton code. Si tu ne cherches pas à voir le contenu de tes variables tu seras limité pour comprendre le bug.
Les messages de debug à base de print("merde") ne sont pas une légende urbaine :p.
modemo2018
Messages postés
226
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
13 octobre 2022
16 juin 2020 à 11:10
16 juin 2020 à 11:10
Quelqu'un pourrai t-il m'aidé sur ce problème, je n'arrive toujours pas à retrouvé où se situe le problème avec ma syntaxe avec IF ?
jordane45
Messages postés
38289
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 novembre 2024
4 703
16 juin 2020 à 14:33
16 juin 2020 à 14:33
Bonjour,
Tu indiques que ça ne t'affiche pas ce qu'il devrait.... et donc.. qu'est-ce que ça t'affiche au juste ?
Je constate, dans tes liens, que tu as mis des espaces..... il ne faut pas.
Et certains variables sont mal placées...
Il faut aussi éviter d'ouvrir/fermer les balises php en permanence... c'est source d'erreur.
En gros, ton code devrait ressembler à ça
Si tes soucis persistent malgré ce code corrigé , pourrais tu faire, avant ton IF, un
et nous montrer ce que ça contient ?
Tu indiques que ça ne t'affiche pas ce qu'il devrait.... et donc.. qu'est-ce que ça t'affiche au juste ?
Je constate, dans tes liens, que tu as mis des espaces..... il ne faut pas.
Et certains variables sont mal placées...
Il faut aussi éviter d'ouvrir/fermer les balises php en permanence... c'est source d'erreur.
En gros, ton code devrait ressembler à ça
<?php $mois1 = !empty ( $_GET['mois'] ) ? trim($_GET['mois']) : NULL; $cycle = !empty($_GET['cycle']) ? trim($_GET['cycle']) : NULL; $class= !empty($_GET['class']) ? trim($_GET['class']) : NULL; $mois2 ='juin'; if($mois1 != 'mai') { echo '<div class="col-md-6 col-lg-4 mb-5 mb-lg-4" data-aos="fade" data-aos-delay="100">'; echo '<a href="index3.php?class='.$class.'&cycle='.$cycle.'&serie='.$serie.'&mois='.$mois.'&an='.$annee.'" class="place"><h4>Mai</h4></a>'; echo '<br></div>'; if($mois1 == $mois2) { echo'<div class="col-md-6 col-lg-4 mb-5 mb-lg-4" data-aos="fade" data-aos-delay="100">'; echo '<a href="index3.php?class='.$class.'&nom='.$nom.'&prenom='.$prenom.'&ideleve='.$ideleve.'&cycle='.$cycle.'&serie='.$serie.'&mois='.$mois.'&an='.$annee.'" class="place"><h4>Juin</h4></a>'; echo '<br></div>'; }
Si tes soucis persistent malgré ce code corrigé , pourrais tu faire, avant ton IF, un
print_r($_GET);
et nous montrer ce que ça contient ?
modemo2018
Messages postés
226
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
13 octobre 2022
17 juin 2020 à 13:23
17 juin 2020 à 13:23
Voici ce que
Array ( [nom] => Loudila [prenom] => celeste [mois] => juin [an] => 2020 )
Mais le problème c'est que la condition IF ne marche toujours.
Voici le code que j'ai fait
Aulieu de ne rien afficher il affiche le mois de 'JUIN', normalement il devait pas afficher le mois 'JUIN'
print_r($_GET);affiche:
Array ( [nom] => Loudila [prenom] => celeste [mois] => juin [an] => 2020 )
Mais le problème c'est que la condition IF ne marche toujours.
Voici le code que j'ai fait
<?php $mois1 = !empty ( $_GET['mois'] ) ? trim($_GET['mois']) : NULL; ?> <?php $mois = 'mai'; if($mois1 != 'mai') { echo'<div class="col-md-6 col-lg-4 mb-5 mb-lg-4" data-aos="fade" data-aos-delay="100">';$cycle=$_GET['cycle']; $class= $_GET['class'];?> <?php echo "<a href=\"index3.php?class=$class & cycle=$cycle &serie=$serie &mois=$mois &an=$annee\"";?><?php echo ' class="place"><h4>Mai</h4></a><br></div>'; } ?> <?php $mois = 'juin'; if($mois1 != 'juin') { echo'<div class="col-md-6 col-lg-4 mb-5 mb-lg-4" data-aos="fade" data-aos-delay="100">'; $cycle=$_GET['cycle']; $class= $_GET['class'];?> <?php echo "<a href=\"index3.php?class=nom=$nom & prenom=$prenom & ideleve=$ideleve &$class & cycle=$cycle &serie=$serie &mois=$mois &an=$annee\"";?><?php echo 'class="place"><h4>Juin</h4></a><br></div>';}
Aulieu de ne rien afficher il affiche le mois de 'JUIN', normalement il devait pas afficher le mois 'JUIN'
jordane45
Messages postés
38289
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 novembre 2024
4 703
17 juin 2020 à 14:40
17 juin 2020 à 14:40
Déjà.. tu n'a pas appliqué ce que je t'ai indiqué concernant l'écriture de ton code.
Ensuite, les variables class et cycle ne sont pas dans ton GET ...
Peux tu tester ce code et nous indiquer si ça fait ce que tu souhaites ou pas ... en epxliquant ( via une capture d'écran éventuellement ) exactement ce que ça t'affiche et ce que toi tu aimerais avoir...
Ensuite, les variables class et cycle ne sont pas dans ton GET ...
Peux tu tester ce code et nous indiquer si ça fait ce que tu souhaites ou pas ... en epxliquant ( via une capture d'écran éventuellement ) exactement ce que ça t'affiche et ce que toi tu aimerais avoir...
<?php $mois1 = !empty ( $_GET['mois'] ) ? trim($_GET['mois']) : NULL; $cycle = !empty($_GET['cycle']) ? trim($_GET['cycle']) : NULL; $class= !empty($_GET['class']) ? trim($_GET['class']) : NULL; //le temps des tests echo "<pre>"; print_r($_GET); echo "</pre>"; if($mois1 != 'mai') { echo '<div class="col-md-6 col-lg-4 mb-5 mb-lg-4" data-aos="fade" data-aos-delay="100">'; // d'où vient ta variable serie ? echo '<a href="index3.php?class='.$class.'&cycle='.$cycle.'&serie='.$serie.'&mois='.$mois.'&an='.$annee.'" class="place"> <h4>Mai</h4> </a>'; echo '<br></div>'; } if($mois1 != 'juin') { echo'<div class="col-md-6 col-lg-4 mb-5 mb-lg-4" data-aos="fade" data-aos-delay="100">'; // d'où viennent tes variables nom, prenom, serie et ideleve ?? echo '<a href="index3.php?class='.$class.'&cycle='.$cycle.'&serie='.$serie.'&mois='.$mois.'&an='.$annee.'&nom='.$nom.'&prenom='.$prenom.'&ideleve='.$ideleve.'" class="place"> <h4>Juin</h4> </a>'; echo '<br></div>'; }
modemo2018
Messages postés
226
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
13 octobre 2022
Modifié le 18 juin 2020 à 11:14
Modifié le 18 juin 2020 à 11:14
Merci pour l'aide cher Jordan45, j'ai adapté ton code à mon code, voici :
Voici les captures des resultats:
En haut de l'image s'affiche le
Vu que c'est le resultat que mois de Juin qui a été demandé, la condition IF a pour but de ne plus afficher le mois dont les resultats sont afficher mais je comprend pas pourquoi ma condition IF syntaxiquement correct ne s'execute pas selon la condition que j'ai ecris.
Voilà mon grand problème
EDIT : Correction des balises de code. Le langage, ici .. c'est le PHP ( pas le basic !! )
<?php $mois1 = !empty ( $_GET['mois'] ) ? trim($_GET['mois']) : NULL; $cycle = !empty($_GET['cycle']) ? trim($_GET['cycle']) : NULL; $class= !empty($_GET['class']) ? trim($_GET['class']) : NULL; $serie = !empty ( $_GET['serie'] ) ? trim( $_GET['serie'] ) : NULL; echo "<pre>"; print_r($_GET); echo "</pre>"; <?php $mois = 'mai'; if($mois1 != 'mai') { echo'<div class="col-md-6 col-lg-4 mb-5 mb-lg-4" data-aos="fade" data-aos-delay="100">';$cycle=$_GET['cycle']; $class= $_GET['class'];?> <?php echo "<a href=\"index3.php?class=$class & cycle=$cycle &serie=$serie &mois=$mois &an=$annee\"";?><?php echo ' class="place"><h4>Mai</h4></a><br></div>'; } ?> <?php $mois = 'juin'; if($mois1 != 'juin') { echo'<div class="col-md-6 col-lg-4 mb-5 mb-lg-4" data-aos="fade" data-aos-delay="100">'; $cycle=$_GET['cycle']; $class= $_GET['class'];?> <?php echo "<a href=\"index3.php?class=nom=$nom & prenom=$prenom & ideleve=$ideleve &$class & cycle=$cycle &serie=$serie &mois=$mois &an=$annee\"";?><?php echo 'class="place"><h4>Juin</h4></a><br></div>';} //Les autres variables font partie du code, et il ya pas de problème avec elle ?>
Voici les captures des resultats:
En haut de l'image s'affiche le
print_r($_GET);, le mois de juin s'affiche bien, et le tableau affiché correspond bien au données de mois de Juin, signe que variable mois='juin' vu que le Print_r le confirme aussi
Vu que c'est le resultat que mois de Juin qui a été demandé, la condition IF a pour but de ne plus afficher le mois dont les resultats sont afficher mais je comprend pas pourquoi ma condition IF syntaxiquement correct ne s'execute pas selon la condition que j'ai ecris.
Voilà mon grand problème
EDIT : Correction des balises de code. Le langage, ici .. c'est le PHP ( pas le basic !! )
jordane45
Messages postés
38289
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 novembre 2024
4 703
18 juin 2020 à 11:19
18 juin 2020 à 11:19
purée.... Tu n'as rien adapté du tout !!!
Je t'ai écrit un code PROPRE ....
Sans ouvrir/fermer les balises PHP
En affichant correctement les variables avec concaténation
En ne répétant pas du bout de code inutile
En mettant des retours à a la ligne et de l'indentation pour que le code soit facilement lisible (et donc plus facilement maintenable).
Donc... encore une fois .. tu n'as clairement pas lu ce que je t'ai déjà répété deux fois !!!!
Je précise également, que dans les balises de code, il faut indiquer le langage PHP ( et non pas le basic comme tu le fais).
Pour terminer, je pense que ton souci se situe ailleurs.
Il serait bien de nous montrer le code COMPLET de ta page .... pour qu'on essaye de voir ce qui cloche.
Je t'ai écrit un code PROPRE ....
Sans ouvrir/fermer les balises PHP
En affichant correctement les variables avec concaténation
En ne répétant pas du bout de code inutile
En mettant des retours à a la ligne et de l'indentation pour que le code soit facilement lisible (et donc plus facilement maintenable).
Donc... encore une fois .. tu n'as clairement pas lu ce que je t'ai déjà répété deux fois !!!!
Je précise également, que dans les balises de code, il faut indiquer le langage PHP ( et non pas le basic comme tu le fais).
Pour terminer, je pense que ton souci se situe ailleurs.
Il serait bien de nous montrer le code COMPLET de ta page .... pour qu'on essaye de voir ce qui cloche.
@modemo2018 Je me permets également de rappeler que je t'ai demandé à plusieurs reprises, d'ajouter du code de test et des
Pour s'assurer qu'un if n'a pas fonctionné, il suffit d'ajouter un else. Le else sera forcément exécuté si la condition ne fonctionne pas. Donc en ajoutant des messages de debug, tu verras si ça a échoué !
(même si j'étais totalement passé à côté de la mauvaise écriture des liens, j'irai me fouetter avec une fibre optique... ou avec du coaxial, j'hésite encore)
else, permettant de voir et de tester l'invalidation de la condition.
Pour s'assurer qu'un if n'a pas fonctionné, il suffit d'ajouter un else. Le else sera forcément exécuté si la condition ne fonctionne pas. Donc en ajoutant des messages de debug, tu verras si ça a échoué !
(même si j'étais totalement passé à côté de la mauvaise écriture des liens, j'irai me fouetter avec une fibre optique... ou avec du coaxial, j'hésite encore)