Pagination simple => tutorial

0/5 (9 avis)

Snippet vu 19 671 fois - Téléchargée 35 fois

Contenu du snippet

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

Source / Exemple :


// 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

A voir également

Ajouter un commentaire Commentaires
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.