Pagination de news en php

yunie77 Messages postés 15 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 13 avril 2006 - 22 nov. 2005 à 20:26
yunie77 Messages postés 15 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 13 avril 2006 - 6 déc. 2005 à 20:21
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

J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
22 nov. 2005 à 20:33
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) ....
0
yunie77 Messages postés 15 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 13 avril 2006
22 nov. 2005 à 20:38
il faut que je fasse autant de requete ?
je comprend pas très bien le principe :$
0
yunie77 Messages postés 15 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 13 avril 2006
22 nov. 2005 à 20:55
y a t'il une âme charitable pour aider une fille en détresse :$
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
22 nov. 2005 à 21:22
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>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yunie77 Messages postés 15 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 13 avril 2006
22 nov. 2005 à 21:25
merci de ta réponse je vais essayer de me débrouiller je suis de villeparisis c'est à coté ^^
0
yunie77 Messages postés 15 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 13 avril 2006
22 nov. 2005 à 21:27
il y a rien à faire j'y arrive pas je suis nulle :'(
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
22 nov. 2005 à 21:59
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>
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
22 nov. 2005 à 22:50
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 ! ;)
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
22 nov. 2005 à 22:53
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>
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
22 nov. 2005 à 22:54
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>
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
22 nov. 2005 à 23:23
Ahahahah

Grillé :p
0
yunie77 Messages postés 15 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 13 avril 2006
23 nov. 2005 à 18:38
je suis en bts ig2 et j'aimerai bien des cours d'info
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
23 nov. 2005 à 18:42
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>
0
yunie77 Messages postés 15 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 13 avril 2006
23 nov. 2005 à 20:11
si tu as le temps oui
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
23 nov. 2005 à 22:46
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>
0
justine75 Messages postés 49 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 29 décembre 2005
23 nov. 2005 à 23:33
moi ossi j'aimerais bien avoir des cours :p
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
23 nov. 2005 à 23:50
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 :)
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
24 nov. 2005 à 10:26
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>
0
yunie77 Messages postés 15 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 13 avril 2006
24 nov. 2005 à 21:00
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
0
yunie77 Messages postés 15 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 13 avril 2006
24 nov. 2005 à 21:58
j'en peux plus pourquoi ça marche pas
0
Rejoignez-nous