8794 sujets

Développement web côté serveur, CMS

Hello,

une base de données d'un blog contient deux tables très simples (c'est un sujet de tuto) :
- table post (id, titre, texte)
- table commentaire (id, post_id, texte, auteur, date)

Le but est d'afficher la liste des post suivi de la liste imbriquée des commentaires comme ceci :

- titre post 1
o commentaire A
o commentaire B
- titre post 2
- titre post 3
o commentaire C
o commentaire D


Afin de récupérer toutes les infos j'ai donc travaillé la requête suivante, de type jointure :

SELECT p.titre, c.texte
FROM posts p
LEFT JOIN commentaires c
ON p.id = c.post_id


En revanche je ne parviens pas en à afficher via php les listes comme souhaité.
Comment feriez-vous ?

D'ailleurs je me demande si mon idée est la bonne... ca me semblait être pourtant basique comme exo... Smiley sweatdrop

Merci par avance pour vos réponses !
salut,

avec un code du style :
try {
	$db = new PDO('mysql:host=localhost;dbname=test','root','motdpasse');
	$db -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
	$sql = 'SELECT p.titre, c.texte, (select count(id) from commentaire where post_id=p.id) as nb	
	FROM post p	
	LEFT JOIN commentaire c	ON p.id = c.post_id';
	$row = $db->query($sql);
}
catch (Exception $e) {
	echo $e->getmessage();
}
$titre = null;
echo '<ul>';
$noul = 0;
while($data = $row-> fetch(PDO::FETCH_ASSOC)) {
	if ($data['titre'] != $titre && $titre != null) {
		if ($noul === 0) echo '</ul>';
		echo '</li>
		<li>'.$data['titre'];
		if ($data['nb'] !=0) {
			echo '<ul>';
		}
		$titre = $data ['titre'];
		if ($data['nb'] == 0) {
			$noul = 1;
			continue;
		}
	}
	if ($titre == null){
		$titre = $data['titre'];
		echo '<li>'.$titre.'
			<ul>';
	}
	if ($data['texte'] != 'null') {
		echo '<li>'.$data['texte'].'</li>';
	}
}
echo '</ul></ul>';
?>


reste a mettre en forme le tout Smiley cligne

@+