Page 1 sur 2

Script de classement par pts

Posté : 18 août 2005, 23:24
par lxlllolllxl
Bonsoir, je cherche le code pour faire un script de classement selon le nombre on va dire pour simplifier, selon le nombre de points.
Alors j'ai selectionné tout les points de Utilisateur1 (parceque il faut les marquer 1 par 1) après je fais un while ? J'ajoute le tout et je fais quoi pour classer par rapport aux autres ? Nan c'est pas ça ... Alors comment faire ?

Posté : 18 août 2005, 23:29
par Cyrano
Tes points sont stockés où ?

Essaye d'être clair et précis dans tes questions. On peut classer de différentes manières, mais il faudrait savoir d'où on part.

Posté : 18 août 2005, 23:45
par lxlllolllxl
Bon je vais être clair :)

Sur mon site j'ai des gens qui uploadent des jeux.
La table se nomme : jeux
Les champs qui nous interessent (je crois) sont : titre, taille, uploadeur
Donc je veux faire un top10 des meilleurs uploadeurs.

Posté : 18 août 2005, 23:48
par Cyrano
Alors fais une requête avec COUNT() du genre

Code : Tout sélectionner

SELECT `uploader`, COUNT(titre) as nomobre FROM `jeux` GROUP BY `uploader` ORDER BY nombre DESC LIMIT 0, 10;
Ça te donnera le classement des dix uploaders qui ont le plus de titres classés du plus grand au plus petit.

Posté : 19 août 2005, 00:48
par lxlllolllxl
Pouvez-vous être plus clair à votre tour ? :lol:
Votre code contient des fautes de frappe, et maintenant comment je fais pour afficher le classement ? Et je veux aussi connaitre le nombre de mo uploadés, ils sont renseignés dans le champ taille.
Voilà quand même ce que j'ai fait avec votre code :
$sql = mysql_query("SELECT `uploadeur`, COUNT(titre) as nombre FROM `jeux` GROUP BY `uploadeur` ORDER BY nombre DESC LIMIT 0, 10");
$donn = mysql_fetch_array($sql);

while ($nombre <= 10)
{ echo "".$nombre." - ".$donn['uploadeur']."<br>"; $nombre++; }
ça m'affiche que mon pseudo, et c'est bizarre...
- lxlllolllxl
1 - lxlllolllxl
2 - lxlllolllxl
3 - lxlllolllxl
4 - lxlllolllxl
5 - lxlllolllxl
6 - lxlllolllxl
7 - lxlllolllxl
8 - lxlllolllxl
9 - lxlllolllxl
10 - lxlllolllxl

Posté : 19 août 2005, 00:52
par Cyrano
Où est initialisée la variable $nombre ?

Posté : 19 août 2005, 00:53
par lxlllolllxl
Où est initialisée la variable $nombre ?
SELECT `uploadeur`, COUNT(titre) as nombre

Posté : 19 août 2005, 00:57
par Cyrano
Il faudrait la récupérer de la même manière que l'autre champ :
<?PHP
$sql = mysql_query("SELECT `uploadeur`, COUNT(titre) as nombre FROM `jeux` GROUP BY `uploadeur` ORDER BY nombre DESC LIMIT 0, 10");
while($donn = mysql_fetch_array($sql))
{
    if($donn['nombre'] <= 10)
    {
        echo "".$donn['nombre']." - ".$donn['uploadeur']."<br>"; 
        $donn['nombre']++; // <== ça, ça ne marche pas.
    }
}
?>
L'incrémentation, c'est pour quoi faire au juste ?

Posté : 19 août 2005, 01:22
par lxlllolllxl
Il faudrait la récupérer de la même manière que l'autre champ :
<?PHP
$sql = mysql_query("SELECT `uploadeur`, COUNT(titre) as nombre FROM `jeux` GROUP BY `uploadeur` ORDER BY nombre DESC LIMIT 0, 10");
while($donn = mysql_fetch_array($sql))
{
    if($donn['nombre'] <= 10)
    {
        echo "".$donn['nombre']." - ".$donn['uploadeur']."<br>"; 
        $donn['nombre']++; // <== ça, ça ne marche pas.
    }
}
?>
L'incrémentation, c'est pour quoi faire au juste ?
J'ai pas compris votre code, pourquoi donner une code qui ne marche pas ? ^^'
Il m'affiche :
8 - Uploadeur1
6 - Uploadeur2
6 - Uploadeur3
5 - Uploadeur4
3 - Uploadeur5
3 - Uploadeur6
2 - Uploadeur7
2 - Uploadeur8
1 - Uploadeur9

Pas dans l'ordre hein, c'est juste pour cacher les noms, ils sont copyrightés ^^'

Bon je vais pas faire le boulet je vais essayer de comprendre le code ligne par ligne...
$sql = mysql_query("SELECT `uploadeur`, COUNT(titre) as nombre FROM `jeux` GROUP BY `uploadeur` ORDER BY nombre DESC LIMIT 0, 10");
Met le nombre de titres de 'jeux' dans $nombre, groupe par uploadeur et ordre par $nombre selectionner les 10 premiers...(jsuis déjà perdu, qu'est-ce GROUP BY... pourquoi nombre devant ORDER BY ?)

Donc $donn['nombre'] vaut quoi ? ARgh j'suis perdu mais en gros j'ai pas compri le code, si vous mettiez le bon code sous mon nez ça serait fort sympa :) Et merci de m'avoir aidé jusque là 8)

Posté : 19 août 2005, 09:12
par Cyrano
Prend cette requête, et essaye de l'exécuter directement dans phpMyAdmin : regarde ce que ça te donne comme retour et vois si ça correspond à ce que tu attends.

Posté : 19 août 2005, 10:26
par lxlllolllxl
En effet ça m'aide beaucoup mais maintenant je veux être plus précis en classant par taille de tout les jeux uploadés, c'est possible ?

Sinon le code correct pour classer selon la nombre de jeux uploadés :
mysql_connect("sql.free.fr", "tyhgt", "azqswx");
mysql_select_db("psx");

$sql = mysql_query("SELECT `uploadeur`, COUNT(titre) as nombre FROM `jeux` GROUP BY `uploadeur` ORDER BY nombre DESC LIMIT 0, 10");
while($donn = mysql_fetch_array($sql))
{

        echo "".$donn['nombre']." - ".$donn['uploadeur']."<br>";
        $donn['nombre']++;
} 
//C'est le if qui n'affichait que ceux qui ont moins de 10 jeux uploadés.
?>

Posté : 19 août 2005, 10:28
par Cyrano
[Résolu] alors :?:

Posté : 19 août 2005, 10:55
par lxlllolllxl
[Résolu] alors :?:
Je demandais depuis le debut que faut classer par taille uploadée, ce n'est pas pour rien que j'avais mis qu'on doit s'interesser au champ taille de la table jeux. Le champ taille contient toutes les tailles de tout les titres (le taille est un nombre entier sans Mo ou Ko à la fin). Ne changeons donc pas de sujet. Comment faire pour classer par taille ?

Je veux que ça me donne comme resultat
1 - Uploadeur1 - x Mo uploadés
2 - Uploadeur2 - x Mo uploadés
3 - Uploadeur3 - x Mo uploadés
4 - Uploadeur4 - x Mo uploadés
5 - Uploadeur5 - x Mo uploadés
6 - Uploadeur6 - x Mo uploadés
7 - Uploadeur7 - x Mo uploadés
8 - Uploadeur8 - x Mo uploadés
9 - Uploadeur9 - x Mo uploadés
10 - Uploadeur10 - x Mo uploadés

Posté : 19 août 2005, 10:59
par mere-teresa
Calme toi et tout ira bien.
Pour classer à la fois par nombre d'UL et taille en Ko de matériau ULoadé, utilise ORDER BY.


A lire (voir le dernier exemple): http://www.nexen.net/docs/mysql/annotee ... n=order+by

Posté : 19 août 2005, 11:16
par Cyrano
...Donc je veux faire un top10 des meilleurs uploadeurs.
Quand donc ais-je changé de sujet ??? La réponse à la question de base a été résolue: là, en fait de changement de sujet, la question s'enrichit d'options au fil des réponses... faudrait savoir :-k