Pagination News

Eléphant du PHP | 184 Messages

29 mars 2011, 17:47

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>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

29 mars 2011, 17:54

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é ?


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 184 Messages

29 mars 2011, 17:56

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

29 mars 2011, 18:08

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 :)
}
?>
@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 184 Messages

30 mars 2011, 09:34

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 !!

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

30 mars 2011, 17:02

;)

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é ;))

@+
Il en faut peu pour être heureux ......