v4np13 Posté 18 Décembre 2005 Posté 18 Décembre 2005 (modifié) Bonjour, j'ai un petit problème, je suis en train de faire un script qui affichera 5 articles par page. Le numéro de page est récupéré auparavant dans l'url. $nombreDeMessagesParPage=5;$premierMessageAafficher= ($page-1)*$nombreDeMessagesParPage;$requete="SELECT * FROM livredor ORDER BY ID DESC LIMIT ".$premierMessageAafficher.",5";$reponse= mysql_query($requete) or die( mysql_error() );while ($donnees = mysql_fetch_array($reponse)){ echo '<p><b>'.$donnees['PSEUDO'].'</b> a écrit :<br/>'.$donnees['MESSAGE'].'</p>'; J'ai l'impression que l'erreur vient du LIMIT mais je ne vois pas comment coder celà autrement... Je pensais procéder en selectionnant tout puis en selectionnant dans une boucle. Avec ce code là, il affiche les 5 derniers articles sur toutes les pages. Vous me conseilleriez de faire comment? Merci d'avance Modifié 18 Décembre 2005 par v4np13
Sarc Posté 18 Décembre 2005 Posté 18 Décembre 2005 Bonjour, Fais un affichage de ta requète pour voir s'il n'y a pas un problème sur ta variable page par exemple... En règle général, il faut toujours faire un affichage de la requète quand elle ne fait pas ce qu'on veut : on peut tout de suite voir une erreur comme ça parfois !
v4np13 Posté 18 Décembre 2005 Auteur Posté 18 Décembre 2005 Je viens de faire echo $reponse; il m'affiche Resource id #23
v4np13 Posté 18 Décembre 2005 Auteur Posté 18 Décembre 2005 (modifié) Oops Voila: SELECT * FROM livredor ORDER BY ID DESC LIMIT 0,5 il ne faudrais pas que ca commence à 1 étant donné que les id commencent à 1? Et faire: $premierMessageAafficher= (($page-1)*$nombreDeMessagesParPage)+1; Je vais tester EDIT: avec le code dis au dessus, il me fait la même chose, la requete est toyjours la même sur les pages mais avec le 1 à la place du 0 SELECT * FROM livredor ORDER BY ID DESC LIMIT 1,5 Je ne comprends pas, je récupère bien le numero de la page 1 ou 2, je fais (page-1)*5+1 pour avoir le 1er article (si page = 1, le premier article = 1, si page = 2, le 1er article =6,...) Modifié 18 Décembre 2005 par v4np13
Sarc Posté 18 Décembre 2005 Posté 18 Décembre 2005 Bien ta requète ne semble pas mauvaise à vrai dire... Es-tu sûr que ta table est bonne dans ta base de données, que les id sont bien en ordre croissant, etc ? Tu as essayé cette requète directement dans phpmyadmin ? L'erreur est-elle alors toujours la même ? En général, quand je bloque vraiment, je prends la requète, et j'essaye de la modifier sous phpmyadmin directement afin de trouver le souci, et en regardant la table et les résultats que je voudrais, je me rends compte de mon erreur
v4np13 Posté 18 Décembre 2005 Auteur Posté 18 Décembre 2005 (modifié) Je viens de faire des tests mais l'erreur, c'est le 1er élément à afficher. Sur la page 1 et 2, la requete vaut toujours: SELECT * FROM livredor ORDER BY ID DESC LIMIT 1,5 Le 1 devrait changer d'une page à l'autre. Pour savoir le numéro de la page je fais comme ceci: if (isset($_GET['page'])){ $page = $_GET['page']; }else { $page = 1;} Et mes url ressemble à ceci: http://objectifd1.celeonet.fr/livredor/index.php?page=2 Pour faire urls: voici le code: echo 'Page : ';for ($i = 1; $i <= $nombreDePages; $i++){ echo '<a href="index.php?page='.$i.'">'.$i.'</a> ';} Modifié 18 Décembre 2005 par v4np13
Dan Posté 18 Décembre 2005 Posté 18 Décembre 2005 A mon avis l'erreur est dans cette ligne: $premierMessageAafficher= (($page-1)*$nombreDeMessagesParPage)+1; parce que $premierMessageAafficher ne change pas de valeur. Tu pourrais déjà enlever le "+1" car il faut commencer à 0. Ensuite fais un print $premierMessageAafficher; Tu as dû te louper entre les majuscules et minuscules quelque part dans tes sources.
v4np13 Posté 18 Décembre 2005 Auteur Posté 18 Décembre 2005 (modifié) $premierMessageAafficher vaut toujours 0, ce qui n'est pas normal. Je viens de vérifier les majusucles,... ce n'est pas ça EDIT: J'ai trouvé !! $nombreDeMessagesParPage= 5; était déclaré dans un autre <?php...?> et p-e remodifier entre temps mais ça m'étonnerait. Je l'ai copier-coller juste avant la requete. Maintenant, ça roule au poil Un grand merci à vous tous Modifié 18 Décembre 2005 par v4np13
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant