Script de classement par pts

Eléphanteau du PHP | 22 Messages

18 août 2005, 23:24

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 ?

Mammouth du PHP | 19672 Messages

18 août 2005, 23:29

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 22 Messages

18 août 2005, 23:45

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.

Mammouth du PHP | 19672 Messages

18 août 2005, 23:48

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 22 Messages

19 août 2005, 00:48

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

Mammouth du PHP | 19672 Messages

19 août 2005, 00:52

Où est initialisée la variable $nombre ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 22 Messages

19 août 2005, 00:53

Où est initialisée la variable $nombre ?
SELECT `uploadeur`, COUNT(titre) as nombre

Mammouth du PHP | 19672 Messages

19 août 2005, 00:57

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 ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 22 Messages

19 août 2005, 01:22

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)

Mammouth du PHP | 19672 Messages

19 août 2005, 09:12

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 22 Messages

19 août 2005, 10:26

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.
?>

Mammouth du PHP | 19672 Messages

19 août 2005, 10:28

[Résolu] alors :?:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 22 Messages

19 août 2005, 10:55

[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

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

19 août 2005, 10:59

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
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Mammouth du PHP | 19672 Messages

19 août 2005, 11:16

...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
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: