Page 1 sur 1

Pagination News

Posté : 29 mars 2011, 17:47
par TRUNCKS
Bonjour,

J'ai besoin de votre aide :)

J'ai suivi un tuto du zero pour faire un petit systeme de news, puis un autre pour faire la pagination de ces news.
Mais j'ai tout mélangé et je me retrouve avec un soupe qui ne fonctionne pas.

Pouvez vous me mettre sur la voie, voici mon code index.php qui affiche les news:

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > <head> <title>Bienvenue sur mon site</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <style type="text/css"> h1, h3 { text-align:center; } h3 { background-color:black; color:white; font-size:0.9em; margin-bottom:0px; } .news p { background-color:#CCCCCC; margin-top:0px; } .news { width:70%; margin:auto; } </style> </head> <body> <h1>Bienvenue sur mon site !</h1> <p>Voici les dernières news :</p> <?php mysql_connect("localhost", "root", ""); mysql_select_db("news"); // On met dans une variable le nombre de messages qu'on veut par page $nombreDeMessagesParPage = 5; // Essayez de changer ce nombre pour voir :o) // On récupère le nombre total de messages $retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM news'); $donnees = mysql_fetch_array($retour); $totalDesMessages = $donnees['nb_messages']; // On calcule le nombre de pages à créer $nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage); // Puis on fait une boucle pour écrire les liens vers chacune des pages echo 'Page : '; for ($i = 1 ; $i <= $nombreDePages ; $i++) { echo '<a href="index.php?page=' . $i . '">' . $i . '</a> '; } ?> </p> <?php if (isset($_GET['page'])) { $page = $_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 index ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage); while ($donnees = mysql_fetch_array($reponse)) { echo '<p><strong>' . $donnees['pseudo'] . '</strong> a écrit :<br />' . $donnees['message'] . '</p>'; } // On récupère les cinq dernières news. $retour = mysql_query('SELECT * FROM news ORDER BY id DESC LIMIT 0, 5'); while ($donnees = mysql_fetch_array($retour)) { ?> <div class="news"> <h3> <?php echo $donnees['titre']; ?> <em>le <?php echo date('d/m/Y à H\hi', $donnees['timestamp']); ?></em> </h3> <p> <?php // On enlève les éventuels antislashs, PUIS on crée les entrées en HTML (<br />). $contenu = nl2br(stripslashes($donnees['contenu'])); echo $contenu; ?> </p> </div> <?php } // Fin de la boucle des <italique>news</italique>. ?> </body> </html>

Re: Pagination News

Posté : 29 mars 2011, 17:54
par moogli
salut,

désolé mais ça fonctionne pas c'est vraiment un symptome, peut tu nous indiquer plus clairement ce qui ne fonctionne pas, et quel test tu a effectué ?


@+

Re: Pagination News

Posté : 29 mars 2011, 17:56
par TRUNCKS
En fait, les pages se créent bien au bout de 5 news, mais quand je clique sur la page 2 les mêmes news restent en place.

C'est un problème à l'affichage, j'ai mélangé le tuto news et pagination et n'arrive plus à m'y retrouver.

J'ai cette erreur aussi:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\index.php on line 89

Re: Pagination News

Posté : 29 mars 2011, 18:08
par moogli
requete sql foireuse ;)

regarde la ligne mysql_query avant et affiche mysql_error() afin d'avoir plus de détails.

par exemple
<?php
$reponse = mysql_query('SELECT * FROM index ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
if ($reponse === false) {
echo 'Erreur SQL : '.mysql_error().'<br />';
}
else {
//traitement de l'affichage avec le while et tout :)
}
?>
@+

Re: Pagination News

Posté : 30 mars 2011, 09:34
par TRUNCKS
Effectivement, je me suis trompé de table sur ma requête.

News et non pas index qui est le nom de la page !!!

J'étais pas si loin finalement lol

Merci encore !!

Re: Pagination News

Posté : 30 mars 2011, 17:02
par moogli
;)

peux tu marquer le sujet résolus pour aider d'autre gens ayant le même soucis que toi ? (bouton résolus sur le message qui t'a aidé ;))

@+