Eléphanteau du PHP |
13 Messages
19 sept. 2006, 10:00
C'etait moi avant...
Pas vu que j'etais en invité, le code est pas très lisible, je reposte :
Bah en fait, le 1er du classement est celui qui a le plus de point, que je classe par pseudo, ou par date, ou par score...
Donc il faut que ce classement ne change pas la place du 1er, faut juste qu'apparaisse en haut ou en bas de la liste le pseudo commencant par A, ou par Z dans le cas d'un "classement" par pseudo.
Mais en fait j'ai resolu mon probleme avec le post ci-dessous :
http://www.phpfrance.com/forums/voir_su ... .php#27971
Voici comment j'ai procedé :
<?php
// Initialisation des variables de classement
$tri_champ = (isset($_GET['tri']) ? $_GET['tri'] : 2);
if (isset($_GET['ordre'])) {
($_GET['ordre'] == 'SORT_ASC') ? $tri_ordre = 'SORT_DESC' : $tri_ordre = 'SORT_ASC'; }
else $tri_ordre = 'SORT_DESC';
// Requete d'extraction des scores
mysql_query('SET @rank = 0');
$table = mysql_query('SELECT @rank := @rank + 1 AS rank, pseudo, score, niveau, timestamp FROM arkanoid ORDER BY score DESC');
mysql_close();
$j = 0;
?>
<div class="table_HS"><br />
<h5>Meilleurs scores :</h5>
<!-- Tableau des scores : COLONNES -->
<table>
<tr>
<th class="rank"><a href="jeux.php?tri=0&ordre=<?php echo $tri_ordre; ?>">Rank</a></th>
<th class="pseudo"><a href="jeux.php?tri=1&ordre=<?php echo $tri_ordre; ?>">Pseudo</a></th>
<th class="score"><a href="jeux.php?tri=2&ordre=<?php echo $tri_ordre; ?>">Score</a></th>
<th class="niveau"><a href="jeux.php?tri=3&ordre=<?php echo $tri_ordre; ?>">Niveau</a></th>
<th class="date"><a href="jeux.php?tri=4&ordre=<?php echo $tri_ordre; ?>">Date</a></th>
</tr>
<?php
// Mise en forme du résultat (classement dans un array)
while ($donnees = mysql_fetch_array($table)) {
for ($i=0; $i<=4; $i++) {
$scores[$j][$i] = $donnees[$i];
}
$j++;
}
// Appel de la fonction de classement
if ($tri_ordre == 'SORT_ASC') $scores = classement ($scores, $tri_champ, SORT_ASC);
else $scores = classement ($scores, $tri_champ, SORT_DESC);
// Affichage des scores
for ($a=0; $a<$j; $a++) {
?>
<!-- Tableau des scores : CONTENU -->
<tr>
<td class="rank"><?php echo $scores[$a][0]; ?></td>
<td class="pseudo"><?php echo $scores[$a][1]; ?></td>
<td class="score"><?php echo $scores[$a][2]; ?></td>
<td class="niveau"><?php echo $scores[$a][3]; ?></td>
<td class="date"><?php echo date('d/m/Y ', $scores[$a][4]); ?></td>
</tr>
<?php
}
Et la fonction classement :
function classement ($tableau, $col, $direction) {
foreach($tableau as $k=>$v){
$cle[$k] = $v[$col];
}
array_multisort($cle, $direction, $tableau);
return $tableau;
}
Qu'est ce que vous en pensez ?
Ya moyen d'optimiser ?