Pagination classique

  Information

Affichage page par page classique. Lecture à partir d'une base MySQL. Script complet avec exemples. 

  code source classé dans  Page par Page - Pagination

 
 01    
 02    
 03    
 04    
 05    
 06    
 07    
 08    
 09    
 10    
 11    
 12    
 13    
 14    
 15    
 16    
 17    
 18    
 19    
 20    
 21    
 22    
 23    
 24    
 25    
 26    
 27    
 28    
 29    
 30    
 31    
 32    
 33    
 34    
 35    
 36    
 37    
 38    
 39    
 40    
 41    
 42    
 43    
 44    
 45    
 46    
 47    
 48    
 49    
 50    
 51    
 52    
 53    
 54    
 55    
 56    
 57    
 58    
 59    
 60    
 61    
 62    
 63    
 64    
 65    
 66    
 67    
 68    
 69    
 70    
 71    
 72    
 73    
 74    
 75    
 76    
 77    
 78    
 79    
 80    
 81    
 82    
 83    
 84    
 85    
 86    
 87    
 88    
 89    
 90    
 91    
 92    
 93    
 94    
 95    
 96    
 97    
 98    
 99    
 100    
 101    
 102    
                               
<?php
/*---------------------------------------------------------------*/
/*
    Titre : Pagination classique                                                                                          
                                                                                                                          
    URL   : https://phpsources.net/code_s.php?id=47
    Date Ã©dition     : 05 Sept 2004                                                                                       
    Date mise Ã  jour : 26 Sept 2019                                                                                      
    Rapport de la maj:                                                                                                    
    - refactoring du code en PHP 7                                                                                        
    - fonctionnement du code vérifié                                                                                
*/
/*---------------------------------------------------------------*/?>
    CREATE TABLE IF NOT EXISTS `phpsources_test` (
      `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
      `texte` text,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    --
    -- Données de la table `phpsources_test`
    --

    INSERT INTO `phpsources_test` (`id`, `texte`) VALUES
    (1, 'I love PHP'),
    (2, 'I do PHP'),
    (3, 'Hello world'),
    (4, 'Good morning'),
    (5, 'Good night'),
    (6, 'Im Free');
                               
<?php

    $db_server 'localhost'// Adresse du serveur MySQL
    $db_name '';            // Nom de la base de données
    $db_user_login 'root';  // Nom de l'utilisateur
    $db_user_pass '';       // Mot de passe de l'utilisateur

    // Ouvre une connexion au serveur MySQL
    $conn mysqli_connect($db_server,$db_user_login$db_user_pass$db_name);


    $page isset($_GET['page']) ? $_GET['page'] : ''
    $debut '';
    // Prepare le requete MySql
    $requete "SELECT * from phpsources_test";
    $ret mysqli_query($conn,$requete);

    // Variable nombre d'enreg par page
    $limit=2;


    if($debut==""){$debut=0;}
    $debut=$page*$limit;
    // Compte le nombre de champ
    $nb_total=$ret->num_rows;
    // Requete
    $limite mysqli_query($conn,"$requete limit $debut,$limit");


    // Affiche le page par page avec ses liens
    if ($page>0) {
    $precedent=$page-1;
    echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$precedent\">PRECEDENT</a>";
    }

    $i=0;
    $j=1;

    if($nb_total>$limit) {
    while($i<($nb_total/$limit)) {
    if($i!=$page){echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$i\">$j</a> ";}
    else { echo "<b>$j</b>";}
    $i++;$j++;
    }
    }

    if($debut+$limit<$nb_total) {
    $suivant=$page+1;
    echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$suivant\">SUIVANT</a>";
    }


    //Affichage le contenu de votre table
    //avec une limite, dans l'exemple $limit est Ã Â  4

    $limit_str "LIMIT "$page $limit .",$limit";

    $result mysqli_query($conn,"
                          SELECT * 
                          FROM phpsources_test
                          ORDER BY id 
                          ASC $limit_str");
    while ($row mysqli_fetch_array ($result) )
    {
    // affiche les different champs
    echo $row['texte'];
    echo"<br />";
    }
?>

Exemple :

 
 01    
 02    
 03    
 04    
 05    
 06    
 07    
 08    
 09    
 10    
                                
    Imprime :

    <b>1</b><a href="test.php?page=1">2</a>
    <a href="test.php?page=2">3</a>
    <a href="test.php?page=1">SUIVANT</a>

    I love PHP<br />
    I do PHP<br />

          Fonctions du code - Doc officielle PHP

   php.net   Description Versions PHP OUTIL
   echo Affiche une chaîne de caractères PHP 4, PHP 5, PHP 7, PHP 8
   isset Détermine si une variable est affectée PHP 4, PHP 5, PHP 7, PHP 8
   mysqli_connect Ouvre une connexion à un serveur MySQL PHP 5, PHP 7, PHP 8
   mysqli_fetch_array Retourne une ligne de résultat sous la forme d'un tableau associatif PHP 5, PHP 7, PHP 8
   mysqli_query Exécute une requête sur la base de données PHP 5, PHP 7, PHP 8

   Dites merci aux auteurs pour leurs travail, ça ne coûte rien et ça fait toujours plaisir wink

[29]

  • avatar

    Invité

    25 Sept 2019 à 12:27

    Je viens d'essayer le code, aprés des ptites adaptations perso ca fonctionne nickel

  • avatar

    Invité

    08 Mai 2012 à 05:24

    Bonjour Le code fonctionne bien mais comment faire pour afficher ceci : 1-2-3-4-5-6-"..."SUIVANT
    PLutot qu'une liste infiniment de numero : 1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17-18-19-20.etc.... Merci !!!

  • avatar

    Jamstar

    18 Jan 2011 à 14:16

    Merci pour votre script ca fonctionne tres bien et pas compliqué à adapter !

  • avatar

    Invité

    29 Sept 2010 à 12:18

    Merci infiniment Mon ami
    ça marche convenablement

  • avatar

    KOogar

    06 Mai 2010 à 14:33

    avec recherche ou sans recherche c'est du pareil au meme, ton probleme peux venir de la ligne 26 ou tu dois egalement paramétrer la requete... select champ1from t1 like "%key%"

  • avatar

    Invité

    06 Mars 2009 à 12:30

    Le scripte marche bien. Par contre lorqu'on fait une recherche par critère il affiche bien les résultats attendus, mais avec tous les liens. Par exemple j'ai fait une recherche j'obtiens 1 seul engregistement. normalement l'affichage doit être à 1 sans lien. Chez moi il m'affiche 1,2,etc... avec les différents liens. Il me semble qu'il n'est pas adapté pour des recherches affinées. Normalement quand il y a un seul 1 seul enregistrement et que la limte est à 3 par exemple les liens suivants et précédents doivent disparaîtrent. Merci de m'aider s'il vous plaît.

  • avatar

    Invité

    18 Fév 2009 à 17:30

    Bonjour, je viens d'essayer de faire fonctionner ce script, mais apparemment il ya une erreur sur la requete qui affiche le contenu de la table. Il n'accepte pas le "ORDER BY id
    ASC $limit_str" si j'enleve, il m'affiche la table, mais malheureusement pas les numéros de pages.
    Si quelqu'un aurait une idée et merci pour le script.

  • avatar

    Forty

    18 Nov 2008 à 16:48

    Pour ceux qui ont l'option PHP register_globals = Off il faut remplacer $PHP_SELF par $_SERVER['PHP_SELF']

  • avatar

    Invité

    27 Oct 2008 à 18:09

    salut!
    svp ce script n'as pas marché avec moi sachant que j'ai le logiciel easy-php version1.1.8

  • avatar

    Vrachid

    27 Sept 2008 à 13:07

    bonjour à tous
    voila je viens d'essayer ce code il est très bien sauf que quand je navigue entre les pages mes enregistrement ne s'affiche pas
    à l'execution dans la première page les résultats sont affichés si je vais sur une autre page elle est vide malgré que j'ai plein d'enregistrement dans ma base et meme si je retourne sur la première page rien ne s'affiche

  • avatar

    Magieweb

    24 Aout 2008 à 01:27

    Merci bien pour ce script, exactement ce que j'attendais, très facile à utiliser, je l'ai modifié à ma sauce et il fonctionne nikel!!!
    Beaucoup de commentaires clairs, encore merci et félicitations!

  • avatar

    Nrj82

    20 Nov 2007 à 17:37

    problem est resolu j'ai du faire quelque changement au niveau du scripte le personalisé selon mé besoin, sinon il marche parfaitement et je bravo a celui qu'il a cree

  • avatar

    Nrj82

    20 Nov 2007 à 16:51

    Bonjour ,

    j'ai eu meme problem que IMMO

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-7\www\site_00\testact.php on line 315

    LA LINE 315 est :
    $nb_total=mysql_num_rows($ret);
    Est ce quelqu'un voit ou il peut y'avoir le problem ?

  • avatar

    PhpSources

    28 Oct 2007 à 18:36

    Wamp est un serveur web que beaucoup préfère à Easyphp car ses fonctionnalités sont bien plus souples et étendues. Je vous conseille de désinstaller easyphp avant d'installer Wamp si vous êtes intéressé par ce serveur.

  • avatar

    Mygale

    28 Oct 2007 à 17:46

    OK j'ai testé avec le easyphp.ini modifié je n'ai aucun changement. D'ailleurs même sans cette modification, le script continuait de s'exécuter mais sans les résultats escomptés c'est à dire pas d'affichage des données suivantes.
    En tous cas merci de votre aide. J'abuse encore un peu étant tout débutant je suppose que Wamp est un débboguer? Ou sagit*il d'autre chose?

  • avatar

    PhpSources

    28 Oct 2007 à 17:30

    Cette directive désactive les notices d'erreurs, ce qui permettra au script de continuer
    -->> ajouter la ligne a votre fichier de configuration (easyphp.ini si mes souvenirs sont bons..)
    error_reporting = E_ALL & ~E_NOTICE
    -->> rebootez votre serveur.

    Si cela ne marche toujours pas, je vous conseille soit d'utiliser Wamp et/ou de tester en ligne pour voir si votre probleme n'est pas du à un probleme de script.

  • avatar

    Mygale

    28 Oct 2007 à 17:11

    Je veux bien essayer mais je ne sais pas comment désactiver ces notices. J'ai fait une
    recherche dans php.ini et il n'a pas trouvé error_reporting? Et à quoi sert cette directive?

  • avatar

    KOogar

    28 Oct 2007 à 16:46

    et en désactivant les notices ?? -->> php.ini
    -->>
    error_reporting = E_ALL & ~E_NOTICE

  • avatar

    Mygale

    28 Oct 2007 à 16:03

    Mes register_globals sont à off
    quant à la correction fonctionne pas non plus.

    Je suis à cours d'idées et pourtant je dois pas être le seul à vouloir faire afficher un BD page par page en ayant comme sélecteur dans la requête des variable post?

    En tous cas merci

  • avatar

    KOogar

    28 Oct 2007 à 15:34

    mettez les globals de votre serveur a OFF -->> fichier php.ini -->> register_globals = Off
    ou
    peut-etre utiliser correction la maniere de recuperer les globals ?
    -->>
    $NOM = isset($_POST['NOM']) ? $_POST['NOM'] : '';


  • avatar

    Mygale

    28 Oct 2007 à 15:13

    Bonjour à tous,
    J'espère que quelqu'un pourra m'aider au sujet de ce script car chez moi il ne fonctionne pas. J'ai aussi essayé avec les sessions et le passage des variables dans l'URL rien n'y fait j'ai toujour la même erreur :

    Au secours...

    J'ai une saisie de critères par un formulaire POST qui me rends
    $_POST['NOM']
    $_POST['DISPONIBILITE']
    $_POST['FAMILLE']
    Ce formulaire appelle une page affiche_critères1.php
    Dont le rôle est de traiter les options, envoyer la requête et faire afficher les données.
    Je voudrais les faire afficher page par page. Le premier affichage avec la limite ici de 4 fonctionne très bien. Aussitôt que je clique sur le lien suivant j'ai la catastrophe
    Notice: Undefined index: NOM in C:\Program Files\EasyPHP 2.0b1
    Notice: Undefined index: DISPONIBLE in C:\Program Files\EasyPHP 2.0b1
    Notice: Undefined index: FAMILLE in C:\Program Files\EasyPHP 2.0b1

    Je précise que la CASSE est bonne que le var_dump($_POST) me rend les bonnes valeur.

  • avatar

    MastaP

    03 Avril 2007 à 00:57

    Merci pour l'info, c'est les vacances donc on ne test pas tout. J'ai mis une mention tout en haut pour signaler que ce script n'est pas gratuit et je me suis servi de ton message pour indiquer les différents paliers de paiement. Ca reste exceptionnel que l'on garde de tel script je vous rassures.

  • avatar

    Immo

    02 Avril 2007 à 18:32

    faut renommer le dossier personnalisation en _personalisation

  • avatar

    MastaP

    08 Mars 2007 à 20:54

    L'utilisation de ce script développé en mode objet est très simple (il est avant tout destiné à des débutants et à des web designers qui ne sont pas des programmeurs) :

    Vous pouvez l'utiliser aussi bien dans des pages PHP statiques ou dynamiques que dans de simples pages HTML (en mode Ajax).

    Le manuel d'utilisation détaille aussi bien l'implémentation sur votre serveur que son utilisation dans les différentes pages de votre site web.

    Il y a par ailleurs plusieurs exemples d'utilisation en code source et commentés.

    Bonne lecture du manuel qui est véritablement destiné à des débutants (avec un bon nombre de captures d'écrans).

  • avatar

    KOogar

    27 Nov 2005 à 04:24

    bonjour,je les telecharger il fonctionne super part contre ya pas moyen d'avoir une traduction en francais

  • avatar

    Philippe_jmh

    11 Nov 2005 à 12:36

    Oui tu peux c'est un langage php souple si familiariser avec le javascript

  • avatar

    Laurent

    29 Oct 2005 à 06:18

    Undefined variable: debut... ben defini la variable en début de script !!

  • avatar

    Kimble

    28 Oct 2005 à 18:13

    Bonjour,
    J'ai une erreur sur la ligne:
    if($debut==""){$debut=0;}
    Notice: Undefined variable: ... on line 9
    Une solution ? merci

  • avatar

    Lanner

    25 Oct 2005 à 13:45

    bon a priori un collegue a réussi , cependant il y a une amélioration a faire mais je vois pas , car si par exemple il y a moins de 4 enregistrements il affiche quand meme PRECEDENT 1 - 2 - 3 - 4 SUIVANT comment régler ce probleme merci d'avance


 Autres snippets qui pourraient vous intéressez

Pagination PDO

Compatibilité : PHP 5, PHP 7

Pagination php PDO mysql

Pagination basique I MySQL

Compatibilité : PHP 5, PHP 7

Affichage page par page basique avec exemple. En PHP et en MySQLi procédural. Tables SQL et connexion données dans l'exemple.

[PHP/SQL] Script de pagination (un modèe) - PHP Sources

Compatibilité : PHP 4, PHP 5

Script de pagination en PHP avec 2 requêtes SQL. Caractéristiques : - deux paramétres dans l'URL : nombre d'éléments par page et page actuelle

Pagination avec gestion des liens

Compatibilité : PHP 5, PHP 7

Affiche les numéros de page et affiche la page courante, un certain nombre de pages avant et après, le lien précédent et suivant ainsi que premier et dernier.

Pagination avec controle des résultats

Compatibilité : PHP 5, PHP 7

Ce page par page est portable car il passe par une fonction. Vous pouvez donc l'afficher en haut de vos résultats et à la fin de vos résultats.

Présentation de PHP

PHP débutant et initié 50 Tutoriel

Présentation de MySQL