Pagination de news en php

Signaler
Messages postés
15
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
13 avril 2006
-
Messages postés
15
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
13 avril 2006
-
bonsoir à tous,

j'ai un problème sur ma pagination. je veux mettre seulement 5 news par page, mais toutes les news apparaissent a chaque fois. si je met un LIMIT 0,5 dans ma requete sql. j'ai bien mais 5 news mais les autres n'apparaissent tjrs pas dans les autres pages.
le code est le suivant :

<?php
//partie de connexion a la bdd
$serveur = "localhost";
$login = "root";
$pass = "";
$connexion = mysql_connect( $serveur, $login, $pass );
mysql_select_db( "news", $connexion );
//********** Fin de la partie connexion **********\\
$nbParPage = 3;
//on effectue la requète sur l'objet que l'on souhaite paginer ( ici des news )
$req1=mysql_query("SELECT id_news, nom_redacteur, titre_news, message_news, date_news
FROM redacteur, news
ORDER BY date_news DESC;");
$nbNews=mysql_numrows($req1);
//$nbnews=$nbnews[0];
echo "il y a $nbNews";

//On calcule le nombre de numéro à afficher en fonction du nombre de news par
//page en arrondissant au nombre supérieur grace a la fonction ceil.
$moy= ceil($nbNews/$nbParPage);
echo "
et il y aura $moy page
";

//*********** Partie concernant le "bouton" précedent ***********\\
//on vérifie qu'il y a au minimum 2 page a afficher pour utiliser
//la fonction Suivant / précédent
if ($moy>=2)
{
//on vérifie l'éxistence de la variable page avant les vérifications
if (isset($_GET['page']))
{
//si $_GET['page'] = 1 alors on est a la première page et donc pas besoins
//de lien vers la précédente qui n'éxiste pas
if ($_GET['page']==1){echo "Precedent ";}
//sinon on met le lien en ajoutant +1 page a la page courante
else
{
echo "Precedent ";
}
}
else{echo "Precedent ";}
}
//*********** fin de la partie concernant le "bouton" précedent ***********\\

//prenons un exemple concret :
// nous avons 10 news dans la base
// a ce moment nous savons donc qu'il y aura 2 page :
// $nbNews 10 divisé par 5 ( 5 news par page ) 2 pages.
// on peut déja afficher les numéros :
// on effectue une boucle tant qu'il y a des pages on ajoute un lien
for ($i=0;$i<$moy;$i++)
{
// on ajoute 1 a $i pour afficher 1-2-3-... au lieu de 0-1-2-3-...
echo " Page ".($i+1)." ";
}

//*********** Partie concernant le "bouton" suivant ***********\\
//on vérifie qu'il y a au minimum 2 page a afficher pour utiliser
//la fonction Suivant / précédent
if ($moy>=2)
{
//on vérifie l'éxistence de la variable page avant les vérifications
if (isset($_GET['page']))
{
//si $_GET['page'] = $moy alors on est a la dernière page et donc pas besoins
//de lien vers la suivante qui n'éxiste pas
if ($_GET['page']==$moy){echo " Suivant";}
//sinon on met le lien en ajoutant +1 page a la page courante
else
{
echo " Suivant";
}
echo "
La page courante est :".$_GET['page']."";
}
else{echo "Suivant";}
}
//*********** fin de la partie concernant le "bouton" Suivant ***********\\
while ($tab = mysql_fetch_array($req1))
{
$nom = $tab[1];
$titre= $tab[2];
$message = $tab[3];
$date_tmp = explode(" ", $tab[4]);
$date_tmp2 = explode("-", $date_tmp[0]);
$heure = $date_tmp[1]; //explode decoupe la chaine en tableaux en separant la ou il y a des -
$date = array_reverse($date_tmp2);

//affichage des informations dans un formulaire précomplété
echo "".$tab[2].",
".$date[0]."/".$date[1]."/".$date[2]." ".$heure.",

----

".$tab[3].",

----

par : ".$tab[1].",

,
,

----

\";

echo "
";
}

?>

MERCi de votre aide

21 réponses

Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
7
J'ai déjà vu ce post quelque part ;)





while ($tab = mysql_fetch_array($req1))



ben, si tu boucle sur tout ton résultat, c'est forcée que tu les affiches toutes tes news !!! non ?





pour ne sortir que les bonnes news de la requète :



SELECT ........ LIMIT 0,5; <= page 1

SELECT ........ LIMIT 5,5; <= page 2

SELECT ........ LIMIT 10,5; <= page 3

...





bien sûr tu comptes le nombre de pages avant

SELECT count(ID) ....
Messages postés
15
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
13 avril 2006

il faut que je fasse autant de requete ?
je comprend pas très bien le principe :$
Messages postés
15
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
13 avril 2006

y a t'il une âme charitable pour aider une fille en détresse :$
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
21 ans c'est intéressant ça ^^ (t'es d'où dans le 77 ?) si tu connais Chelles (on sait jamais lol...)

Bref non tu fais une seule requête avec LIMIT debut,nombre_d'enregistrements_retourné

exemple si tu veux commencer au 10 ème enregistrement et retourner 5 enregistrements :

SELECT blabla FROM table WHERE machin LIMIT 10,5

mais bon... faudrait éviter de passer par un limit et bosser sur le champ id unique, ça serait largement plus efficace.
<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Messages postés
15
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
13 avril 2006

merci de ta réponse je vais essayer de me débrouiller je suis de villeparisis c'est à coté ^^
Messages postés
15
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
13 avril 2006

il y a rien à faire j'y arrive pas je suis nulle :'(
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Ah ok Villeparisis :-)

si tu es blonde à forte poitrine on peut s'arranger (non je déconne lol)

si t'arrives à fournir un code concis je peux regarder, mais voir un pavé comme ça ça m'attire pas désolé :-(

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
Anthomicro : "si t'arrives à fournir un corps assez concis je peux regarder, mais voir un pavé comme ça ça m'attire pas désolé :-("

Han le salo ! ;)
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Bah disons que si elle poste sa photo et ses mensurations je veux bien faire de l'assistance à domicile :-) (ça ira plus vite) lol

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
ENFOIRE MDR

j'avais pas vu la citation "un corps" au lieu de "un code".

Pas bien de déformer mes propos (tu me diras je n'en penses pas moins ^^)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
Ahahahah

Grillé :p
Messages postés
15
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
13 avril 2006

je suis en bts ig2 et j'aimerai bien des cours d'info
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
A domicile ?

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Messages postés
15
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
13 avril 2006

si tu as le temps oui
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Hum c'est intéressant ça ^^

quand j'aurais le permis pourquoi pas ^^ et plus si affinités ? (quel HS je suis désolé)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Messages postés
49
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
29 décembre 2005

moi ossi j'aimerais bien avoir des cours :p
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
J'imagine de mon chez moi le cours type d'Antho à domicile :

Elle : "Dis moi, ou est-ce que c'est faux dans mon code ?"
Lui : "Alors pour commencer, tu dois utiliser echo() avec des '' et non des "". Ensuite, on n'utilise plus
mais
. Après, c'est mieux d'utiliser mysql_fetch_row que mysql_fetch_array..."
etc... :)

Et après, ca fini en geek attitude :p
Lui : "Est ce que je peux te query quelque chose ?"
Elle : "Heu .... oui ?"
Lui (fait dans sa tête une forme de syntaxe SQL de type SELECT) : "Est ce que tu es seule ?"
Elle : "Oui pourquoi ?"
Lui (utilise la fonction de fetch_row afin de comprendre la réponse donnée) : "Non comme ca ... :)"
Lui ( fait un tas de query type SELECT pour en savoir un maximum ! )
...
...
Lui (fait sans le vouloir un die() ce qui causa un arrêt immédiat de la discussion) : "Fatal error : Exception stack at line 9383749 > More memory is needed : 16Mb needed more. Program Halted."

Enfin, j'espère que pour toi ca n'arrivera pas :)
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
FhX > ça serait pas du tout comme ça, tout d'abord résolution du problème façon geek (rapidement quoi) tout en expliquant la résolution le moins possible si elle est jolie comme ça je reviens chez elle après (lol) et ensuite ça se termine ailleurs que devant le PC ^^

enfin tout ça c'est idéaliste lol

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Messages postés
15
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
13 avril 2006

j'ai utilisée mysql_fetch_row, j'ai encore fait une boucle pour afficher toutes les news mais je vois pas ce qu'il fo faire pour afficher le reste dans la seconde page :'( HELP ME please
Messages postés
15
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
13 avril 2006

j'en peux plus pourquoi ça marche pas