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 :

Groupement des résultats d'une requête [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 123
    Par défaut Groupement des résultats d'une requête
    Bonjour!

    J'ai une table (en fait il s'agit du résultat d'une jointure) dans laquelle se trouve des noms de constructeurs automobiles et leur pays :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ==Table voitures==
    | id | nomConstructeur | nomPays    |
    | 1  |  BMW            |  Allemagne |
    | 2  |  Honda          |  Japon     |
    | 3  |  PSA            |  France    |
    | 4  |  Mitsubishi     |  Japon     |
    | 5  |  Renault        |  France    |
    | 6  |  Toyota         |  Japon     |
    | 7  |  General Motors |  USA       |
    | 8  |  Ford           |  USA       |
    J'aimerai obtenir un code (X)HTML dans lequel les constructeurs sont listés par pays. Plus précisément je voudrais obtenir ce code:

    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
     
    <h2>France</h2>
    <ul>
      <li>PSA</li>
      <li>Renault</li>
    </ul>
     
    <h2>USA</h2>
    <ul>
      <li>General Motors</li>
      <li>Ford</li>
    </ul>
     
    <h2>Japon</h2>
    <ul>
      <li>Toyota</li>
    [etc.]
    Toutefois, je vois mal quel code PHP nous permet de générer ça à partir de la table ci-haut. Avez-vous des pistes?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    1- Tu fais ton SELECT
    2- Tu parcours ton resultat en créant un tableau $tableau[$pays][] = $constructeur
    3 - voila tes données sont agencées comme il faut, il ne reste plus qu'a ecrire ton HTML en parcourant le tableau obtenu.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 123
    Par défaut
    Merci, pour la réponse rapide.

    Je ne comprends toutefois pas vraiment comment faire pour parcourir mon résultat et créer un tableau.

    Voilà jusqu'où mon raisonnement se rend pour le moment :
    1- Tu fais ton SELECT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	$sql = "SELECT
    			id, nomConstructeur, nomPays
    		FROM constructeurs AS C
    			LEFT JOIN pays AS P			ON C.idPays = P.idPays
    		GROUP BY C.idPays
    		";
     
    	$resultat = mysql_query($sql) or die(mysql_error());
    2- Tu parcours ton resultat en créant un tableau $tableau[$pays][] = $constructeur
    [???] ...ça implique un mysql_fetch_assoc j'imagine?

    3 - voila tes données sont agencées comme il faut, il ne reste plus qu'a ecrire ton HTML en parcourant le tableau obtenu.
    Utiliser un foreach pour parcourir le tableau bidimensionnel.

    Donc si vous pouvez m'apporter des précisions pour le point 2, j'apprécierai

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Le but est de faire le regroupement par pays.
    On met donc chaque constructeur trouvé sous son pays.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $resultat = mysql_query($sql) or die(mysql_error());
    while($row = mysql_fetch_assoc($resultat)) {
       $constructeur[$row['nomPays']][] = $row['nomConstructeur'];
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 123
    Par défaut
    Il suffit d'enlever le GROUP BY C.idPays de ma requête et ton code fonctionne à merveille! Merci beaucoup!

    Bonne journée

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

Discussions similaires

  1. Numérotation automatique des résultats d'une requête
    Par Nicola dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 28/07/2006, 19h57
  2. Réponses: 2
    Dernier message: 02/12/2005, 21h21
  3. Réponses: 1
    Dernier message: 02/12/2005, 20h18
  4. Pagination des résultats d'une requête
    Par dl_jarod dans le forum ASP
    Réponses: 2
    Dernier message: 17/10/2005, 14h30
  5. Calcul à partir des résultats d'une requète
    Par Sendo dans le forum Access
    Réponses: 1
    Dernier message: 29/09/2005, 17h46

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