IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Classer champ par ordre alphabétique (je n'arrive pas à fermer le </ul>) [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club Avatar de Pepito2030
    Inscrit en
    Juillet 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 43
    Points : 36
    Points
    36
    Par défaut Classer champ par ordre alphabétique (je n'arrive pas à fermer le </ul>)
    Bonjour,

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

    J'aimerais au final obtenir ca :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <h1>A</h1>
    <ul>
    <li>Alfred</li>
    <li>Albert></li>
    </ul>
     
    <h1>B</h1>
    <ul>
    <li>Béber</li>
    <li>Bob</li>
    </ul>

    etc...

    Et pour le moment, cela affiche ca :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <h1>A</h1>
    <ul>
    <li>Alfred</li>
    <li>Albert></li>
     
    <h1>B</h1>
    <ul>
    <li>Béber</li>
    <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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    $req = mysql_query("SELECT id,nom,cle FROM categorie ORDER by nom ASC");
    $debut = '-1';
     
    while($categorie = mysql_fetch_assoc($req)){
     
    if($categorie["nom"]["0"] != $debut)
    {
    echo '<h1>'.ucfirst($categorie["nom"]["0"]).'</h1>
    <ul>
    ';
    $debut = $categorie["nom"]["0"];
    }
     
    echo '<li>'.$categorie["nom"].'</li>
    ';
     
    }
    J'ai pourtant essayer plein de truc pour tenter d'afficher le </ul> correctement en fin de liste, mais je n'y arrive pas .

    Si quelqu'un aurait une idée, merci de bien vouloir me dire comment procéder svp !

  2. #2
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 451
    Points : 4 600
    Points
    4 600
    Par défaut
    salut,
    je n'ai pas de solution a t'apporter... il accèpte les </h1> et les </li>,
    alors, pourquoi n'accepterait-il pas les </u> ???

    le code que tu a mis, c'est celui que tu exécutes, si c'est le cas, il te maque les </u>
    sinon,
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id,nom,cle FROM categorie ORDER by nom ASC
    le "asc" n'est pas obligatoire : par défaut c'est croissant..
    (desc = décroissant)
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  3. #3
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    En gros, tu veux afficher </ul> juste avant d'afficher
    <h1>X</h1>, sauf a la premiere itération.

    Alors tu mets juste un booleen pour savoir si tu est a la premiere itération,
    si c'est le cas, tu change la valeur de ton booleen
    si c'est pas le cas, tu affiche ton </ul> juste avant d'afficher ton <h1>X</h1>

    Il te faudra également rajouter un </ul> tout a la fin (en vérifiant que tu as bien eu des lettres sinon tu vas avoir un </ul> qui va se balader pour rien.
    Rakken

    Oneira, un monde imaginaire d'Heroic Fantasy.

    Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/

  4. #4
    Nouveau membre du Club Avatar de Pepito2030
    Inscrit en
    Juillet 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 43
    Points : 36
    Points
    36
    Par défaut
    Rakken, pourrais tu stp me montrer un exemple stp, car cela fait un moment que je me casse la tete sur ce script ! Et j'ai du mal a trouver la solution.

  5. #5
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Bon, a la louche et non testé, c'est juste pour te montrer l'idée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    $req = mysql_query("SELECT id,nom,cle FROM categorie ORDER by nom ASC");
    $first_time = true; // Ca c'est mon booleen pour savoir si on est déjà passé dans la boucle
    $debut = '-1';
    while($categorie = mysql_fetch_assoc($req)) {
       if($categorie["nom"]["0"] != $debut) { 
          if ($first_time == true) {
             $first_time = false; //La premiere fois, on affiche pas le ul
          } else {
            echo '</ul>'; // Mais on le fait toute les fois suivantes.
          }
          echo '<h1>'.ucfirst($categorie["nom"]["0"]).'</h1> <ul> ';
          $debut = $categorie["nom"]["0"]; 
       }
       echo '<li>'.$categorie["nom"].'</li> ';   
    }
    echo '</ul>'; // ici, il peut etre interessant de rajouter un test pour savoir
    // si il y avait au moins un enregistrement avant ou pas.
    Rakken

    Oneira, un monde imaginaire d'Heroic Fantasy.

    Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/

  6. #6
    Nouveau membre du Club Avatar de Pepito2030
    Inscrit en
    Juillet 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 43
    Points : 36
    Points
    36
    Par défaut
    merci Rakken ! Ton code fonctionne

    Je n'ai jamais utilisé ce genre de code php avec un booléen pour tester une boucle. Merci pour ton aide, j'aurais appris quelque chose !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Liste des champs par ordre alphabétique
    Par stephanfo dans le forum Excel
    Réponses: 1
    Dernier message: 15/03/2012, 21h54
  2. Champs qui ne sont plus par ordre alphabétique
    Par gta1234 dans le forum IHM
    Réponses: 2
    Dernier message: 14/08/2007, 13h19
  3. Classer les procédures par ordre alphabétique
    Par ouskel'n'or dans le forum Général VBA
    Réponses: 4
    Dernier message: 27/02/2007, 21h22
  4. [MySQL] Classer des résultats par ordre alphabétique
    Par Him dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 13/07/2006, 14h59
  5. [VB6] Classer par ordre alphabétique
    Par boudincweole10 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 02/05/2006, 17h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo