Problème de $count dans un classement

WRInaute impliqué
Bonsoir, j'ai un petit problème avec pour afficher la position d'un joueur dans un classement, avec un while. Le classement est réalisé sur plusieurs page (11000 membres). Sur la première page, j'ai bien la position de 1 à 5, mais si je passe à la page numéro 2, au lieu de passer de la position 6 à 10, le count me remet 1 à 5. Je me demande ce qu'il faut que je fasse.

Le count en question est celui ci"<span class="alerte">'.$count.' -</span>".

Merci à ceux qui prendrons le temps de réfléchir à mon problème.

if( isset($_GET['page']) && is_numeric($_GET['page']) ){
$nav = $_GET['page'];
}else{
$nav = 1;
}
$pagination = 5;
$limit_start = ($nav - 1) * $pagination;

$usersquery = doquery("SELECT id, gold, charname, level, strength, experience, avatar, currentaction, weaponname FROM {{table}} ORDER BY ".$ordre." ".$sort." LIMIT $limit_start, $pagination", "users");
$nb_players = mysql_num_rows($usersquery);

($nb_players > 1) ? $nb_players_text = 'enregistrés' : $nb_players_text = 'enregistré';

$page ='<img src="images/login/actions/top_joueurs.jpg" width="580" height="82" alt="Le top des joueurs"><br><br>
(<span class="alerte">*</span>) signifie que le joueur possède une proriété (fonction non disponible).<br><br>
Il y a <b>'.$nb_players.' '.$nb_players_text.'</b> dans la base de données.<br><br>
Pour avoir des infos plus détaillés sur un joueur, cliquez sur son pseudo. Vous pouvez également classer les joueurs, par : <br><br><b><a href="home.php?do=top_players">Pseudo</a></b>, <b><a href="home.php?do=top_players&amp;order=2">Niveau</a></b>, <b><a href="home.php?do=top_players&amp;order=3">Expérience</a></b>, <b><a href="home.php?do=top_players&amp;order=4">Force</a></b> et <b><a href="home.php?do=top_players&amp;order=5">Richesse</a></b>.<br><br>';

$count = 1;

while ($usersrow = mysql_fetch_array($usersquery)) {

($usersrow['weaponname'] != 'Aucun') ? $weapon_text = 'Ce joueur possède l\'arme nommé "'.strtolower($usersrow['weaponname']).'"' : $weapon_text = 'Ce joueur ne possède aucune arme';

$page .= '<div class="bloc_rose"><div style="float:left"><img src="images/avatars/top/'.$usersrow['avatar'].'.jpg" alt="'.$usersrow['charname'].'"></div><span class="alerte">'.$count.' -</span> <a href="?do=view_player&id='.$usersrow['id'].'"><b><span class="mauve2">'.ucwords($usersrow['charname']).'</span></b></a> - <i>Niveau: <span class="mauve1">'.$usersrow['level'].'</span> - Expérience: <span class="mauve1">'.$usersrow['experience'].'</span> - Force: <span class="mauve1">'.$usersrow['strength'].'</span></i><br><span class="taille1">'.$weapon_text.', il a déja gagné '.$usersrow['gold'].' rubis et se trouve actuellement '.strtolower($usersrow['currentaction']).'.</span></div><br>';
$count++;
}


if (mysql_num_rows($usersquery) == 0) { $page .= '<span class="alerte"> Il y a aucun joueur de trouvé!</span><br><br>'; }

mysql_free_result($usersquery);

$nb_total = doquery("SELECT COUNT(*) AS nb_total FROM {{table}} ORDER BY id", "users");
$nb_total = mysql_fetch_array($nb_total);
$nb_total = $nb_total['nb_total'];

$nb_pages = ceil($nb_total / $pagination);

$page .='[ Page : ';

for ($i = 1 ; $i <= $nb_pages ; $i++) {
if ($i == $nav ){
$page .= '<b>'.$i.'</b> ';
}else{
$page .='<a href="?do=top_players&amp;page='.$i.'&amp;order='.$_GET['order'].'">'.$i.'</a> ';}
}
$page .=' ]<br>';
 
WRInaute impliqué
J'ai regardé rapidement ton code

étant donné que tu fais un : $count = 1;
c'est normal que ca commence à "1"
enfin c'est logigue

plutot d'utiliser count
tu ferais mieux d'utiliser la variable $limit_start qui correspond bien à la position dans la liste de tes membres

en remplaçant
$count = 1;
par
$count = $limit_start + 1;

et ca devrait être bon

Sinon pense à aérer, documenter ton code :D
 
WRInaute impliqué
Ah oui en effet c'est pas con, moi j'avais trouvé une autre solution, mais moin propre, dans le while j'avais mi:

if($nav >=2){$counteur=$count+$limit_start;}else{$counteur=$count;}

et j'avais remplacé $count par $compteur dans le text, mais j'étais sur la bonne voie, j'avais en effet pris aussi limit_start.

En tout cas, merci de t'etre penché sur mon problème.

Sinon pour aéré le code, il y a possibilité de faire avec note pad++ une belle structuration du code? C'est a dire que chaque ligne soit bien positionné dans la page, et non le faire manuellement. Ca doit avoir un nom, mais je pense que tu m'a compris.
 
WRInaute occasionnel
Regarde du cote des editeurs de code digne de ce nom.
Notepad c'est bien pour lire un fichier lisez-moi...
 
WRInaute impliqué
perso pour des petites modifications
j'ai pris mes habitudes avec textpad

maintenant c'est un peu comme tout, ya les pours et les contres mais moi c'est celui là
 
Discussions similaires
Haut