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 :

Plusieurs résultats groupés [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 20
    Points : 23
    Points
    23
    Par défaut Plusieurs résultats groupés
    Bonjour,
    je suis embêté pour formuler une requète: je voudrais afficher la liste de résultat d'un champ titre sous un champ Item (titre_rubrique) ceci afin de lister des pages de contenus(table article) dans un menu (table rubrique) un peu sur le principe CMS.
    Voici la structure des tables:
    Code sql : 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    -- Structure de la table `article`
     
    CREATE TABLE `article` (
      `id_article` int(5) NOT NULL auto_increment,
      `auteur` varchar(100) NOT NULL,
      `titre` varchar(255) NOT NULL,
      `date_pub` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
      `resume` varchar(255) default NULL,
      `intro` text,
      `texte` text NOT NULL,
      `liens` text,
      PRIMARY KEY  (`id_article`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COMMENT='Table contenant le contenu des pages du site' AUTO_INCREMENT=# ;
     
    -- Structure de la table `rubrique`
     
    CREATE TABLE `rubrique` (
      `id_rubrique` int(5) NOT NULL auto_increment,
      `auteur` varchar(100) NOT NULL,
      `titre_rubrique` varchar(255) NOT NULL,
      `date_pub` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
      `resume` varchar(255) default NULL,
      `intro` text,
      `texte` text NOT NULL,
      `liens` text,
      PRIMARY KEY  (`id_rubrique`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COMMENT='Table contenant les Items nécessaires à la navigation (menus)' AUTO_INCREMENT=# ;
     
     
    Structure de la table `association`
     
    CREATE TABLE `association` (
      `id` int(4) NOT NULL auto_increment,
      `titre` varchar(255) NOT NULL,
      `titre_rubrique` varchar(255) NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COMMENT='permet d''associer articles et thèmes' AUTO_INCREMENT=20 ;
    Voici ce que j'ai pondu en requète
    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
     
      //titre POUR REQUETE SQL
     $titre = $_GET['titre'];
     //titre_rubrique est à la fois présent dans les tables rubrique et association
     $titre_rubrique = $_GET['titre_rubrique'];
    $id = $_GET['id'];
    // Requête SQL 
    $reponse = mysql_query("SELECT DISTINCT * FROM association LEFT JOIN rubrique ON association.titre_rubrique = rubrique.titre_rubrique GROUP BY rubrique.titre_rubrique ORDER BY association.titre_rubrique"); 
     
    // Boucle qui liste tout ce que contient la table :
    while ($result = mysql_fetch_array($reponse) )
    {
    //résultat affichant la rubrique et les articles en référence d'après la table association
    echo ('<a href="rubrique.php?titre_rubrique='.$result['titre_rubrique'].'">'.$result['titre_rubrique'].'</a>');
    echo ('<div id="listArt">'.'<a href="article.php?titre='.$result['titre'].'">'.$result['titre'].'</a>'.'</div>').'<br />';
     
      }
    Le problème c'est que GROUP BY n'affiche qu'un résultat de 'titre_rubrique' même si j'ai plusieurs 'titre' associé à ce champ .
    Si je supprime cette clause, j'ai à chaque 'titre' d'article un 'titre_rubrique' ce qui fait redondance.

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2005
    Messages : 357
    Points : 537
    Points
    537
    Par défaut
    Salut,
    C'est seulement un truc d'affichage. Il est certain qu'il faut enlever le group by mais traiter l'affichage en fonction du changement de titre_rubrique.

    Quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    // Boucle qui liste tout ce que contient la table :
    $rubrique = '';
    while ($result = mysql_fetch_array($reponse) ){
    //résultat affichant la rubrique et les articles en référence d'après la table association
      if ($result['titre_rubrique'] != $rubrique) {
        echo ('<a href="rubrique.php?titre_rubrique='.$result['titre_rubrique'].'">'.$result['titre_rubrique'].'</a>');
        $rubrique = $result['titre_rubrique'];
      }
      echo ('<div id="listArt">'.'<a href="article.php?titre='.$result['titre'].'">'.$result['titre'].'</a>'.'</div>').'<br />';
    }

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 20
    Points : 23
    Points
    23
    Par défaut
    Effectivement, je n'avais pas pensé à procéder comme cela et ça fonctionne impec.

    Merci de cette aide.

    C'est résolu.

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

Discussions similaires

  1. Plusieurs résultats d'une même table et groupés
    Par Vodsky dans le forum Requêtes
    Réponses: 2
    Dernier message: 16/12/2014, 11h10
  2. Réponses: 2
    Dernier message: 09/01/2006, 19h45
  3. Jointure avec plusieurs résultats
    Par kemenaran dans le forum Langage SQL
    Réponses: 4
    Dernier message: 18/12/2005, 23h21
  4. Réponses: 7
    Dernier message: 26/09/2005, 17h50
  5. Une fonction peut-elle retourner plusieurs résultats ?
    Par aragorns dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 26/03/2005, 22h18

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