begin process at 2012 05 27 19:33:47
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Tutoriaux

 > PAGINATION SIMPLE => TUTORIAL

PAGINATION SIMPLE => TUTORIAL


 Information sur la source

Note :
4 / 10 - par 2 personnes
4,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Tutoriaux Niveau :Débutant Date de création :04/08/2004 Vu :13 683

Auteur : mickaelpfr

Ecrire un message privé
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

 Description

Voici un système de pagination simple et détaillé ( explications jointe )

Source

  • // créer votre bdd contenant cette table pour tester la pagination
  • CREATE TABLE `news` (
  • `id` int(10) unsigned NOT NULL auto_increment,
  • `titre` tinytext NOT NULL,
  • `texte` text NOT NULL,
  • `date` datetime NOT NULL default '0000-00-00 00:00:00',
  • PRIMARY KEY (`id`)
  • ) TYPE=MyISAM AUTO_INCREMENT=18 ;
  • #
  • # Contenu de la table `news`
  • #
  • INSERT INTO `news` VALUES (7, 'Musique', 'Alors ce matin j\'ai reçu 3 cédés que j\'avais commandé sur priceminister.\r\nJ\'écoute, bon ça à l\'air sympa, mais je suis pas transcendé non plus.\r\n\r\nEn tout cas vive le dub :]', '2004-01-20 12:33:59');
  • INSERT INTO `news` VALUES (8, 'Histoire drôle', 'C\'est paf le chien qui..\r\n\r\nnon, rien.', '2004-01-20 17:29:10');
  • INSERT INTO `news` VALUES (9, 'Recrudescence d\'ours', 'C\'est un fait indéniable: les ours sont de plus en plus nombreux. Certains occupent même des postes clé dans l\'administration de notre pays, et nombreux sont ceux qui possèdent une résidence secondaire sur la côte d\'azur, telle le loyal membre du gouvernement russe et sa datcha au beau milieu de la forêt de Sibérie. Il apparait même, selon un récent sondage, que 45% des truites de montagne seraient pour l\'élection d\'un ours à la présidence en 2007.\r\nCela n\'est cependant pas du goût de tout le monde, comme nous le fait remarquer Amira Bzzbzz, la représentante de la Confédération des Abeilles Unies: "ben voyons, un président ours! et qui est ce qui va encore faire du miel à l\'oeil?! c\'est nous!". Situation donc tendue à l\'approche des élections qui seront, soyons-en sûrs, décisives.', '2004-01-20 17:30:59');
  • INSERT INTO `news` VALUES (10, 'encore un test :)', 'c\'est nickel ça fonctionne :D', '2004-07-28 18:21:31');
  • INSERT INTO `news` VALUES (11, 'c trop fort ça marche', 'ben voila le texte c trop cool', '0000-00-00 00:00:00');
  • INSERT INTO `news` VALUES (12, 'fbvddfg', 'gdsfgfdgfdgfds', '0000-00-00 00:00:00');
  • INSERT INTO `news` VALUES (13, 'gfdsgfdsgfds', 'fdsgfdsgdfgfdsgdsfgdsf', '0000-00-00 00:00:00');
  • INSERT INTO `news` VALUES (14, 'gfdsgfdsgfds', 'fdsgfdsgdfgfdsgdsfgdsf', '0000-00-00 00:00:00');
  • INSERT INTO `news` VALUES (15, 'gfdsgfdsgfds', 'fdsgfdsgdfgfdsgdsfgdsf', '0000-00-00 00:00:00');
  • INSERT INTO `news` VALUES (16, 'gfdsgfdsgfds', 'fdsgfdsgdfgfdsgdsfgdsf', '0000-00-00 00:00:00');
  • INSERT INTO `news` VALUES (17, 'gfdgdsfgfds', 'gfdsgfdgfdsdfg', '0000-00-00 00:00:00');
  • // le code :)
  • <?php
  • //partie de connexion a la bdd
  • $serveur = "localhost";
  • $login = "root";
  • $pass = "";
  • $connexion = mysql_connect( $serveur, $login, $pass );
  • mysql_select_db( "weblog", $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 "<br>et il y aura $moy page<br>";
  • //*********** 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 "<a href=\"pagination.php?page=".($_GET['page']-1)."\">Precedent</a> ";
  • }
  • }
  • 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 "<a href=\"pagination.php?page=".($i+1)."\"> Page ".($i+1)."</a> ";
  • }
  • //*********** 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 " <a href=\"pagination.php?page=".($_GET['page']+1)."\">Suivant</a>";
  • }
  • }
  • else{echo "<a href=\"pagination.php?page=1\">Suivant</a>";}
  • }
  • //*********** fin de la partie concernant le "bouton" Suivant ***********\\
  • echo "<br>La page courante est :".$_GET['page'];
  • ?>
// créer votre bdd contenant cette table pour tester la pagination

CREATE TABLE `news` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `titre` tinytext NOT NULL,
  `texte` text NOT NULL,
  `date` datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=18 ;

#
# Contenu de la table `news`
#

INSERT INTO `news` VALUES (7, 'Musique', 'Alors ce matin j\'ai reçu 3 cédés que j\'avais commandé sur priceminister.\r\nJ\'écoute, bon ça à l\'air sympa, mais je suis pas transcendé non plus.\r\n\r\nEn tout cas vive le dub :]', '2004-01-20 12:33:59');
INSERT INTO `news` VALUES (8, 'Histoire drôle', 'C\'est paf le chien qui..\r\n\r\nnon, rien.', '2004-01-20 17:29:10');
INSERT INTO `news` VALUES (9, 'Recrudescence d\'ours', 'C\'est un fait indéniable: les ours sont de plus en plus nombreux. Certains occupent même des postes clé dans l\'administration de notre pays, et nombreux sont ceux qui possèdent une résidence secondaire sur la côte d\'azur, telle le loyal membre du gouvernement russe et sa datcha au beau milieu de la forêt de Sibérie. Il apparait même, selon un récent sondage, que 45% des truites de montagne seraient pour l\'élection d\'un ours à la présidence en 2007.\r\nCela n\'est cependant pas du goût de tout le monde, comme nous le fait remarquer Amira Bzzbzz, la représentante de la Confédération des Abeilles Unies: "ben voyons, un président ours! et qui est ce qui va encore faire du miel à l\'oeil?! c\'est nous!". Situation donc tendue à l\'approche des élections qui seront, soyons-en sûrs, décisives.', '2004-01-20 17:30:59');
INSERT INTO `news` VALUES (10, 'encore un test :)', 'c\'est nickel ça fonctionne :D', '2004-07-28 18:21:31');
INSERT INTO `news` VALUES (11, 'c trop fort ça marche', 'ben voila le texte c trop cool', '0000-00-00 00:00:00');
INSERT INTO `news` VALUES (12, 'fbvddfg', 'gdsfgfdgfdgfds', '0000-00-00 00:00:00');
INSERT INTO `news` VALUES (13, 'gfdsgfdsgfds', 'fdsgfdsgdfgfdsgdsfgdsf', '0000-00-00 00:00:00');
INSERT INTO `news` VALUES (14, 'gfdsgfdsgfds', 'fdsgfdsgdfgfdsgdsfgdsf', '0000-00-00 00:00:00');
INSERT INTO `news` VALUES (15, 'gfdsgfdsgfds', 'fdsgfdsgdfgfdsgdsfgdsf', '0000-00-00 00:00:00');
INSERT INTO `news` VALUES (16, 'gfdsgfdsgfds', 'fdsgfdsgdfgfdsgdsfgdsf', '0000-00-00 00:00:00');
INSERT INTO `news` VALUES (17, 'gfdgdsfgfds', 'gfdsgfdgfdsdfg', '0000-00-00 00:00:00');

// le code :)
<?php
//partie de connexion a la bdd
$serveur = "localhost";
$login = "root";
$pass = "";
$connexion = mysql_connect( $serveur, $login, $pass );
mysql_select_db( "weblog", $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 "<br>et il y aura $moy page<br>";
//*********** 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 "<a href=\"pagination.php?page=".($_GET['page']-1)."\">Precedent</a> ";
      }
  }
    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 "<a href=\"pagination.php?page=".($i+1)."\"> Page ".($i+1)."</a> ";
}

//*********** 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 " <a href=\"pagination.php?page=".($_GET['page']+1)."\">Suivant</a>";
      }
  }
  else{echo "<a href=\"pagination.php?page=1\">Suivant</a>";}
}
//*********** fin de la partie concernant le "bouton" Suivant ***********\\

echo "<br>La page courante est :".$_GET['page'];
?>

 Conclusion

Voila vous pouvez tester, et me faire part de vos commenttaires
pour la partie affichage des news ou du contenu il en va de tout a chacun cette source est ici pour servir d'explication


 Sources du même auteur

Source avec Zip Source avec une capture GALLERIE PHOTO BASÉ SUR AJAX
Source avec Zip PHPADM GESTIONNAIRE DE SITE

 Sources de la même categorie

Source avec une capture INTÉGRER À UNE BASE DE DONNÉES DES COORDONNÉES GÉOGRAPHIQUES... par slhuilli
Source avec Zip DÉCOMPOSER UN CODE PHP AVEC LA FONCTION INCLUDE par Julien39
CRÉATION D'UN SCRIPT D'AUTHENTIFICATION par phpAnonyme
Source avec Zip Source avec une capture N/X API: GOOGLE MAPS DEPUIS PHP VALID W3C par GillesWebmaster
PHP EXTRAIRE DES MAILS D'UN GROS FICHIER LOCAL OU DISTANT par cosmoswarezone1

Commentaires et avis

Commentaire de elodieb le 09/08/2005 10:14:45

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 "<br>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

Commentaire de mickaelpfr le 09/08/2005 10:43:16

Hé bien je viens de relire ma source ( waou elle date :) ) je viens de trouver "l'erreur" , a la ligne ( 74 pour moi ) :
echo "<br>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 "<br>et il y aura $moy page<br>";
//*********** 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 "<a href=\"index.php?page=".($_GET['page']-1)."\">Precedent</a> ";
}
}
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 "<a href=\"index.php?page=".($i+1)."\"> Page ".($i+1)."</a> ";
}

//*********** 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 " <a href=\"index.php?page=".($_GET['page']+1)."\">Suivant</a>";
      }
      echo "<br>La page courante est :".$_GET['page']."";
  }
  else{echo "<a href=\"index.php?page=1\">Suivant</a>";}
}
//*********** 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

Commentaire de pidjot le 17/10/2005 18:18:44

hummm la bonne gros faille de securite

Commentaire de mickaelpfr le 17/10/2005 21:57:19

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

Commentaire de yunie77 le 22/11/2005 20:00:20

merci beaucoup pour ce code ça m'a bien aider

Commentaire de pidjot le 22/11/2005 20:11:44

echo "<br>La page courante est :".$_GET['page']."";


on pourrait mettre des betises dans l'url

Commentaire de mickaelpfr le 28/11/2005 21:19:33

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é ...

Commentaire de yunie77 le 28/11/2005 22:04:32

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

Commentaire de mickaelpfr le 29/11/2005 20:06:22

yop po de souçis , sous une ptite 15 aine de jours ;)

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,452 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales