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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de Pepito2030
    Inscrit en
    Juillet 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 43
    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
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 489
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 489
    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 éprouvé
    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
    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.

  4. #4
    Membre averti Avatar de Pepito2030
    Inscrit en
    Juillet 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 43
    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 éprouvé
    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
    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.

  6. #6
    Membre averti Avatar de Pepito2030
    Inscrit en
    Juillet 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 43
    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