Pagination simple => tutorial

Soyez le premier à donner votre avis sur cette source.

Snippet vu 18 369 fois - Téléchargée 33 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

Messages postés
197
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
29 avril 2009
2
yop po de souçis , sous une ptite 15 aine de jours ;)
Messages postés
15
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
13 avril 2006

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
Messages postés
197
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
29 avril 2009
2
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é ...
Messages postés
45
Date d'inscription
mardi 25 novembre 2003
Statut
Membre
Dernière intervention
1 juin 2005

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


on pourrait mettre des betises dans l'url
Messages postés
15
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
13 avril 2006

merci beaucoup pour ce code ça m'a bien aider
Afficher les 9 commentaires

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.