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.

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

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

</tr>';

while ($boucle = mysql_fetch_array ($demande))
{


$utilisateur = $boucle ['utilisateur'];
$scores = $boucle ['score'];

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

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

}

echo '</table>';
}
else
{
echo'<p align="center">Aucun score.</p>';
}

?>

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

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

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 :
<?php
//somme en supposant que chaque score soit dans un champ de la table qui s'appelle "score"

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

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

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

$somme_score = $data['somme'];
echo $somme_score;
?>


@+...
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.
<?php 
$demande = reqmysql(' SELECT MAX(score) AS highscore, utilisateur, score FROM jouer_scores GROUP BY utilisateur '

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

$position = 0;
$exaeco = 0;
$ancienscore = 0;

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

</tr>';

while ($boucle_recherche = mysql_fetch_array ($demande))
{
$score_score = $boucle_recherche['score'];
$nom = $boucle_recherche['utilisateur'];

if ($ancienscore<>$score_score && $exaeco>0)
{
$position = $position+$exaeco+1;
$exaeco = 0;
}
elseif ($ancienscore==$score_score)
{
$exaeco++;
}
else
{
$position++;
}

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


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

$ancienscore=$score_score;
}
}
?>
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.
<?php 
$demande = reqmysql(' SELECT sum(score) score FROM jouer_scores GROUP BY utilisateur '

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

$position = 0;
$exaeco = 0;
$ancienscore = 0;

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

</tr>';

while ($boucle_recherche = mysql_fetch_array ($demande))
{
$score_score = $boucle_recherche['score'];
$utilisateur = $boucle_recherche['utilisateur'];

if ($ancienscore<>$score_score && $exaeco>0)
{
$position = $position+$exaeco+1;
$exaeco = 0;
}
elseif ($ancienscore==$score_score)
{
$exaeco++;
}
else
{
$position++;
}

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


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

$ancienscore=$score_score;
}
}
?>
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