Classer champ par ordre alphabétique

Répondre
Sammuel
le 08/02/2007 à 21:54
Sammuel
Bonjour,

Je rencontre un probleme au niveau de l'affichage d'un classement de noms par ordre croissant.

J'aimerais au final obtenir ca :

html
  1. <h1>A</h1>
  2. <ul>
  3. <li>Alfred</li>
  4. <li>Albert></li>
  5. </ul>

  6. <h1>B</h1>
  7. <ul>
  8. <li>Béber</li>
  9. <li>Bob</li>
  10. </ul>


etc...

Et pour le moment, cela affiche ca :

html
  1. <h1>A</h1>
  2. <ul>
  3. <li>Alfred</li>
  4. <li>Albert</li>

  5. <h1>B</h1>
  6. <ul>
  7. <li>Béber</li>
  8. <li>Bob</li>


etc...

Je n'arrive pas à afficher le </ul> en fin d'affichage de la liste des noms de chaque lettre.

Mon code est le suivant :

  1. $req = mysql_query("SELECT id,nom,cle FROM categorie ORDER by nom");
  2. $debut = '-1';

  3. while($categorie = mysql_fetch_assoc($req)){

  4. if($categorie["nom"]["0"] != $debut)
  5. {
  6. echo '<h1>'.ucfirst($categorie["nom"]["0"]).'</h1>
  7. <ul>
  8. ';
  9. $debut = $categorie["nom"]["0"];
  10. }

  11. echo '<li>'.$categorie["nom"].'</li>
  12. ';

  13. }


J'ai pourtant essayer plein de truc pour tenter d'afficher le </ul> correctement en fin de liste, mais je n'y arrive pas smiley.

Si quelqu'un aurait une idée, merci de bien vouloir me dire comment procéder svp !
LA GLOBULE
le 08/02/2007 à 23:20
LA GLOBULE
  1. <?php
  2. $req = mysql_query("SELECT id,nom,cle FROM categorie ORDER by nom");

  3. $debut = '-1';
  4. $i = 0;

  5. while ($categorie = mysql_fetch_assoc($req)) {

  6. if ($categorie['nom']{0} != $debut) {
  7. if ($i == 1) echo '</ul>';
  8. else $i = 1;
  9. echo '<h1>'.ucfirst($categorie['nom']{0}).'</h1><ul>';
  10. $debut = $categorie['nom']{0};
  11. }

  12. echo '<li>'.$categorie['nom'].'</li>';
  13. }
  14. echo '</ul>';
  15. ?>
Sammuel
le 09/02/2007 à 01:05
Sammuel
Merci infiniment LA GLOBULE ! Cela fait un moment que je cherchais une solution :p

Je n'aurais jamais réussi sans ton aide :)

smiley
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours