Bonjour,

J'ai une petite question à vous poser, je ne sais pas ce qu'il est mieux de faire d'un point de vue performances pour un système tout simple de news qui peuvent être rattachées à des images.

J'ai une table contenant mes news (ID, TITRE, TEXTE)
ainsi qu'une table contenant mes images (ID, URL, ID_NEWS)

Actuellement je fais comme ceci :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
	$retour_messages=mysql_query("SELECT * FROM news ");
	while($result=mysql_fetch_assoc($retour_messages)) {		
				$aff.='<article>';
				$aff.='<p>'.getdateSQL($result["PDATE"]).' - <strong>'.$result["TITRE"].'</strong></p>';
				$aff.=$result["TEXTE"];
					$r=mysql_query("SELECT * FROM news_images WHERE ID_GALERIE=".$result["ID"]."");
					while($img=mysql_fetch_assoc($r)) {
					  $aff.='<img src="upload/news/'.$img["URL"].'">';
					}
				$aff.='</article>';			
	}

D'un niveau performances, je me suis dit que je pourrai utiliser une jointure pour éviter la boucle dans la boucle…

Voici donc ma 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
$retour_messages=mysql_query("
	SELECT * FROM news JOIN 
	news_images ON news.ID = news_images.ID_GALERIE
	WHERE news.PUBLIE=1 
	GROUP BY news.ID");
 
	while($result=mysql_fetch_assoc($retour_messages)) {	
				$aff.='<article>';
				$aff.='<p>'.getdateSQL($result["PDATE"]).' - <strong>'.$result["TITRE"].'</strong></p>';
				$aff.=$result["TEXTE"];
				 $aff.='<img src="upload/news/'.$result["URL"].'">';
				$aff.='</article>';			
	}
Seulement avec ce code j'ai uniquement la première image qui s'affiche, il faudrait boucler sur les images en ayant le total du nombre de résultats trouvé ?

Quelle serait selon vous la meilleure solution d'un point de vue performances ?

ça serait intéressant d'avoir votre avis à ce sujet,

D'avance merci et salutations