Inserer switch dans tableau dynamique

Fardouyk
Invité n'ayant pas de compte PHPfrance

04 juil. 2005, 11:29

Bonjour,
J'ai des inscriptions pour un rassemblement. Les personnes choisissent leur activité (Counter - War3 - UT) et cela envoie dans ma base de donnée un Y pour oui ou un N pour non à chaque activité.
Mon tableau se présente ainsi :
echo "<table>";
echo "<tr><td width=\"90\"><strong>Pseudo</strong></td><td width=\"90\"><strong>Prenom</strong></td><td width=\"90\"><strong>Equipe</strong></td><td width=\"90\"><strong>Tournoi CS</strong></td><td width=\"90\"><strong>Tournoi W3</strong></td><td width=\"90\"><strong>Tournoi UT</strong></td></tr>"; 
while( $contenu = mysql_fetch_array ($req)) { 
   echo "<tr>"; 
   echo "<td>".$contenu[pseudo]."</td>"; 
   echo "<td>".$contenu[prenom]."</td>"; 
   echo "<td>".$contenu[equipe]."</td>"; 
   echo "<td>".$contenu[counter]."</td>"; 
   echo "<td>".$contenu[warcraft]."</td>"; 
   echo "<td>".$contenu[unreal]."</td>"; 
   echo "</tr>"; 
} 
echo "</table>"; 
En fait je voudrais que pour chaque personne s'affiche une image en fonction de leur choix.
Image
Image
J'avais donc choisit la solution du switch ainsi

switch($contenu[counter])

{
case 'Y': // si il participe
print 'image 1'; // on affiche cette phrase
break; // on referme cette condition

case 'N': // si il ne participe pas
print 'image 2';
break;

default: // si erreur c'est non
print 'image 2';
}

Il me semble que ce n'est pas la meilleure solution et puis j'ai essayé de le mettre dans mon code et cela ne marche pas...

Si vous avez une solution à me proposer... (je débute totalement alors simple s'il vous plait) :oops: :D

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

04 juil. 2005, 11:32

si tu n'as que deux options (oui ou non), tu peux utiliser if/else
mais le switch devrait quand même fonctionner

si tu réessayais comme ça :
$contenu["counter"]
sinon dans ton idée de switch, pourquoi mettre un case pour 'N' ET un default
ce serait plus court comme ça :
switch($contenu[counter]) {
   case 'Y': // si il participe
      print 'image 1'; // on affiche cette phrase
      break; // on referme cette condition

   default: // si c'est tout sauf 'Y'
      print 'image 2';
}

Fardouyk
Invité n'ayant pas de compte PHPfrance

04 juil. 2005, 11:37

En fait je préfère bien le if & co mais j'ai souvent la même erreur quand j'utilise le if comme cela :
if($contenu[counter] = = 'Y')
{
print 'OUI';
}
else{
print 'NON';
} 

J'obtiens cela :
Parse error: parse error, unexpected '='

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

04 juil. 2005, 11:39

en collant les deux égal ça devrait marcher ;)

Fardouyk
Invité n'ayant pas de compte PHPfrance

04 juil. 2005, 11:41

Merci ca marche mais la question que je me pose c'est comment l'intégrer dans mon code
J'ai essayé ca (jvé sembler débile)
echo "<table>";
echo "<tr><td width=\"90\"><strong>Pseudo</strong></td><td width=\"90\"><strong>Prenom</strong></td><td width=\"90\"><strong>Equipe</strong></td><td width=\"90\"><strong>Tournoi CS</strong></td><td width=\"90\"><strong>Tournoi W3</strong></td><td width=\"90\"><strong>Tournoi UT</strong></td></tr>"; 
while( $contenu = mysql_fetch_array ($req)) { 
   echo "<tr>"; 
   echo "<td>".$contenu[pseudo]."</td>"; 
   echo "<td>".$contenu[prenom]."</td>"; 
   echo "<td>".$contenu[equipe]."</td>"; 
   echo "<td>"if($contenu[counter] == 'Y')
{
print 'OUI';
}
else{
print 'NON';
}"</td>"; 
   echo "<td>".$contenu[warcraft]."</td>"; 
   echo "<td>".$contenu[unreal]."</td>"; 
   echo "</tr>"; 
} 
echo "</table>"; 
Mais ca ne marche pas :wink:

Je ne sais pas comment le mettre....

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

04 juil. 2005, 11:45

tu ne peux pas mélanger une sortie de texte (print ou echo) et un test

il faut que :
- tu écrives le code de début de cellule
- tu fasses ton test et que tu écrives le code de l'image choisie
- tu écrives le code de fin de cellule

ou alors tu fais le test et tu écris le code de début/fin de cellule dans chaque option

un echo se termine forcément par un ;
mais là tu enchaines par un if
termines proprement chaque echo avant de faire ton test

Tho
Invité n'ayant pas de compte PHPfrance

04 juil. 2005, 11:51

tu peux aussi faire ça

echo "<td><img src='".(($contenu[counter] == 'Y')?"image1.jpg":"image2.jpg")."'></td>";

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

04 juil. 2005, 11:54

ouais, et vu qu'il galère sur ses conditions, tu pourrais imaginer que peut-être il ne connait pas cette syntaxe et donc l'expliquer plutôt que de balançer ton code...
echo "<td><img src='".(($contenu[counter] == 'Y')?"image1.jpg":"image2.jpg")."'></td>";
opérateur ternaire : (condition)?valeur si VRAIE:valeur si FAUSSE

c'est plus court effectivement mais bon essaye déjà avec un if classique ;)

Fardouyk
Invité n'ayant pas de compte PHPfrance

04 juil. 2005, 11:57

J'ai fait ca :
echo "<table>";
echo "<tr><td width=\"90\"><strong>Pseudo</strong></td><td width=\"90\"><strong>Prenom</strong></td><td width=\"90\"><strong>Equipe</strong></td><td width=\"90\"><strong>Tournoi CS</strong></td><td width=\"90\"><strong>Tournoi W3</strong></td><td width=\"90\"><strong>Tournoi UT</strong></td></tr>"; 
while( $contenu = mysql_fetch_array ($req)) { 
   echo "<tr>"; 
   echo "<td>".$contenu[pseudo]."</td>"; 
   echo "<td>".$contenu[prenom]."</td>"; 
   echo "<td>".$contenu[equipe]."</td>"; 
if($contenu[counter] == 'Y')
{   
print "OUI"; 
}
else{
print "NON"; 
} 
   echo "<td>".$contenu[warcraft]."</td>"; 
   echo "<td>".$contenu[unreal]."</td>"; 
   echo "</tr>"; 
} 
echo "</table>"; 
:shock:

Mais ca ne lui plait pas :( elle est ou ma grosse bétise

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

04 juil. 2005, 11:59

IL te dit peut-être pourquoi ça ne lui plait pas non ?

tu as une erreur provoquée ? le message d'erreur aide quelquefois... ;)

quoiqu'il en soit, pour le moment ton "OUI" ou ton "NON" ne sera pas affiché dans le tableau puisque tu ne l'affiches pas entre balises <td>

Fardouyk
Invité n'ayant pas de compte PHPfrance

04 juil. 2005, 12:02

Bon je vais continuer de chercher (apré la pause déjeuner).
Merci Tho mais je préfère pour le moment faire des choses que je comprend et que je serais capable de refaire tout seul (mais je met ton code dans mon répertoire ^^)

Merci

Fardouyk
Invité n'ayant pas de compte PHPfrance

04 juil. 2005, 12:16

J'essaye de comprendre ca :
echo "<td><img src='".(($contenu[counter] == 'Y')?"image1.jpg":"image2.jpg")."'></td>"; 
mais cela ne marche pas
il me met toujours la 2e condition (à savoir non)
echo "<table>";
echo "<tr><td width=\"90\"><strong>Pseudo</strong></td><td width=\"90\"><strong>Prenom</strong></td><td width=\"90\"><strong>Equipe</strong></td><td width=\"90\"><strong>Tournoi CS</strong></td><td width=\"90\"><strong>Tournoi W3</strong></td><td width=\"90\"><strong>Tournoi UT</strong></td></tr>"; 
while( $contenu = mysql_fetch_array ($req)) { 
   echo "<tr>"; 
   echo "<td>".$contenu[pseudo]."</td>"; 
   echo "<td>".$contenu[prenom]."</td>"; 
   echo "<td>".$contenu[equipe]."</td>"; 
   echo "<td><img src='".(($contenu[counter] == 'Y')?"http://scipately.free.fr/images/icons/Y.gif":"http://scipately.free.fr/images/icons/N.gif")."'></td>"; 
   echo "<td>".$contenu[warcraft]."</td>"; 
   echo "<td>".$contenu[unreal]."</td>"; 
   echo "</tr>"; 
} 
echo "</table>"; 
Pourquoi?? ca vient de ma base de donnée ??? j'ai pourtant bien Y dans counter.. :o

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

04 juil. 2005, 12:18

ce truc là ce n'est qu'un if/else condensé...

tu ne veux pas essayer d'abord avec un vrai if/else, et ensuite tu pourras réduire ? ;)

et une question en passant, si tu affiches cette variable : $contenu[counter]

ça te donne quoi ? tu as la bonne valeur ?
echo 'variable $contenu[counter] = "'.$contenu[counter].'"';
Modifié en dernier par ouckileou le 04 juil. 2005, 12:19, modifié 2 fois.

Fardouik
Invité n'ayant pas de compte PHPfrance

04 juil. 2005, 12:19

Ben si mais je suis toujours au meme point..
J'avance pas avec mon bidule.... :(

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

04 juil. 2005, 12:20

repars de ce code là
echo "<table>";
echo "<tr><td width=\"90\"><strong>Pseudo</strong></td><td width=\"90\"><strong>Prenom</strong></td><td width=\"90\"><strong>Equipe</strong></td><td width=\"90\"><strong>Tournoi CS</strong></td><td width=\"90\"><strong>Tournoi W3</strong></td><td width=\"90\"><strong>Tournoi UT</strong></td></tr>";
while( $contenu = mysql_fetch_array ($req)) {
   echo "<tr>";
   echo "<td>".$contenu[pseudo]."</td>";
   echo "<td>".$contenu[prenom]."</td>";
   echo "<td>".$contenu[equipe]."</td>";
if($contenu[counter] == 'Y')
{   
print "OUI";
}
else{
print "NON";
}
   echo "<td>".$contenu[warcraft]."</td>";
   echo "<td>".$contenu[unreal]."</td>";
   echo "</tr>";
}
echo "</table>";
en séparant bien les différents affichage, et reposte un essai

PS : et ta pause déjeuner ? ;)