Bonjour,
après avoir passer des heures à essayer de trouver une solution, je fais appel à vous pour me donner le déclic. Je débute dans la programmation php et je n'ai peut-être pas encore les bons réflexes.
Je développe une page qui contient des actus (j'ai une table news avec id_news, titre, date... + une image (cette image est l'affiche de l'évènement) j'ai également une table contenant une ou plusieurs autres images concernant les news (image_news avec id_img, img_titre, description, id_news)

L'idée est que sur la page actu du site apparaisse les 5 dernières news postées de la manières suivante :
titre date heure
description

img1 img2 img3 img4
img5 img6.... (éventuellement dans un tableau ?)

Faut-il faire une jointure ? sauf que si je fais une jointure (LEFT OUTER JOIN $TBL_images ON $TBL_NEWS.id_news=$TBL_images.id_news");), la news se répète autant de fois que j'ai d'images...

ou faut-il à l'intérieur de mon actu faire une requête appelant la table image_news et dans ce cas comment appelé l'id_news en cours ?

Je vous remercie par avance des informations que vous pourrez m'apporter, au moins si vous me dite comment procéder je pourrais chercher les bonnes réponses.

pour le moment j'ai fais cette requête pour les news qui fonctionne.
$req = MYSQL_QUERY("SELECT * FROM $TBL_NEWS ORDER BY date_verif DESC LIMIT 0, 4");
$res = MYSQL_NUM_ROWS($req);


<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td><?
$i=0;
WHILE($i!=$res)
{
$id_news = mysql_result($req,$i,"id_news");
$titre = stripslashes(trim(mysql_result($req,$i,"titre")));
$date = mysql_result($req,$i,"date");
$heure = mysql_result($req,$i,"heure");
$signature = stripslashes(trim(mysql_result($req,$i,"signature")));
$email_sign = mysql_result($req,$i,"email_sign");
$news = stripslashes(trim(mysql_result($req,$i,"news")));
$heure = str_replace(":","h",$heure);
if($i==0){ $titre = "<a name=\"TOP\">$titre</a>"; }
?>

<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td width="100%"><font style="<? echo $CorpsNews; ?>"><? echo "$IMAGE <p style=\"text-align: justify\">$news</p>"; ?></font></p>
</td>
</tr>
<tr>
<td width="100%">

</td>
</tr>
<tr>
<td height="15">

<!--images : ici je voudrais afficher la ou les images-->
</td>
</tr>
<tr>
<td width="100%" height="15">&nbsp;</td>
</tr>
<tr>
<td width="100%" align="right">

<!-- là j'ai une ligne pour les COMMENTAIRES -->

</td>
</tr>
</table>

<?
$i++;
}
?></td>
</tr>
</table>
Modérateur
Salut,

1. Merci de te tenir aux règles du forum

2. Tout dépend de ce que tu souhaites faire. Il faut bien réfléchir dans ce cas là :
2.1 Tu NE veux PAS réutiliser les mêmes images dans tes actus, alors la relations entres tes tables sera de 1,n :
http://img88.imageshack.us/img88/4982/relation1n.png
Ce qui donnera en sql pour récupérer les 5 dernières news :

SELECT 
	a.title AS titre,
	a.content AS contenu,
	a.created AS date_creation,
	i.file AS nom_fichier,
	i.alter_text AS texte_alternatif
FROM
	actus AS a,
	illustrations AS i
WHERE
	a.id = i.actus_id
ORDER BY a.id DESC
LIMIT 5

(code fait de tête, j'ai peut être fait une faute)

2.2 Tu veux réutiliser les mêmes images dans tes actus, alors la relations entres tes tables sera de n,n :
http://img337.imageshack.us/img337/7431/relationnn.png

Ce qui donnera en sql pour récupérer les 5 dernières news :

SELECT 
	a.title AS titre,
	a.content AS contenu,
	a.created AS date_creation,
	i.file AS nom_fichier,
	i.alter_text AS texte_alternatif
FROM
	actus AS a,
	illustrations AS i,
	actus_has_illustrations AS ai
WHERE
	a.id = ai.actus_id
AND
	i.id = ai.illustrations_id
ORDER BY a.id DESC
LIMIT 5

(code fait de tête, j'ai peut être fait une faute)
Modifié par niuxe (19 Aug 2012 - 12:22)