Bonjour à tous,

Voilà je vous expose mon soucis. Je fonctionne avec 2 pages php :
- l'une affiche une liste de 3 articles avec un système de pagination (blog.php)
- l'autre affiche les commentaires liés à un article (sur lequel on a cliqué)

La pagination des articles est terminée mais je rencontre des problèmes sur la pagination des commentaires. Je pense que le problème réside dans la liaison entre les commentaires et le billet qui leur est associé.

Voici le code des 2 fichiers :

Blog.php

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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<link type="text/css" rel="stylesheet" href="styles.css">
	<title>TP Blog</title>
</head>
<body>
 
<h1>TP Blog amélioré</h1>
 
<?php
try
{
	$bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}
catch(Exception $e)
{
        die('Erreur : '.$e->getMessage());
}
?>
 
<?php
 
$limite = 3;
$page = (!empty($_GET['page']) ? $_GET['page'] : 1); // Définition d'un numéro de page par défaut
$debut = ($page - 1) * $limite; // On calcule le numéro du premier élément à récupérer
 
// PARTIE REQUETE DES BILLETS
$requete = 'SELECT id, titre, contenu, DAY(date_creation) AS jour, MONTH(date_creation) AS mois, YEAR(date_creation) AS annee FROM billets ORDER BY date_creation DESC LIMIT :limite OFFSET :debut';
$reponse = $bdd->prepare($requete);
$reponse->bindValue(
		'limite', // Le marqueur est nommé limite
		$limite, // Il doit prendre la valeur de la variable $limite
		PDO::PARAM_INT // Cette valeur est de type entier
		);
$reponse->bindValue(
		'debut', // Le marqueur est nommé limite
		$debut, // Il doit prendre la valeur de la variable $limite
		PDO::PARAM_INT // Cette valeur est de type entier
		);
$reponse->execute();
 
 
	while ($billets = $reponse->fetch())
	{?>
	<div class="news">
		<h3>
			<?php echo $billets['titre'];?> publié le 
			<?php  echo $billets['jour'];?>/<?php  echo $billets['mois'];?> - <?php  echo $billets['annee'];?>
		</h3>
			<p><?php echo $billets['contenu']; ?><br><a href="commentaires.php?billet=<?php echo $billets['id'];?>">Commentaires</a></p>
	</div>
	<?php
	}
 
	$reponse->closeCursor();
?>
 
<a href="blog.php?page=<?php echo $page - 1; ?>">Page précédente</a>
<a href="blog.php?page=<?php echo $page + 1; ?>">Page suivante</a>
 
 
</body>
</html>
commentaires.php

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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<link rel="stylesheet" type="text/css" href="styles.css">
	<title>Commentaires</title>
</head>
<body>
 
<h1>Liste des commentaires</h1>
 
<?php
try
{
	$bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}
catch(Exception $e)
{
    die('Erreur : '.$e->getMessage());
}
?>
 
<?php
 
?>
 
<?php // AFFICHAGE DU BILLET SELECTIONNE
$requete = 'SELECT id, titre, contenu, date_creation, DAY(date_creation) AS jour, MONTH(date_creation) AS mois, YEAR(date_creation) AS annee FROM billets WHERE id = ?';
$reponse = $bdd->prepare($requete);
$reponse->execute(array($_GET['billet']));
$leBillet = $reponse->fetch();
?>
 
<div class="news">
	<h3>
	<?php echo $leBillet['titre'];?> publié le 
	<?php  echo $leBillet['jour'];?>/<?php  echo $leBillet['mois'];?> - <?php  echo $leBillet['annee'];?>
	</h3>
		<p><?php echo $leBillet['contenu']; ?></p>
</div>
 
<?php $reponse->closeCursor();?>
 
<?php // AFFICHAGE DES COMMENTAIRES
 
$limite = 3;
$page = (!empty($_GET['page']) ? $_GET['page'] : 1); // Définition d'un numéro de page par défaut
$debut = ($page - 1) * $limite; // On calcule le numéro du premier élément à récupérer
$BilletSelection = $_GET['billet'];
 
$requete = 'SELECT id, auteur, commentaire, date_commentaire, DAY(date_commentaire) AS jour, MONTH(date_commentaire) AS mois, YEAR(date_commentaire) AS annee FROM commentaires WHERE :id_billet ORDER BY date_commentaire DESC LIMIT :limite OFFSET :debut';
$reponse = $bdd->prepare($requete);
$reponse->bindValue(
		'id_billet',
		$_GET['billet'],
		PDO::PARAM_INT
		);
$reponse->bindValue(
		'limite',
		$limite,
		PDO::PARAM_INT
		);
$reponse->bindValue(
		'debut',
		$debut,
		PDO::PARAM_INT
		);
$reponse->execute();
while ($leCommentaire = $reponse->fetch())
		{?>
			<div class="news">Commentaire de 
				<?php echo htmlspecialchars($leCommentaire['auteur']);?> publié le 
				<?php echo $leCommentaire['jour'];?>/<?php  echo $leCommentaire['mois'];?> - <?php  echo $leCommentaire['annee'];?></br>
				<?php echo htmlspecialchars($leCommentaire['commentaire']);?>
			</div>
		<?php $reponse->closeCursor();
		}?>
 
 
<a href="commentaires.php?billet=<?php echo $_GET['billet'] ?>&amp;page=<?php echo $page - 1; ?>">Page précédente</a>
<a href="commentaires.php?billet=<?php echo $_GET['billet'] ?>&amp;page=<?php echo $page + 1; ?>">Page suivante</a>
<p><a href="blog.php">Retour page d'accueil</a></p>
 
</body>
</html>
A l'affichage, je n'ai aucune erreur. Les commentaires affichés ne correspondent à l'article en question et et leur affichage ne correspond pas à ce que je veux car je n'en vois qu'un par page (au lieu de 3 par page).

Quelqu'un peut-il m'aider ?
Merci d'avance pour vos conseil en tout cas