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 :

[Classement] Affichage du rang avec pagination


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 91
    Points : 51
    Points
    51
    Par défaut [Classement] Affichage du rang avec pagination
    Bonsoir,

    J'ai un classement de joueurs qui ont un rang attribué en fonction de leur nombre de points.

    50 joueurs sont affichés par page du classement.

    Cependant, ma pagination apporte des conflicts aux rangs des joueurs à la page 2. Pour les autres pages, elle fonctionne bien et affiche +50 joueurs à chaque fois.

    1ère page:
    #1 joueur 1
    #2 joueur 2
    [...]
    #50 joueur 50

    2ème page:
    #101 joueur 51
    #102 joueur 52
    [...]
    #150 joueur 100

    3ème page:
    #151 joueur 101
    #152 joueur 102
    [...]
    #200 joueur 150

    [...]
    La suite fonctionne bien, mais il y a toujours ce décalage de 50 causé lors du passage à la deuxième page.

    Pour la pagination, je me suis aidé d'un tutoriel proposé sur Developpez.

    Voici le code produit:

    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
     
    <?php
    $per_page = 50;
    $query_total = mysqli_query($mysqli, '
    SELECT playername
    FROM accounts
    ORDER BY points DESC');
     
    $total = mysqli_num_rows($query_total);
    $nb_pages = ceil($total / $per_page);
    if (isset($_GET['page']))
    {
       $current_page = intval($_GET['page']);
       if ($current_page > $nb_pages)
       $current_page = $nb_pages;
    }
    else
       $current_page = 1;
     
    $first_input = ($current_page - 1) * $per_page;
    $first_input = is_numeric($first_input) && $first_input >= 0 ? $first_input : 0;
     
    $query_players = mysqli_query($mysqli, '
    SELECT playername
    FROM accounts
    ORDER BY points DESC
    LIMIT ' . $first_input . ', ' . $per_page);
     
    if (!isset($_GET['page']) || isset($_GET['page']) && $_GET['page'] == 1)
       $i = 1;
    else
       $i = 1 + ($_GET['page'] * $per_page);
     
    while ($data_players = mysqli_fetch_assoc($query_players))
    {
       $players_name = htmlspecialchars($data_players['playername']);
     
       echo 'Rang: ' . $i . ' - Joueur: ' . $players_name . '<br />';
     
       ++$i;
    }
    J'ai vraiment besoin de votre aide. :/

    En esperant que vous puissiez m'apporter un peu de lumière.

    Bien à vous,
    Spire.

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut
    a la fois il y'a tellement de bug dans ce script que...

    la plus grosse erreur a mon humble avi et d'ecrire cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($_GET['page']))
    il y a bien d'autre choses mais celle la, a mon avis tu maitrises pas...

    mais sinon non, ca va, ca code c'est cool t’inquiétè tu va trouver la solution assez facilement...

  3. #3
    Invité
    Invité(e)
    Par défaut
    @ascito : (are you alive ?)

    Bonjour,
    1/ remplace (l'erreur est ici !) :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (!isset($_GET['page']) || isset($_GET['page']) && $_GET['page'] == 1)
       $i = 1;
    else
       $i = 1 + ($_GET['page'] * $per_page);
    par (simplement) :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
       $i = 1 + (($current_page-1) * $per_page);
    ou encore (plus simplement) :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
       $i = 1 + $first_input;
    2/ Cette ligne peut être supprimée (inutile) :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $first_input = is_numeric($first_input) && $first_input >= 0 ? $first_input : 0;
    N.B. même si elles ne sont pas obligatoires (quand il n'y a qu'une instruction à suivre), tu devrais toujours mettre les parenthèses et accolades :
    if(...){ ...; }else{ ...; },
    $var = (...)? ... : ...;.
    Ca permet de mieux visualiser le code, et ça t'évitera bien des erreurs....
    Dernière modification par Invité ; 19/12/2013 à 08h31.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 91
    Points : 51
    Points
    51
    Par défaut
    Bonjour,

    Un grand merci !

    Problème résolu.

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

Discussions similaires

  1. [MySQL] Affichage aléatoire avec pagination
    Par pasc06 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 24/06/2011, 13h35
  2. [DisplayTag] Problème d'affichage avec pagination externe
    Par martopioche dans le forum Taglibs
    Réponses: 3
    Dernier message: 03/10/2007, 11h56
  3. [CSV] Affichage d'un fichier csv avec pagination
    Par arnoweb dans le forum Langage
    Réponses: 4
    Dernier message: 26/07/2006, 15h13
  4. PB : affichage de données avec accent sous delphi 6
    Par kinda dans le forum Débuter
    Réponses: 3
    Dernier message: 03/07/2003, 13h19
  5. [VB6] Affichage d'image avec qlq contraintes
    Par youri dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 21/11/2002, 14h44

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