Alors, en fait, le problème provient d'un script de pagination. J'ai déjà mis en place un tel script (grâce à un précieux tutoriel trouvé sur un site internet) et cela fonctionne à merveille ! Mais à présent, j'ai voulu mettre ce script pour les commentaires des news, afin de ne pas me retrouver avec des commentaires 1km de page plus bas !
Le script fonctionne presque comme je le souhaitais :
- Il m'affiche le nombre de pages en fonction des messages
Mais cependant, lorsque je clique sur une page, eh bien il me montre toujours les mêmes commentaires.
Un petit screen pour la démo : (Ne faites pas attention aux commentaires de test. XD)


Et en page trois, il m'affiche encore et toujours les mêmes commentaires.
(Désolée des grosses images, je n'ai pas trouvé la balise spoiler)
Voici le code de ma page news :
<?php
/*
Connexion à la BDD
*/
require "config.php";
mysql_connect($adresse, $nom, $motdepasse);
mysql_select_db($database);
/*
Affichage d'une news en particulier
*/
if(isset($_GET['id'])){
$id = intval(htmlentities($_GET['id']));
/*
Si l'id !=0, intval renvoie quelque chose de bon
*/
if($id != 0){
$sql = 'SELECT * FROM news WHERE id='.$id.'';
$req = mysql_query($sql) or die(mysql_error());
$data = mysql_fetch_assoc($req);
echo '<h1 class="title">'.stripslashes($data['titre']).'</h1></p>';
echo '<p class="meta"><small>Rédigé par '.stripslashes($data['author']). ' le '. date("d/m/Y à G:i", strtotime($data['date'])).'</small></p>';
echo '<div class="entry"><p>'.stripslashes($data['contenu']).'</p></div>';
?>
<p class="bordertop"><center>« <a href="news.php" title="Page des news">Retour aux news</a> | <a href="index.php" title="Page principale">Retour à l'accueil</a> | Partager la page :
</p></center>
<!-- AddThis Button BEGIN -->
<div class="addthis_toolbox addthis_default_style">
<a class="addthis_button_preferred_1"></a>
<a class="addthis_button_preferred_2"></a>
<a class="addthis_button_preferred_3"></a>
<a class="addthis_button_preferred_4"></a>
<a class="addthis_button_compact"></a>
<a class="addthis_counter addthis_bubble_style"></a>
</div>
<script type="text/javascript">var addthis_config = {"data_track_clickback":true};</script>
<script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#pubid=ra-4e21ba8167b87d16"></script>
<!-- AddThis Button END -->
<p class="bordertop">
</p>
<?php
include ('commentaires.php');
}
/*
id ==0, intval renvoie certainement qqch de faux
*/
else
{
echo "Erreur";
}
}
?>
</p>
<?php
mysql_close(); // On n'oublie pas de fermer la connexion à MySQL ;o)
?>
Et voici le code de la page "commentaires.php" :
<?php
// --------------- Étape 2 -----------------
// Commentaires
// -----------------------------------------
// On met dans une variable le nombre de messages qu'on veut par page
$nombreDeMessagesParPage = 5; //
// On récupère le nombre total de messages
$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM commentaires WHERE id_news='.$id.' ');
$data2 = mysql_fetch_array($retour);
$totalDesMessages = $data2['nb_messages'];
// On calcule le nombre de pages à créer
$nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
?>
<p> <h2 class="news">Commentaires</h2>
<p><h2>Laisser un commentaire :</h2><br/>
<center><form class="contact" action="addcom.php" method="post">
<label for="Pseudo">Pseudo :</label> <input type="text" name="auteur" size="43"/>
<br/><br/><label for="message">Message :</label> <textarea name="message" cols="40" rows="8"/></textarea>
<input type="hidden" name="id_news" value="<?php echo $id; ?>"/>
<br/><div style="text-align:center;"><input type="submit" value="Envoyer"/></div>
</form></center>
<?php
// --------------- Étape 3 ---------------
// Maintenant, on va afficher les commentaires
// ---------------------------------------
if (isset($_GET['page']))
{
$page = intval($_GET['page']);
// On récupère le numéro de la page indiqué dans l'adresse
}
else // La variable n'existe pas, c'est la première fois qu'on charge la page
{
$page = 1; // On se met sur la page 1 (par défaut)
}
// On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
$reponse = mysql_query('SELECT * FROM commentaires WHERE id_news='.$id.' ORDER BY date_commentaire DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
while ($data2 = mysql_fetch_assoc($reponse)) {
?>
<p class="comment_meta"><b><?php echo stripslashes($data2['auteur']);?></b> a laissé un commentaire le <?php echo date("d/m/Y à G:i", strtotime($data2['date_commentaire'])); ?>.</p>
<p class="indent"><?php echo stripslashes($data2['message']);?></p>
<?php
}
?>
<p class="bordertop">Pages :
<?php
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
echo '<a href="news.php?id='. $id .' page='. $i . '" title="Accéder à la page">' . $i . '</a> | ';
}
//FIN
// DES
// COMMENTAIRES
?>
Voilà ! Comme je m'en doute, j'ai encore dû faire une grosse boulette que je n'arrive pas à voir. Je m'en remets donc à vos yeux et vos cerveaux d'experts (ce qui n'est pas du tout mon cas. XD)
(Désolée de la longueur du message soit dit en passant...)
Merci à vous d'avoir lu le message et si vous en avez la possibilité et le temps de m'apporter de l'aide. ^^
Bonne journée à toutes et à tous !