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

Langage PHP Discussion :

Pagination d'un résultat de requête


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    177
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 177
    Points : 106
    Points
    106
    Par défaut Pagination d'un résultat de requête
    J'ai adapté le code suivant (que j'ai eu à l'url suivante : http://php.developpez.com/sources/?p...ysqlpagination) à mon problème et qui sert d'illustration :

    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
     
    CREATE TABLE `xmen` (
      `id` int(11) NOT NULL auto_increment,
      `personnage` varchar(255) NOT NULL default '',
      `acteur` varchar(255) NOT NULL default '',
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=12 ;
     
    INSERT INTO `xmen` VALUES (1, 'Wolverine', 'Hugh Jackman');
    INSERT INTO `xmen` VALUES (2, 'Magneto', 'Ian McKellen');
    INSERT INTO `xmen` VALUES (3, 'Professeur X', 'Patrick Stewart');
    INSERT INTO `xmen` VALUES (4, 'Docteur Jean Grey', 'Famke Janssen');
    INSERT INTO `xmen` VALUES (5, 'Tornade', 'Halle Berry');
    INSERT INTO `xmen` VALUES (6, 'Cyclope', 'James Marsden');
    INSERT INTO `xmen` VALUES (7, 'Malicia', 'Anna Paquin');
    INSERT INTO `xmen` VALUES (8, 'Dents-de-Sabre', 'Tyler Mane');
    INSERT INTO `xmen` VALUES (9, 'Crapaud', 'Ray Park');
    INSERT INTO `xmen` VALUES (10, 'Mystique', 'Rebecca Romijn');
    INSERT INTO `xmen` VALUES (11, 'Pyro', 'Alex Burton');
    Une fois cette étape terminée, on peut enfin utiliser le code :

    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
     
    <?php
    // Numéro de la page à afficher
    $page = 0;
    if(isset($_GET['page']) && is_int($_GET['page'])) {
    $page = $_GET['page'];
    }
    // Nombre de résultats par page
    $nb = 5;
    if(isset($_GET['nb']) && is_int($_GET['nb'])) {
    $nb = $_GET['nb'];
    }
    // Connexion au serveur de base de données
    $conn = mysql_connect('localhost', 'root', 'bprevot');
    if(!$conn) {
    die('Impossible de se connecter au serveur.');
    }
    // Connexion à la base de données
    $db = mysql_select_db('test', $conn);
    if(!$db) {
    die('Impossible de se connecter à la base de données.');
    }
    // Nombre total d'enregistrements
    $sql = '
    SELECT COUNT(*) FROM xmen;
    ';
    $query = mysql_query($sql, $conn) or die('Erreur MySQL : '.mysql_error());
    $row = mysql_fetch_row($query);
    $total = $row[0];
    // Nombre maximum de pages
    $max_pg = ceil($total / $nb);
    // Selection des enregistrements pour la page considérée
    $sql = '
    SELECT id, personnage, acteur
    FROM xmen
    LIMIT '.($page * $nb).','.$nb.'
    ';
    $query = mysql_query($sql, $conn) or die('Erreur MySQL : '.mysql_error());
    ?>
    <p>Page actuelle : <?= $page ?></p>
    <p>Nb d'enregistrements par page : <?= $nb ?></p>
    <table>
    <tr>
    <th>ID</th>
    <th>Personnage</th>
    <th>Acteur</th>
    </tr>
    <?php
    while($list = mysql_fetch_assoc($query)) {
    echo '<tr>';
    echo '<td>'.$list['id'].'</td>';
    echo '<td>'.$list['personnage'].'</td>';
    echo '<td>'.$list['acteur'].'</td>';
    echo '</tr>';
    }
    ?>
    </table>
    <p>Pages :
    <?php
    for($i = 0 ; $i < $max_pg ; $i++) {
    echo ' <a href="?page='.$i.'&nb='.$nb.'">'.$i.'</a>';
    }
    ?>
    </p>
    <p>Nb d'enregistrements par page :
    <a href="?page=<?= $page ?>&nb=5">5</a>
    <a href="?page=<?= $page ?>&nb=10">10</a>
    <a href="?page=<?= $page ?>&nb=20">20</a></p>
    J'ai donc bien le nombre d'enregistrement par pages et la page courante qui viennent s'afficher après mon .php? dans ma barre d'adresse.
    Etant donné qu'il y à un GET sur ces deux valeurs en tout début de script, je suis censé les récupérer quand je boucle sur ma page mais en l'occurence, malgré que les paramètres soient bien passés par la barre d'adresse je ne récupère pas le nouveau numéro de page et le nouveau nombre d'enregistrement par pages.

  2. #2
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    177
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 177
    Points : 106
    Points
    106
    Par défaut re
    bon je viens de trouevr la réponse :

    C'est le is_int($_GET['page'])) de if(isset($_GET['page']) && is_int($_GET['page'])) qui posait problème... Allez savoir pourquoi.

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

Discussions similaires

  1. Pagination d'un résultat de requête
    Par Nesmontou dans le forum Contribuez / Téléchargez Sources et Outils
    Réponses: 1
    Dernier message: 19/08/2013, 21h07
  2. [MySQL] Pagination d'un résultat de requête
    Par MaxAurele dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 18/06/2008, 21h41
  3. [SQL] pagination d'un résultat d'une requête
    Par opeo dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 18/03/2007, 11h25
  4. Réponses: 11
    Dernier message: 10/02/2006, 15h44

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