Soyez le premier à donner votre avis sur cette source.
Snippet vu 18 598 fois - Téléchargée 33 fois
// 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']; ?>
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é ...
La page courante est :".$_GET['page']."";
on pourrait mettre des betises dans l'url
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.