Forum Clubic

[Pb Requete SQL] Jeux-Java - Cherche à faire un tri spécifique

Bonjour à tous,

Voila j’ai mis en place sur mon site un concours de jeux Flash avec intégration des scores …

Voici la requete pour l’affichage des scores :


echo "<center><table width=\"50%\" border=\"1\"><tr><td><center><b>Place</b></center></td><td><center><b>Nom</b></center></td><td><center><b>Points</b></center></td><td><center><b>Trophés</b></center></td><tr>";
$demande = "SELECT * FROM jeuxjava_palmares ORDER BY trophees DESC";
$traitement_jeux = mysql_query($demande) or die ('Erreur Requete SQL<br>'.$demande.'<br>'.mysql_error());
while ($boucle = mysql_fetch_array ($traitement_jeux)) {
$utilisateur = $boucle ['utilisateur'];
$points= $boucle ['points'];
$trophees = $boucle ['trophees'];
if (($utilisateur != '')&&($points!=0)&&($utilisateur != 'Anonymous')) {echo "<tr><td width=\"5%\">$place</td><td width = \"25%\">$utilisateur</td><td width= \"25%\">$points</td><td width= \"10%\">$trophees</td><tr>"; $place ++;}
}
echo "</table>";

Je souhaiterai que pour ceux qui ont le meme nombre de trophee,
qu’on puissent faire un trie par rapport aux scores.

Merci de votre aide

@+++

Rien à voir avec ta demande mais :

echo "<center><table width=\"50%\" border=\"1\"><tr><td><center><b>Place</b></center></td><td><center><b>Nom</b></center></td><td><center><b>Points</b></center></td><td><center><b>Trophés</b></center></td><tr>";

A remplacer par :

?>
<center>
<table width="50%" border="1">
<tr class="centrerGras">
  <td>Place</td>
  <td>Nom</td>
  <td>Points</td>
  <td>Trophés</td>
<tr>
<?php

et un rapide css :
.centrerGras {
text-align:center;
font-weigth : bold;
}

Je crois pas me tromper pour le CSS, tu comprends je pense que c’est plus rapide de changer une classe une fois, que modifier chaque colonne :slight_smile: ton code est plus léger (donc plus rapide) et plus clair à lire pour toi :slight_smile:

Et sinon ben t’as pas de traitements là dedans, donc pas de raison de faire des echos :slight_smile: enfin c’est kisscool qui m’a fait réécrire la moitié de ma mini application donc je lui fais confiance à ce sujet :slight_smile:

Tu peux faire deux classements :slight_smile:

ORDER BY Trophées DESC, Score DESC;

Merci avec un “Points DESC” c’est deja mieux …

pour ce qui est du code tu as raison je vais revoir tout ca merci de ton aide :slight_smile:

Sinon j’ai le meme soucis pour un autre de mes modules :

Frozen Bubble :

Je chercher à changer ma requete afin d’ afficher la liste des membres avec pour chacun d’eux leur meilleur scores ( donc level ) mais je ne trouve pas la syntaxe exact …

Voici le code actuelle



$query = reqmysql("SELECT 50 - from_end last_level, time, name, users.id
FROM fb_global_time, users
WHERE users.pseudo = name
ORDER BY from_end, time, nb_bubbles, record_date
LIMIT 12 ");



Et si cela peut vous aider :

  • Structure de la table fb_global_time

CREATE TABLE fb_global_time (
id int(11) NOT NULL auto_increment,
from_end tinyint(3) unsigned NOT NULL default ‘0’,
name varchar(20) collate latin1_general_ci NOT NULL default ‘’,
time int(10) unsigned NOT NULL default ‘0’,
nb_bubbles int(10) unsigned NOT NULL default ‘0’,
record_date timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=250 ;

– Structure de la table fb_level_time

CREATE TABLE fb_level_time (
id int(11) NOT NULL auto_increment,
level tinyint(3) unsigned NOT NULL default ‘0’,
name varchar(20) collate latin1_general_ci NOT NULL default ‘’,
time int(10) unsigned NOT NULL default ‘0’,
nb_bubbles int(10) unsigned NOT NULL default ‘0’,
record_date timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=4849 ;

Merci à tous

Pour Frozen bubble, si tu as la structure des tables, tu dois également avoir le source de whereami.php, qui te permet de récupérer tous les résultats d’un utilisateur, ordonné…

Exemple

A moins que tu n’utilises le module xoops?

Effectivement je n’ai aps de “whereami.php” car je n’utilise pas le module
Xoops mais un module "Frosen Bubble " adapté pour pwsphp ^^

C’est juste un portage !!!

Je n’utilise pas Xoops non plus :wink:

Pour ton problème, je pense que le plus simple est de diviser en plusieurs requêtes :

  • 1 requête qui va rechercher les noms des membres
  • Pour chaque résultat, ton programme va rechercher le meilleur score du joueur (la requete que tu as mis, avec limit 1)
  • Si tu veux comarer les joueurs les uns par rapport aux autres, tu fais une nouvelle requete en base sur les id de highscores précédents, en remettant l’order by

N.B.: C’est sûrement pas top -et loin d’être optimal- comme solution, mais ça me semble simple à mettre en oeuvre

Merci myself,

Je pense que dans un premier temps je vais faire comme cela,
mais si quelqu’un a autre chose à proposer je suis preneur …

Encore merci à tous surtout myself

@++