PAGINATION SIMPLE => TUTORIAL

cs_elodieb Messages postés 22 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 10 août 2005 - 9 août 2005 à 10:14
mickaelpfr Messages postés 197 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 29 avril 2009 - 29 nov. 2005 à 20:06
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/25166-pagination-simple-tutorial

mickaelpfr Messages postés 197 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 29 avril 2009 2
29 nov. 2005 à 20:06
yop po de souçis , sous une ptite 15 aine de jours ;)
yunie77 Messages postés 15 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 13 avril 2006
28 nov. 2005 à 22:04
mickaelpfr pourras tu m'avertir quand celle ci sera parue j'aime besoin d'aide à ce niveau la merci d'avance mon email : yuna_lae@msn.com
mickaelpfr Messages postés 197 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 29 avril 2009 2
28 nov. 2005 à 21:19
yop c'est ce que je disais ;)
pour la sécurisé il faudrait dans l'ordre :
vérifier l'existance ( fonction isset )
vérifier que $_GET('page') ne contient QUE des caractères numériques
Limiter le nombre de caractères saisie a 4 chiffres par exemple ( largement suffisant .... )
je posterais très bientot une source d'un gestionnaire de news tout aussi commenté ...
pidjot Messages postés 45 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 1 juin 2005
22 nov. 2005 à 20:11
echo "
La page courante est :".$_GET['page']."";


on pourrait mettre des betises dans l'url
yunie77 Messages postés 15 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 13 avril 2006
22 nov. 2005 à 20:00
merci beaucoup pour ce code ça m'a bien aider
mickaelpfr Messages postés 197 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 29 avril 2009 2
17 oct. 2005 à 21:57
c'est a dire explique toi ??
si il y a une faille que je pourrais corriger , elle vient du get sur laquelle je ne fais pas de vérification ???
merci de m'éclairer
pidjot Messages postés 45 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 1 juin 2005
17 oct. 2005 à 18:18
hummm la bonne gros faille de securite
mickaelpfr Messages postés 197 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 29 avril 2009 2
9 août 2005 à 10:43
Hé bien je viens de relire ma source ( waou elle date :) ) je viens de trouver "l'erreur" , a la ligne ( 74 pour moi ) :
echo "
La page courante est :".$_GET['page']."";
je tente d'afficher la variable 'page' sans aucune vérification, il faut donc juste se servir de la fonction isset qq ligne plus haut, ce qui donne :

<?php
//partie de connexion a la bdd
$serveur = "localhost";
$login = "root";
$pass = "";
$connexion = mysql_connect( $serveur, $login, $pass );
mysql_select_db( "pagination", $connexion );
//********** Fin de la partie connexion **********\\
$nbParPage = 5;
//on effectue la requète sur l'objet que l'on souhaite paginer ( ici des news )
$req1=mysql_query("SELECT * FROM news");
$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 ***********\\


?>


je l'ai vérifier plusieurs fois , plus de bug a ma connaissance.

pour l'adapter a votre moteur de recherche, il vous suffit de récupérer le nombre d'occurence trouver par votre requète recherche et de vous servir de ces 2 lignes :

$nbParPage = 5; // nb d'élément a afficher par page
//vous modifiez la requète suivante par celle qui vous renvois le résultat de votre recherche :)
$req1=mysql_query("SELECT * FROM news");


en espérant vous avoir aider au mieux

coordialement
cs_elodieb Messages postés 22 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 10 août 2005
9 août 2005 à 10:14
bonjour, je viens de découvrir ce code, je vous en remercie.
j'essaie de le tester mais il me met un message d'erreur comme quoi: Undefined index: on line 100 qui correspond à
echo "
La page courante est :".$_GET['page'];
pouvez vous me dire s'il vous plait si page est une variable que je doit déclarer ou alors à quoi elle correspond exactement
merci d'avance
Rejoignez-nous