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 :

Numérotation de page dans script pagination [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Numérotation de page dans script pagination
    Bonsoir,

    J'ai adapté ce script pour mes pages, mais un détail me "chiffonne":

    <body>
    source: http://php.developpez.com/sources/in...ysqlpagination
    auteur Nesmontou
    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
     <?php
    // Numéro de la page à afficher
    $page = 0;
    if(isset($_GET['page'])) {
        $page = intval($_GET['page']);
    }
    // Nombre de résultats par page
    $nb = 5; // ce sera le nb minimun d'affichages
    if(isset($_GET['nb'])) {
        $nb = max(intval($_GET['nb']), $nb); // Assure au moins $nb résultats par page
    }
    // Connexion au serveur de base de données
    $conn = mysql_connect('localhost', 'root', 'pwd');
    if(!$conn) {
    die('Impossible de se connecter au serveur.');
    }
    // Connexion à la base de données
    $db = mysql_select_db('coursphp', $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());
    ?>
    <table width="700" border="1">
     <tr>
    <td width="129">Vous êtes sur la page   <?= $page ?>  /   <?= $max_pg ?><br />
    
          Pages :
                <?php 
    for($i = 0 ; $i < $max_pg ; $i++) {
    echo ' <a href="?page='.$i.'&nb='.$nb.'">'.($i + 1).'</a>';
    }
    ?></td>
        <td width="169"><?= $nb ?>  réponses par page</td>
        <td width="200">Nombre total de réponses <br />
    <?= $total ?></td>
    	<td width="174">Afficher<br />
    <a href="?page=<?= $page ?>&nb=5">5</a> ou
    <a href="?page=<?= $page ?>&nb=10">10</a> ou
    <a href="?page=<?= $page ?>&nb=20">20</a><br />
    réponses par page</td>
    </tr>
    </table>
    <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>&nbsp;</p>
        </body>
    Le résultat sort
    Lien vers les pages: Pages 1 2 3 (dans le cas de 3 pages)

    Le script affiche Vous êtes sur la page 0 / 3 , 1 / 3 et 2 / 3 au lieu de Page 1 / 3 , 2 / 3 et 3 / 3 ce qui serait plus logique pour le lecteur

    J'ai cherché où était le PB, mais je donne ma langue au chat.

    Si quelqu'un a la solution, je l'en remercie d'avance.

    Cordialement.

    Michel

  2. #2
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    le probleme se trouve a ce niveau:

    soit tu fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for($i = 1 ; $i <= $max_pg ; $i++) {
    echo ' <a href="?page='.$i.'&nb='.$nb.'">'.$i.'</a>';
    }
    ou ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for($i = 0 ; $i <  $max_pg ; $i++) {
    echo ' <a href="?page='.($i+1).'&nb='.$nb.'">'.($i+1).'</a>';
    }
    j´espere t´avoir mis sur le bon chemein.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 9
    Points : 7
    Points
    7
    Par défaut numérotation de pages dans pagination PHP
    Pour Jeffray 03
    Merci pour ton coup de main.
    J'ai essayé tes scripts, voici le résultat:

    dans les 2 cas, j'ai bien l'affichage page 1/3 ; 2/3 ; 3/3 comme je souhaitais

    mais le lien page 1 affiche la page 2
    le lien page 2 affiche la page 3
    le lien page 3 évidemment n'affiche rien

    Voilà
    Si tua as une solution... A bientot j'espère.
    Quelle galère ce php!

    Michel

  4. #4
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    c´est normal, je n´avait pas preté attention a ta requete sql

    il faut un peu la modifier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql = 'SELECT id, personnage, acteur FROM xmen LIMIT '.(($page - 1) * $nb).','.$nb.'';
    cela devrait maintenant marher.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 9
    Points : 7
    Points
    7
    Par défaut PB numerotation de page pagination php

    Jeffray 03
    ça marche impec...

    Cordialement
    Wiedersehen

    Michel

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

Discussions similaires

  1. Numérotation des pages dans la table des matières
    Par Aménie_Val dans le forum Mise en forme
    Réponses: 3
    Dernier message: 05/08/2011, 12h16
  2. [WD-2003] Numérotation des pages dans table des matières
    Par smar6ty4 dans le forum Word
    Réponses: 3
    Dernier message: 16/02/2011, 21h33
  3. [WD-2003] Numérotation des pages dans table des matières
    Par Diyoris dans le forum Word
    Réponses: 3
    Dernier message: 15/07/2010, 10h07
  4. displaytag : accès à une page dans la pagination
    Par Roowag dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 22/02/2008, 11h50
  5. Numérotation des pages dans la table des matières
    Par ccslt dans le forum Mise en forme
    Réponses: 4
    Dernier message: 03/08/2007, 15h48

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