Page 1 sur 1

Enlever le dernier caractère d'une liste

Posté : 22 oct. 2008, 01:14
par StefGou
Bonjour, question quiz!

Avec le code suivant :

$query = "SELECT * FROM $table";
$result = mysql_query($query);
// tant qu'il y a des fiches
while ($val = mysql_fetch_array($result)) { ?>
<? echo $val["nom"]; ?>-
<? echo $val["couleur"]; ?>,&nbsp;
<? }

qui retournera par exemple :

"Pierre-Rouge, Michel-Bleu, André-Noir, Thomas-Vert, "

Comment peut-on enlever cette dernière virgule? J'ai entendu parlé de $str = substr($str,'',-1); mais je ne comprends pas comment l'utiliser dans ce cas ci. MERCI!

Posté : 22 oct. 2008, 01:37
par furiouslol
Salut

C'est plutot
substr("abcdef", 0, -1);  
que tu dois utiliser

Mais sinon tu peux compter combien de ligne tu as dans $val et faire un if pour savoir si tu met la virgule ou pas

Posté : 22 oct. 2008, 01:43
par StefGou
Je ne suis pas sûr de comprendre. Peux-tu être plus explicite?

Je suis réellement confus...

Posté : 22 oct. 2008, 02:13
par furiouslol
J'me relis et je comprend que tu sois confus :p (il se fait tard ^^)

Donc en fait grace a mysql_num_rows ( $result ) tu peux savoir combien de ligne retourne ta requete, avant d'en parcourir le résultat, ainsi pendant ton parcours tu met une condition a l'affichage de ta virgule :
$query = "SELECT * FROM $table"; 
$result = mysql_query($query);               // résultat de la requete
$numRow = mysql_num_rows ( $result );  // nombre de ligne retournés par la requete
$Cpt=0;                                                 // initialisation d'une compteur

// tant qu'il y a des fiches 
while ($val = mysql_fetch_array($result)) 
{
   $Cpt++; // on incrémente le compteur de 1
   echo $val["nom"];
   echo "-"; 
   echo $val["couleur"];

   // Si le compteur est différent du nombre de ligne, alors ce n'est pas la derniere ligne, donc on peut afficher la virgule 
   if ($numRow != $Cpt)
      echo ",&nbsp;";
} 
Sinon pour retirer le dernier elément d'une chaine, y a une exemple dans la doc :
substr("abcdef", 0, -1); // retourne abcde