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:
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:
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.