If ---> elseif condition php aidez moi !!!!

If ---> elseif condition php aidez moi !!!! - PHP - Programmation

Marsh Posté le 12-04-2008 à 02:55:02    

Salut à tout le monde
 
J'ai une petite condition qui me pose depuis quelques heures  bcp des problèmes, j'ai beau cherché je ne vois nulle part mon erreur.
J'explique, J'ai un formulaire qui renvois les valeur de 5 listes (nommées liste1, liste2, liste3..etc.) à choix multiple  et 1 radio bouton (nommé sélection)
Je recupere mes liste à choix multiple, puis après j'ai fait une condition pour afficher que les listes qui contient qqch. --> MON BLEM j'ai recupere toujours 0 !!!!!! avec cette condition de mer**   :fou:  
La solution c'est peut etre un truc trop bête, mais moi j'abandonne avec ce code.  
Merci pour votre aide  
 
 
Code php recuperation des valeurs  de mes listes à choix multiple  :
 

Code :
  1. $liste1 = $_POST['liste1'];
  2. $liste2 = $_POST['liste2'];
  3. $liste3 = $_POST['liste3'];
  4. $liste4 = $_POST['liste4'];
  5. $liste5 = $_POST['liste5'];


 
voici ma condition php If elseif qui ne marche pas!!!!!! :fou:  :fou:  :fou:  
 

Code :
  1. if ($liste1!="" || $liste1!=0){
  2.    $corps.= "<td class=\"result_mail\">$liste1</td>";
  3.   }elseif ($liste2!="" || $liste2!=0){
  4.    $corps.= "<td class=\"result_mail\">$liste2</td>";
  5.   }elseif ($liste3!="" || $liste3!=0){
  6.    $corps.= "<td class=\"result_mail\">$liste3</td>";
  7.   }elseif ($liste4!="" || $liste4!=0){
  8.    $corps.= "<td class=\"result_mail\">$liste4</td>";
  9.   }elseif($selection=1){
  10.    $corps.= "<td class=\"result_mail\">$selection</td>";
  11.   }

Reply

Marsh Posté le 12-04-2008 à 02:55:02   

Reply

Marsh Posté le 12-04-2008 à 09:21:25    

Ça veut dire quoi tu "récupères toujours 0" ? 0 liste ? Que valent $liste1 etc ? T'as essayé de les afficher pour voir ?
 
Dans tous les cas je soupçonne que t'ais pas compris fonctionne un "if"... avec ton truc il risque pas de t'afficher plus d'une ligne. :spamafote:


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 12-04-2008 à 11:58:51    

sielfried a écrit :

Ça veut dire quoi tu "récupères toujours 0" ? 0 liste ? Que valent $liste1 etc ? T'as essayé de les afficher pour voir ?

 

Dans tous les cas je soupçonne que t'ais pas compris fonctionne un "if"... avec ton truc il risque pas de t'afficher plus d'une ligne. :spamafote:

 

Mes  liste ne contient que des numéros, J'ai les affiché toutes en php  et  marche nickel, le valeur sont justes.
C'est vraiment ma condition if qui foire, car comme tu l'as bien dit il m'affiche que les résultat de la premier ligne de ma condition (donc ça s'arrete au premier if). Pour tous les autres il affiche 0 comme resultat.

 

Exemple des mes listes  :

 
Code :
  1. <select name="liste1" class="t2_form" id="liste1" onChange="fPrix1(this.form.elements['liste1'].options[this.form.elements['liste1'].selectedIndex].value)">
  2.           <option value="0">&nbsp;</option>
  3.           <option value="1">1</option>
  4.           <option value="2">2</option>
  5.           <option value="3">3</option>
  6.           <option value="4">4</option>
  7.         </select>
  8. <select name="liste2" class="t2_form" id="liste2" onChange="fPrix2(this.form.elements['liste2'].options[this.form.elements['liste2'].selectedIndex].value)">
  9.           <option value="0">&nbsp;</option>
  10.           <option value="1">1</option>
  11.           <option value="2">2</option>
  12.           <option value="3">3</option>
  13.           <option value="4">4</option>
  14.         </select>
  15. <select name="liste3" class="t2_form" id="liste3" onChange="fPrix3(this.form.elements['liste3'].options[this.form.elements['liste3'].selectedIndex].value)">
  16.           <option value="0">&nbsp;</option>
  17.           <option value="1">1</option>
  18.           <option value="2">2</option>
  19.           <option value="3">3</option>
  20.         </select>
  21. <select name="liste4" class="t2_form" id="liste4" onChange="fPrix4(this.form.elements['liste4'].options[this.form.elements['liste4'].selectedIndex].value)">
  22.           <option value="0">&nbsp;</option>
  23.           <option value="1">1</option>
  24.           <option value="2">2</option>
  25.         </select>
  26. <input name="selection" type="radio" id="1lit" value="1" onClick="fPrix5(1)"/>


Message édité par beheadoth le 12-04-2008 à 12:00:03
Reply

Marsh Posté le 12-04-2008 à 14:32:41    

Je pense que tu confonds elseif (...) et else { if (...) }, non ?

Message cité 2 fois
Message édité par CyberDenix le 20-04-2008 à 13:51:30

---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 12-04-2008 à 19:37:00    

J'ai modifié ma condition selon la syntaxe proposée par le site php.net
mais ça ne marche toujours pas. Un moment j'ai pensé que j'arrivais pas à récupérer le bonnes variables donc j'ai refait ceci:
 
récupération  
$liste1 = $_POST['liste1'];
$liste2 = $_POST['liste2'];
$liste3 = $_POST['liste3'];
$liste4 = $_POST['liste4'];
 
 
J'ai fait un lighe qui m'affiche toutes mes variables :
echo "<br>liste1:".$liste1."<br>liste2:".$liste2."<br>liste3:".$liste3."<br>liste4:".$liste4;
 
et je constate que toutes me variables sont bien récupérées
Il me semble que tout est en ordre, c'est encore ma condition qui pose problème? est-elle mal codée ?
 

Code :
  1. if (($liste1!="" ) || ($liste1!="0" )){
  2.    $corps.= "<td class=\"result_mail\">$liste1</td>";
  3.   }elseif (($liste2!="" ) || ($liste2!="0" )){
  4.    $corps.= "<td class=\"result_mail\">$liste2</td>";
  5.   }elseif (($liste3!="" ) || ($liste3!="0" )){
  6.    $corps.= "<td class=\"result_mail\">$liste3</td>";
  7.   }elseif (($liste4!="" || $liste4!="0" )){
  8.    $corps.= "<td class=\"result_mail\">$liste4</td>";
  9.   }elseif($selection="1" ){
  10.    $corps.= "<td class=\"result_mail\">$selection</td>";
  11.   }

Reply

Marsh Posté le 12-04-2008 à 21:24:29    

C'est bien ce que je pensais, tu sais pas comment fonctionne un if. [:petrus75]  
 
Revois les bases. [:spamafote]


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 13-04-2008 à 23:12:57    

sielfried a écrit :

C'est bien ce que je pensais, tu sais pas comment fonctionne un if. [:petrus75]  
 
Revois les bases. [:spamafote]


 
:heink: Merci bcp de ton aide sielfried
t'est vraiment un mec formidable
 
   

Reply

Marsh Posté le 14-04-2008 à 02:30:43    

si tu veux que chaque condition soit évaluée, mets des if et pas des elseif

 

un elseif (ou un else) n'est évalué que si aucune des conditions précédentes n'est vraie.
Donc s'il y en a une de vraie, aucun des elseif suivant ne sera évalué.

  

Si mon fruit est une pomme je fais un crumble,
sinon, si c'est un fruit mûr, je le mange,
sinon, si c'est un durian, je cours très vite,
sinon, si c'est une orange, je demande qui l'a volée.

 

Message cité 1 fois
Message édité par art_dupond le 14-04-2008 à 02:30:56

---------------
oui oui
Reply

Marsh Posté le 14-04-2008 à 07:13:42    

beheadoth a écrit :


 
:heink: Merci bcp de ton aide sielfried
t'est vraiment un mec formidable
 
   


 
Bah, t'as le choix entre :
1. Aller revoir les bases et comprendre ton erreur (qui devrait te paraître évidente) par toi-même.
2. Trouver le moyen qu'on te donne la réponse, et revenir ici poser une question de ce genre dans 3 jours.
 
J'ai voté 1. :spamafote:


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 14-04-2008 à 07:13:42   

Reply

Marsh Posté le 14-04-2008 à 12:59:26    

art_dupond a écrit :

si tu veux que chaque condition soit évaluée, mets des if et pas des elseif
 
un elseif (ou un else) n'est évalué que si aucune des conditions précédentes n'est vraie.
Donc s'il y en a une de vraie, aucun des elseif suivant ne sera évalué.
 
 
 

Si mon fruit est une pomme je fais un crumble,
sinon, si c'est un fruit mûr, je le mange,
sinon, si c'est un durian, je cours très vite,
sinon, si c'est une orange, je demande qui l'a volée.


 


 
 
Ok merci,  j'ai vais essayer de le faire comme tu me dit.
 
 

Reply

Marsh Posté le 14-04-2008 à 22:28:56    

CyberDenix a écrit :

Je pense que tu confonds elseif (...) et et else { if (...) }, non ?


 
 [:anathema] euhh, ca ne reviendrait pas au meme ?

Reply

Marsh Posté le 16-04-2008 à 00:21:08    

Je suis peut-être à côté de la plaque, peut-être je ne comprend pas non plus les else if ou les elseif
Mais voila j'ai de nouveau modifié mon conde pour arriver à ceci:  
 

Code :
  1. if (($liste1!="0" ) || ($liste1!="" )){
  2.   $corps.= "$liste1;";
  3.   }else{ if (($liste2!="0" ) || ($liste2!="" )){
  4.    $corps.= "$liste2;";
  5.    }else{ if (($liste3!="0" ) || ($liste3!="" )){
  6.     $corps.= "$liste3;";
  7.     }else{ if (($liste4!="0" ) || ($liste4!="" )){
  8.      $corps.= "$liste4;";
  9.      }else{ if($selection="1" ){
  10.      $corps.= "$selection;";
  11.      }
  12.     }
  13.    }
  14.   }
  15.  }


 
et ça ne marche toujours pas, mon script s'arrête à chaque fois à la première condition, puis des que je choisi une autre option qui ne'est pas la première il affiche 0
qqun pourait me dire en quoi mon code et faux? en quoi les autres façon de coder mes conditions (posté plus haut) étaient faussent ?
 
 
SVP j'ai besoin des reponses claires et non pas de reponses du genre:
"Purré mec faut vraiment que tu revoies le bases, on voit que tu comprends pas"
Car si j'ai posté ici c'est bien évidemment parce que j'arrive pas et je ne comprend pas, et s'rment parceque je n'0ai pas votre experience

Reply

Marsh Posté le 16-04-2008 à 00:45:00    

beheadoth a écrit :


et ça ne marche toujours pas, mon script s'arrête à chaque fois à la première condition

 

Ben oui, parce qu'elle est toujours vraie, qu elle que soit la valeur de $liste1 (je pense que as confondu le OU et le ET (ce sont des operateurs logiques, révise tes tables de vérité  :)))
En plus tes if / else n ont pas de sens pour ce que tu veux faire et ne te donneront pas l affichage voulu.

 

Bref si tu tiens vraiment a utiliser tes if en cascade, change ca et c est bon, mais surtout essaye de comprendre pourquoi tes || et tes else n'avaient pas de sens :

 
Code :
  1. if (($liste1!="" ) && ($liste1!="0" ))$corps.= "<td class=\"result_mail\">$liste1</td>";
  2. if (($liste2!="" ) && ($liste2!="0" ))$corps.= "<td class=\"result_mail\">$liste2</td>";
  3. if (($liste3!="" ) && ($liste3!="0" ))$corps.= "<td class=\"result_mail\">$liste3</td>";
  4. if (($liste4!="" ) && ($liste4!="0" ))$corps.= "<td class=\"result_mail\">$liste4</td>";
  5. if($selection=="1" )$corps.= "<td class=\"result_mail\">$selection</td>";
 

edit (en rouge):  il faut un "==" et non un "=", sinon tu fais une simple affection et ton if est du coup toujours vrai ...


Message édité par shurik'n le 16-04-2008 à 00:50:28
Reply

Marsh Posté le 16-04-2008 à 08:07:04    

beheadoth a écrit :


SVP j'ai besoin des reponses claires et non pas de reponses du genre:
"Purré mec faut vraiment que tu revoies le bases, on voit que tu comprends pas"
Car si j'ai posté ici c'est bien évidemment parce que j'arrive pas et je ne comprend pas, et s'rment parceque je n'0ai pas votre experience


 
Non, si tu viens ici poser ce genre de questions c'est parce que t'as manifestement jamais appris à programmer, ou que ton prof/bouquin/site web était nul à chier. Ou encore parce que ça fait trop longtemps.
 
Rends-toi service et va lire un bon tuto sur le net, notamment sur les bases des opérateurs logiques et des structures de contrôle basiques pour commencer. Ça t'évitera de coder des conditions au hasard en espérant que ça fonctionne, tu gagneras du temps et tu te pourras te concentrer sur des vrais problèmes à la place. [:petrus75]  
 
Quelques pistes :
http://fr.php.net/manual/fr/langua [...] ctures.php
http://fr.php.net/manual/fr/langua [...] ogical.php


Message édité par sielfried le 16-04-2008 à 08:07:17

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 16-04-2008 à 09:37:30    

Merci bcp shurik'n, j'ai revisé les tables de verité comme tu m'as dit je crois que j'ai compris cette fois

Reply

Marsh Posté le 16-04-2008 à 11:18:25    

il faut remercier aussi beheadoth qui t'a indiqué c'est au niveau logique que tu rencontrais des difficultés sur les opérateurs logiques ...
 

CyberDenix a écrit :

Je pense que tu confonds elseif (...) et et else { if (...) }, non ?


je réitère. Pour moi un :

Code :
  1. if (toto == tata) {
  2. //traitement
  3. } elseif (titi == tutu)


 
est kifkif borico  
 

Code :
  1. if (toto == tata) {
  2. //traitement
  3. } else {
  4.       if (titi == tutu) {
  5.       //traitement
  6.       }
  7. }


Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed