Aller au contenu

[Résolu] Requete et affichage


Sujets conseillés

Posté (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é par v4np13
Posté

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 !

Posté

Pas de la réponse, de la requète : echo $requete; ;)

Posté (modifié)

Oops :blush: 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é par v4np13
Posté

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

Posté (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é par v4np13
Posté

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.

Posté (modifié)

$premierMessageAafficher vaut toujours 0, ce qui n'est pas normal.

Je viens de vérifier les majusucles,... ce n'est pas ça :unsure:

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 :D

Un grand merci à vous tous :fete:

Modifié par v4np13

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...