une condition dans une boucle

une condition dans une boucle - PHP - Programmation

Marsh Posté le 23-01-2005 à 16:50:56    

bonjour,
je ne sais pas comment m'y prendre pour mettre un if dans un while

Code :
  1. while($resultats=mysql_fetch_array($req_commandes)){
  2. //condition
  3. if (($resultats['paiement']=='virement')
  4. $picto='ok';
  5. else if ($resultats['paiement']=='cheque'')
  6. $picto='ok2';
  7. else if ($resultats['paiement']=='carte'')
  8. $picto='ok3';
  9. else $picto='non';
  10. //affichage de la liste
  11. echo $resultats['paiement'];//pas de pb
  12. echo $picto //probleme  
  13. echo '<br>';
  14. }


ce qu'il se passe, c'est qu'il m'affiche la meme valeur quelque soit $resultats['paiement']
 
comment dois-je m'y prendre
 
merci de votre aide


Message édité par attentio le 24-03-2005 à 20:43:16

---------------
L'ordinateur a de la mémoire mais aucun souvenir ...
Reply

Marsh Posté le 23-01-2005 à 16:50:56   

Reply

Marsh Posté le 23-01-2005 à 17:20:21    

attentio a écrit :

bonjour,
je ne sais pas comment m'y prendre pour mettre un if dans un while

Code :
  1. while($resultats=mysql_fetch_array($req_commandes)){
  2. //condition
  3. if (($resultats['paiement']=='virement')
  4. $picto='ok';
  5. else if ($resultats['paiement']=='cheque'')
  6. $picto='ok2';
  7. else if ($resultats['paiement']=='carte'')
  8. $picto='ok3';
  9. else $picto='non';
  10. //affichage de la liste
  11. echo $resultats['paiement'];//pas de pb
  12. echo $picto //probleme  
  13. echo '<br>';
  14. }


ce qu'il se passe, c'est qu'il m'affiche la meme valeur quelque soit $resultats['paiement']
 
comment dois-je m'y prendre
 
merci de votre aide


 

Citation :


if (($resultats['paiement']=='virement')  


C'est normal les 2 parentheses ? "((", ca ne devrait pas etre "(" seulement ?
A moins que cela ne soit qu'une faute lors de la copie de ton code.

Reply

Marsh Posté le 23-01-2005 à 17:53:47    

et switch tu connais ?


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 23-01-2005 à 18:25:18    

Citation :

($resultats['paiement']=='cheque'')


Un autre bug sur cette ligne ...

Reply

Marsh Posté le 23-01-2005 à 18:36:22    

T509 a écrit :

Citation :

($resultats['paiement']=='cheque'')


Un autre bug sur cette ligne ...


 
A oui je l'avais rate celle la, il y aussi la suivante dans le meme cadre :

Citation :

else if ($resultats['paiement']=='carte'')  


 
Avec toutes ces fautes je suis presque a me demander si ce code ne produit pas d'erreur ... A moins que toutes ces erreurs "s'anullent" et produisent un code syntaxiquement correct...


Message édité par cerel le 23-01-2005 à 18:38:31
Reply

Marsh Posté le 23-01-2005 à 18:38:00    

AMHA tu devrais utilsier un vrai editeur...


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 23-01-2005 à 21:56:23    

+1 C'est quoi ces {} manquants ? :heink:

Reply

Marsh Posté le 24-01-2005 à 09:18:11    

Hermes le Messager a écrit :

+1 C'est quoi ces {} manquants ? :heink:


Tu n'es pas obligé de placer ta condition dans ton while... Voila ce que je ferais à ta place (mais je suis pas trés bon  :cry:) :

Code :
  1. while ($champs = mysql_fetch_array($req_commandes)){
  2.                                                     $paiement= $champs["paiement"];
  3. }
  4. switch ($paiement){
  5.                    case virement:
  6.                                  $picto='ok';
  7.                                  break;
  8.                    //etc...
  9.                    }


Reply

Marsh Posté le 24-01-2005 à 10:05:12    

jaywax a écrit :

Tu n'es pas obligé de placer ta condition dans ton while... Voila ce que je ferais à ta place (mais je suis pas trés bon  :cry:) :

Code :
  1. while ($champs = mysql_fetch_array($req_commandes)){
  2.        $paiement= $champs"paiement"];
  3. }
  4. switch ($paiement){
  5.                    case virement:
  6.                                  $picto='ok';
  7.                                  break;
  8.                    //etc...
  9.                    }



 
 
non il est pas obligé, c'est juste que s'il ne le fait pas, au lieu de tester chacune des valeur renvoyées par la requete, ça ne testera que le dernier (celui dans lequel s'est arrêté le while) et je ne pense qu'il veuille afficher son image que pour le dernier....


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 24-01-2005 à 10:09:29    

Xav_ a écrit :

non il est pas obligé, c'est juste que s'il ne le fait pas, au lieu de tester chacune des valeur renvoyées par la requete, ça ne testera que le dernier (celui dans lequel s'est arrêté le while) et je ne pense qu'il veuille afficher son image que pour le dernier....


Ce qui prouve effectivement que je ne suis pas trés bon  :lol:  

Reply

Marsh Posté le 24-01-2005 à 10:09:29   

Reply

Marsh Posté le 24-01-2005 à 10:12:22    

en plus le case est pas juste :o


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 24-01-2005 à 10:14:10    

jaywax a écrit :

Ce qui prouve effectivement que je ne suis pas trés bon  :lol:


 
je ne l'ai pas dis de peur que tu le prenne mal, mais c'est là où je voulais en venir ;)...  
tout le monde a débuté, on a tous dis des conneries au début (enfin en ce qui me concerne j'en ai dis), donc à l'avenir test un code dont tu n'est pas sur avant de le filer comme exemple ;)


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 24-01-2005 à 10:16:15    

Salut
 
Moi je ferais comme ça :

Code :
  1. $pictos = array('virement' => 'ok', 'cheque' => 'ok2', 'carte' => 'ok3');
  2. $pictoDefault = 'non';
  3. while ($resultats=mysql_fetch_array($req_commandes)) {
  4. //condition
  5. $picto = isset($pictos[$resultats['paiement']]) ? $pictos[$resultats['paiement']] : $pictoDefault;
  6. //affichage de la liste
  7. echo $resultats['paiement'].$picto.'<br>';
  8. }


Message édité par ratibus le 24-01-2005 à 10:16:38
Reply

Marsh Posté le 24-01-2005 à 10:20:00    

la, faut jouer avec array_keys, array_values et in_array


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 24-01-2005 à 10:20:44    

joli code ratibus, mais utiliser la forme réduite du if alors que la personne semble débuter, tu risque de le dérouter, met lui au moins la correspondance en syntaxe "classique" ;)
Le but est de l'aider à apprendre, pas de lui filer un code qu'il ne va peut etre meme pas comprendre....


Message édité par Xav_ le 24-01-2005 à 10:21:16

---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 24-01-2005 à 10:22:22    

KangOl a écrit :

la, faut jouer avec array_keys, array_values et in_array


meme pas en fait...
meme moi j'ai meme eu du mal a voir la subtilité du code, alors...


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 24-01-2005 à 10:25:11    

Citation :

meme moi j'ai meme eu du mal a voir la subtilité du code, alors...


hé oui, et pour t'avoir souvent croiser ici où sur PPC, je sais que tu es loin de débuter en la matière, donc ça renforce mon précédent post à ratibus


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 24-01-2005 à 10:25:45    

bon, c'est le matin aussi :D


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 24-01-2005 à 10:36:56    

Xav_ a écrit :

joli code ratibus, mais utiliser la forme réduite du if alors que la personne semble débuter, tu risque de le dérouter, met lui au moins la correspondance en syntaxe "classique" ;)
Le but est de l'aider à apprendre, pas de lui filer un code qu'il ne va peut etre meme pas comprendre....


J'ai hésité effectivement à lui montrer l'opérateur ternaire que j'aime bien :D
 
Voici le code en + clair :

Code :
  1. $pictos = array('virement' => 'ok', 'cheque' => 'ok2', 'carte' => 'ok3');
  2. $pictoDefault = 'non';
  3. while ($resultats=mysql_fetch_array($req_commandes)) {
  4. //condition
  5. if (isset($pictos[$resultats['paiement']])) {
  6.  $picto = $pictos[$resultats['paiement'];
  7. } else {
  8.  $picto = $pictoDefault;
  9. }
  10. //affichage de la liste
  11. echo $resultats['paiement'].$picto.'<br>';
  12. }

Reply

Marsh Posté le 24-01-2005 à 11:52:14    

Citation :

J'ai hésité effectivement à lui montrer l'opérateur ternaire que j'aime bien :D
 
Voici le code en + clair :  
[...]


 
merci pour lui :D


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 24-01-2005 à 16:59:27    

ratibus a écrit :

J'ai hésité effectivement à lui montrer l'opérateur ternaire que j'aime bien :D
 
Voici le code en + clair :

Code :
  1. $pictos = array('virement' => 'ok', 'cheque' => 'ok2', 'carte' => 'ok3');
  2. $pictoDefault = 'non';
  3. while ($resultats=mysql_fetch_array($req_commandes)) {
  4. //condition
  5. if (isset($pictos[$resultats['paiement']])) {
  6.  $picto = $pictos[$resultats['paiement'];
  7. } else {
  8.  $picto = $pictoDefault;
  9. }
  10. //affichage de la liste
  11. echo $resultats['paiement'].$picto.'<br>';
  12. }



 
Correction d'une petite faute :

Citation :


 if (isset($pictos[$resultats['paiement']])) {
  $picto = $pictos[$resultats['paiement']];
 } else {


Reply

Marsh Posté le 24-01-2005 à 17:39:07    

OK, merci a tous encore une fois !

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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