classement

Répondre
nicost
le 21/04/2008 à 18:34
nicost
Bonjour tous smiley

J'ai plusieur jeu en flash auquel on a un score, au passage un grand merci à Globule pour sont aide dans cette aventure.

Maintenant se que j'essai de faire, est d'afficher les scores de tout les jeux et des joueurs.

Pas de problème j'arrive à faire l'affichage.

Mais en faite j'essai de faire un classement de celui qui a le plus gros scores jusqu'au plus petit.

Du coup je me demande comment l'on peu faire pour calculer le nombre du score du joueur sur tout les jeux qu'il a jouer.
Exemple : jeu bateau = score : 354
jeu bateau 2 = score : 125
354 + 125 = 479

Comment peut on arriver avec une requette sql pour calculer cela ?

Voila comment j'ai fait pour ma part, mais qui affiche simplement tout les scores des joueurs.

  1. <?php
  2. $demande = reqmysql(' SELECT jeux.nom_cach, jeux.nom, jeux.tri, jeux.status, scores.score, scores.utilisateur
  3. FROM jouer_jeux as jeux
  4. LEFT JOIN jouer_scores as scores ON scores.jeu = jeux.nom_cach
  5. WHERE scores.utilisateur != "null" ORDER BY score',
  6. 'ORDER BY DESC'
  7. ) or die ('Erreur Requete SQL<br>'.$demande.'<br>'.mysql_error());

  8. if(mysql_num_rows($demande) != 0)
  9. {
  10. echo'<table style="width:100%; text-align:center" align="center" border="0">
  11. <tr>
  12. <td><strong>Place</strong></td>
  13. <td><strong>Nom</strong></td>
  14. <td><strong>Score</strong></td>

  15. </tr>';

  16. while ($boucle = mysql_fetch_array ($demande))
  17. {


  18. $utilisateur = $boucle ['utilisateur'];
  19. $scores = $boucle ['score'];

  20. if (($utilisateur != '')&&($scores!=0)&&($utilisateur != 'visiteur')) {

  21. echo "<tr><td width=\"5%\">".$place."</td><td width = \"25%\">".$utilisateur."</td><td width= \"25%\">".$scores."</td><tr>"; $place ++;}

  22. }

  23. echo '</table>';
  24. }
  25. else
  26. {
  27. echo'<p align="center">Aucun score.</p>';
  28. }

  29. ?>

Merci de votre aide !
nicost
le 21/04/2008 à 20:30
nicost
Je viens de tester avec un max et un group comme ceci :
  1. <?php
  2. $demande = reqmysql(' SELECT MAX(score) AS jouer_scores, utilisateur, score FROM jouer_scores GROUP BY score '

  3. ) or die ('Erreur Requete SQL<br>'.$demande.'<br>'.mysql_error());
  4. ?>

Malheureusement ça me donne toujours la même chose sniff
i M@N
le 21/04/2008 à 22:12
i M@N
Hello.

Plus comme ça p'tet :
  1. <?php
  2. //somme en supposant que chaque score soit dans un champ de la table qui s'appelle "score"

  3. $sql = 'SELECT SUM(score) AS somme FROM score WHERE utilisateur ='.$utilisateur.'';
  4. //on exécute la requête

  5. $result = mysql_query($sql);
  6. //on met les résultats dans un tableau

  7. $data = mysql_fetch_array($result);
  8. //on a la somme

  9. $somme_score = $data['somme'];
  10. echo $somme_score;
  11. ?>


@+...
One Love, One Heart, One Unity.
nicost
le 21/04/2008 à 22:29
nicost
Bonsoir i M@N et merci de ta réponse.
Tester mes j'ai des erreur !
Je viens de faire autrement, la ça m'affiche qu'un score par utilisateur au lieu de tout les scores réalisez par les joueurs, cela commence a devenir bon.
Mais j'arrive pas a trier tout les scores de façon a compter chaque score du joueur et ensuite avoir un total pour afficher le meilleur score.
Merci de votre aide.
  1. <?php
  2. $demande = reqmysql(' SELECT MAX(score) AS highscore, utilisateur, score FROM jouer_scores GROUP BY utilisateur '

  3. ) or die ('Erreur Requete SQL<br>'.$demande.'<br>'.mysql_error());

  4. $position = 0;
  5. $exaeco = 0;
  6. $ancienscore = 0;

  7. if(mysql_num_rows($demande) != 0)
  8. {
  9. echo'<table style="width:100%; text-align:center" align="center" border="0">
  10. <tr>
  11. <td><strong>Place</strong></td>
  12. <td><strong>Nom</strong></td>
  13. <td><strong>Score</strong></td>

  14. </tr>';

  15. while ($boucle_recherche = mysql_fetch_array ($demande))
  16. {
  17. $score_score = $boucle_recherche['score'];
  18. $nom = $boucle_recherche['utilisateur'];

  19. if ($ancienscore<>$score_score && $exaeco>0)
  20. {
  21. $position = $position+$exaeco+1;
  22. $exaeco = 0;
  23. }
  24. elseif ($ancienscore==$score_score)
  25. {
  26. $exaeco++;
  27. }
  28. else
  29. {
  30. $position++;
  31. }

  32. $ex = ''.(exaeco > 0 ? 'ex.' : '').'';


  33. echo '
  34. <tr>
  35. <td style="width:30%"><img src="'.$position.'.png"/></td>
  36. <td style="width:35%">'.$nom.'</td>
  37. <td style="width:35%">'.$score_score.'</td>
  38. </tr>';

  39. $ancienscore=$score_score;
  40. }
  41. }
  42. ?>
LA GLOBULE
le 21/04/2008 à 22:39
LA GLOBULE
Attend, tu veux tous les scores de tous les joueurs ? Ou la bien les sommes des scores des joueurs ?

A priori, au début, tu voulais la somme.

Donc un SELECT sum(score), joueur FROM table WHERE ... GROUP BY joueur devrait passer.
nicost
le 21/04/2008 à 22:55
nicost
Bonsoir Globule, oui en effet je cherche a avoir la somme total pour chaque joueur.
Le joueur qui a plus de point sera premier dans le classement normal lol.
nicost
le 21/04/2008 à 23:11
nicost
Apparament sa l'air de vouloir calculer, je me retrouve avec des scores plus grand, la position est bonne, mais l'affichage des utilisateur n'est pas présent.
Voila ou j'en suis :
Merci de votre aide.
  1. <?php
  2. $demande = reqmysql(' SELECT sum(score) score FROM jouer_scores GROUP BY utilisateur '

  3. ) or die ('Erreur Requete SQL<br>'.$demande.'<br>'.mysql_error());

  4. $position = 0;
  5. $exaeco = 0;
  6. $ancienscore = 0;

  7. if(mysql_num_rows($demande) != 0)
  8. {
  9. echo'<table style="width:100%; text-align:center" align="center" border="0">
  10. <tr>
  11. <td><strong>Place</strong></td>
  12. <td><strong>Nom</strong></td>
  13. <td><strong>Score</strong></td>

  14. </tr>';

  15. while ($boucle_recherche = mysql_fetch_array ($demande))
  16. {
  17. $score_score = $boucle_recherche['score'];
  18. $utilisateur = $boucle_recherche['utilisateur'];

  19. if ($ancienscore<>$score_score && $exaeco>0)
  20. {
  21. $position = $position+$exaeco+1;
  22. $exaeco = 0;
  23. }
  24. elseif ($ancienscore==$score_score)
  25. {
  26. $exaeco++;
  27. }
  28. else
  29. {
  30. $position++;
  31. }

  32. $ex = ''.(exaeco > 0 ? 'ex.' : '').'';


  33. echo '
  34. <tr>
  35. <td style="width:30%"><img src="'.$position.'.png"/></td>
  36. <td style="width:35%">'.$utilisateur.'</td>
  37. <td style="width:35%">'.$score_score.'</td>
  38. </tr>';

  39. $ancienscore=$score_score;
  40. }
  41. }
  42. ?>
nicost
le 22/04/2008 à 07:30
nicost
Bonjour Globule
Je comprend pas, pourtant il est bien selectionner dans la requettte sniff
Je remarque qu'il calcul, mais pas dans l'ordre en faite style :
5252
3891
5022
504
4040
Merci de votre aide.
LA GLOBULE
le 22/04/2008 à 08:56
LA GLOBULE
SELECT sum(score) score FROM jouer_scores << pour moi, tu ne select pas le joueur la.
Répondre
LoadingChargement en cours