IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Pagination [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 391
    Par défaut Pagination
    Bonjour je voudrais créer une pagination car j'ai trop d'affichage dans la même page. J'utilise ce bout de code là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    include ("../pagination_fonctions.php");
     
    $parpage = 10;	 // Nombre d'enregistrements par page à afficher
     
    $url = $_SERVER['PHP_SELF']."?limit=";
     
    $total = mysql_query($query); // Résultat total de la requête $query
    $nblignes = mysql_num_rows($total); // Nbre total d'enregistrements
     
    $nbpages = ceil($nblignes/$parpage);
     
    $result = validlimit($nblignes,$parpage,$query);
     
    include("affiche.php");
     
    // Menu de pagination que l'on place après la requête
    echo "<div align='center' class='pagination'>";
    echo pagination($url,$parpage,$nblignes,$nbpages);
    echo "</div>";
     
    mysql_free_result($result); // Libère le résultat de la mémoire
    Cela m'écrit bien les pages en bas mais le lien n'est pas bon ; Voici le lien à la base : http://www.monsite.fr/test/agenda/in...th=6&year=2009 et je voudrais après qu'il y a le lien vers les autres pages !

    Voici les fonctions de paginations
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    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
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    <?php
    function pagination($url,$parpage,$nblignes,$nbpages)
    {
      // On crée le code html pour la pagination
      $html = precedent($url,$parpage,$nblignes); // On crée le lien precedent
      // On vérifie que l'on a plus d'une page à afficher
      if ($nbpages > 1) {
        // On boucle sur les numéros de pages à afficher
        for ($i = 0 ; $i < $nbpages ; ++$i) {
          $limit = $i * $parpage; // On calcule le début de la valeur 'limit'
          $limit = $limit.",".$parpage; // On fait une concaténation avec $parpage
          // On affiche les liens des numéros de pages
          $html .= "<a href=".$url.$limit.">".($i + 1)."</a> | " ;
        }
      }
      // Si l'on a qu'une page on affiche rien
      else {
        $html .= "";
      }
      $html .= suivant($url,$parpage,$nblignes); // On crée le lien suivant
      // On retourne le code html
      return $html;
    }
    function validlimit($nblignes,$parpage,$sql)
    {
      // On vérifie l'existence de la variable $_GET['limit']
      // $limit correspond à la clause LIMIT que l'on ajoute à la requête $sql
      if (isset($_GET['limit'])) { 
        $pointer = split('[,]', $_GET['limit']); // On scinde $_GET['limit'] en 2
        $debut = $pointer[0];
        $fin = $pointer[1];
        // On vérifie la conformité de la variable $_GET['limit']
        if (($debut >= 0) && ($debut < $nblignes) && ($fin == $parpage)) {
          // Si $_GET['limit'] est valide on lance la requête pour afficher la page
          $limit = $_GET['limit']; // On récupère la valeur 'limit' passée par url
          $sql .= " LIMIT ".$limit.";"; // On ajoute $limit à la requête $sql
          $result = mysql_query($sql); // Nouveau résultat de la requête
        }
        // Sinon on affiche la première page
        else {
          $sql .= " LIMIT 0,".$parpage.";"; // On ajoute la valeur LIMIT à la requête
          $result = mysql_query($sql); // Nouveau résultat de la requête
        }
      }
      // Si la valeur 'limit' n'est pas connue, on affiche la première page
      else {
        $sql .= " LIMIT 0,".$parpage.";"; // On ajoute la valeur LIMIT à la requête
        $result = mysql_query($sql); // Nouveau résultat de la requête
      }
      // On retourne le résultat de la requête
      return $result;
    }
    function precedent($url,$parpage,$nblignes)
    {
      // On vérifie qu'il y a au moins 2 pages à afficher
      if ($nblignes > $parpage) {
        // On vérifie l'existence de la variable $_GET['limit']
        if (isset($_GET['limit'])) {
          // On scinde la variable 'limit' en utilisant la virgule comme séparateur
          $pointer = split('[,]', $_GET['limit']);
          // On récupère le nombre avant la virgule et on soustrait la valeur $parpage
          $pointer = $pointer[0]-$parpage;
          // Si on atteint la première page, pas besoin de lien 'Précédent'
          if ($pointer < 0) {
            $precedent = "";
          }
          // Sinon on affiche le lien avec l'url de la page précédente
          else {
            $limit = "$pointer,$parpage";
            $precedent = "<a href=".$url.$limit."><</a> | ";
          }
        }
        else {
          $precedent = ""; // On est à la première page, pas besoin de lien 'Précédent'
        }
      }
      else {
      $precedent = ""; // On a qu'une page, pas besoin de lien 'Précédent'
      }
      return $precedent;
    }
    function suivant($url,$parpage,$nblignes)
    {
      // On vérifie qu'il y a au moins 2 pages à afficher
      if ($nblignes > $parpage) {
        // On vérifie l'existence de la variable $_GET['limit']
        if (isset($_GET['limit'])) {
          // On scinde la variable 'limit' en utilisant la virgule comme séparateur
          $pointer = split('[,]', $_GET['limit']);
          // On récupère le nombre avant la virgule auquel on ajoute la valeur $parpage
          $pointer = $pointer[0] + $parpage;
          // Si on atteint la dernière page, pas besoin de lien 'Suivant'
          if ($pointer >= $nblignes) {
            $suivant = "";
          }
          // Sinon on affiche le lien avec l'url de la page suivante
          else {
            $limit = "$pointer,$parpage";
            $suivant = "<a class='pagination' href=".$url.$limit.">></a>";
          }
        }
        // Si pas de valeur 'limit' on affiche le lien de la deuxième page
        if (@$_GET['limit']== false) {
          $suivant = "<a href=".$url.$parpage.",".$parpage.">></a>";
        }
      }
      else {
      $suivant = ""; // On a qu'une page, pas besoin de lien 'Suivant'
      }
      return $suivant;
    }
    ?>

  2. #2

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pagination : numéroter sous la forme (1/4)
    Par audreyb dans le forum SAP Crystal Reports
    Réponses: 8
    Dernier message: 01/03/2013, 11h59
  2. [VB.NET] Pagination DataGrid (où est l'erreur?)
    Par franculo_caoulene dans le forum ASP.NET
    Réponses: 2
    Dernier message: 25/10/2004, 11h46
  3. [C#] Probleme de pagination dans datagrid
    Par asphareth dans le forum ASP.NET
    Réponses: 2
    Dernier message: 21/07/2004, 11h25
  4. [VB.NET] Pagination DataGrid
    Par sehing dans le forum ASP.NET
    Réponses: 5
    Dernier message: 20/07/2004, 16h28
  5. Réponses: 15
    Dernier message: 20/07/2004, 09h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo