Problème avec un affichage SQL

Hello, mon système de tutorial se compose comme suit :

Une table article avec dedans les informations sur mes articles, dont un champ categorie_id qui contient l’id de la catégorie.

Une table catégorie avec l’id et le nom de la catégorie.

J’essaye d’affiche comme suit :

			<?php
$oldcategorie = '';
$reponse = mysql_query("SELECT * FROM cat_articles, articles WHERE articles.categorie_id = cat_articles.id") or die(mysql_error());
$donnees = mysql_fetch_assoc($reponse);
while($donnees = mysql_fetch_assoc($reponse))
{
?>
	<h2><?php echo $donnees['nom']; ?> :</h2>
<?	
$reponse1 = mysql_query("SELECT * FROM cat_articles, articles WHERE articles.categorie_id = cat_articles.id AND nom='" . $donnees['nom'] . "'") or die(mysql_error());
$donnees1 = mysql_fetch_assoc($reponse1);
{
echo $donnees1['titre']; ?><br /><br />
<?}
}
?>

Mais ce code me renvoie à chaque fois une nouvelle fois la catégorie : genre :

[catégorie 1]
Article 1 de la cat 1

[catégorie 1]
article 2 de la cat 1

Je ne sais plus quoi faire !

Please help :slight_smile:

Bonne soirée !

En reprenant l’idée de ton code, je ferais quelque chose du genre :

$oldCategorie = '';

$articles = mysql_query("SELECT * FROM articles INNER JOIN cat_articles ON cat_articles.id = articles.categorie_id ORDER BY cat_articles.nom, cat_articles.id");

while ($result = mysql_fetch_array($articles))
{
	if ($result['cat_articles.id'] != $oldCategorie)
	{
		?>
		<h2><?php echo $donnees['nom']; ?> :</h2>
		<?
	}

	echo $result['titre'] .'<br /><br />';
}

L’idée est de récuperer en une requête, à l’aide d’une jointure, l’ensemble des articles et des catégories associées, trié par titre et id pour que tous les articles d’une même catégorie soient à la suite dans le jeu de données renvoyé.

Ensuite, tu parcours le jeu de données en détectant s’il s’agit d’une nouvelle catégorie (auquel cas tu en affiches le titre), et en affichant la liste des articles :wink:

J’ai fait ceci :

<?php

$oldcategorie = '';

$reponse = mysql_query('SELECT id, nom FROM cat_articles') or die(mysql_error());

while($donnees = mysql_fetch_assoc($reponse))
{
    echo '<h2>' . $donnees['nom'] . '</h2>';
   
    $reponse1 = mysql_query('SELECT titre FROM articles WHERE categorie_id = ' . $donnees['id']) or die(mysql_error());
    while( $donnees1 = mysql_fetch_assoc($reponse1) )
    {
        echo $donnees1['titre'] . '<br /><br />';
    }
}
?>

Et ca marche :wink: