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:
Voici ce que j'ai pondu en requète
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 ;
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 .
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 />'; }
Si je supprime cette clause, j'ai à chaque 'titre' d'article un 'titre_rubrique' ce qui fait redondance.
Partager