Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/04/2008, 13h55   #1
Membre extrêmement actif
 
Avatar de ArHacKnIdE
 
Inscription : janvier 2006
Messages : 1 950
Détails du profil
Informations personnelles :
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : janvier 2006
Messages : 1 950
Points : 1 927
Points : 1 927
Envoyer un message via MSN à ArHacKnIdE
Par défaut [SQL] Créer Requête Multi-Critères

Bonjour à tous,

Le problème est simple :

Sur un CMS type Reseau social, les membres ont chacun un nombre de vote et une note(sur 5), j'aimerai réaliser un classement qui prenne en compte ces deux paramètres...

Si j'etablis un classement sur la note, le membre peut avoir une note de 5, seulement 2 votes et se retrouver en tête de classement...
Et contrairement si j'etablis un classement sur le nombre de vote, le membre peut se retrouver en tête de classement avec 15 votes mais une note de 2.5

Peut être existe t'il une requête permettant d'établir ce genre de classement ou peut être faut t'il user d'une autre technique ?

Dans tous les cas j'ai pas réussi à faire un classement qui retourne un resultat correct (equilibre entre note et votes en gros).

Merci
__________________
Vous êtes nouveau ici ?! Pensez à consulter les règles pour plus d'efficacité

Mon blog developpez.com! (En travaux)
- PHP5 sur 1and1
- Clé aléatoire en PHP
ArHacKnIdE est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2008, 16h28   #2
Membre du Club
 
Avatar de MikeV
 
Webmaster
Inscription : mai 2007
Messages : 93
Détails du profil
Informations personnelles :
Âge : 32
Localisation : Canada

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : mai 2007
Messages : 93
Points : 57
Points : 57
Bonjour,
Je n'ai jamais fait ce genre de truc mais personnellement je ferai quelque chose comme ca:

- Créer une variable php $importance = un chiffre de 1 à 10
- Cette variable $importance désigne l'importance du classement.
- Elle est obtenue en prenant le plus grand nombre de vote divisé par 10
(exemple: Fabrice est celui qui a le plus de vote (134 votes) donc 134 / 10 = 13,4)
- maintenant pour déterminer ton classement, lors de l'affichage tu divises le nb de votes de chacun par 13,4. (Exemple: Roger à 58 votes = 58 / 13,4 = 4, donc $importance = 4 pour Roger.
- Donc si dans ton classement tu arrives avec cela:
Nom |points |importance
Régis |3.3 |2
Roger |3.3 |8
Emilie |3.3 |1
Jean |3.3 |7
Jeanne |3.3 |5

Tu peux facilement déterminer qui mérites sa place ! Emilie,Régis,Jeanne,Jesn.Roger

Qu'en penses-tu ?
MikeV est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2008, 17h23   #3
Membre extrêmement actif
 
Avatar de ArHacKnIdE
 
Inscription : janvier 2006
Messages : 1 950
Détails du profil
Informations personnelles :
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : janvier 2006
Messages : 1 950
Points : 1 927
Points : 1 927
Envoyer un message via MSN à ArHacKnIdE
Re,

Merci de ta réponse

Oui c'est une bonne idée mais je viens de me rendre compte d'un truc...

Je fais un classement de 20, si je fesais simplement une sous-requête ?

Genre je selectionne les 20 membres ayant le plus de vote, et la sous-requête classerai ces 20 par note, ça ferai un classement logique, non ?

C'est sur que tant qu'il y a pas bcp de membres le classement serait peut etre pas très significatif...

Je sais pas comment faire ça exactement mais je vais chercher

Merci =)

EDIT : En fait non je dis des bêtises le classement sera pas très bon non plus, pour ta solution d'importance j'ai bien saisi ta réponse mais pas trop ce que ça donnerait...

Voilà le classement que j'ai actuellement (classé par vote) :

Citation:
1. hellowkittycandy (Note : 4.2) Vote(s) : 10
2. Lucie (Note : 3.9) Vote(s) : 9
3. marion (Note : 4.87) Vote(s) : 8
4. Clow (Note : 4.57) Vote(s) : 7
5. divinekate78 (Note : 4) Vote(s) : 6
6. Elise78 (Note : 4.17) Vote(s) : 6
7. KyriO (Note : 4.67) Vote(s) : 6
8. Guit0o (Note : 5) Vote(s) : 5
9. Alaedyna (Note : 4.2) Vote(s) : 5
10. Elza (Note : 5) Vote(s) : 5
11. PierO (Note : 5) Vote(s) : 4
12. Angel212 (Note : 4.67) Vote(s) : 3
13. GIKUMI (Note : 3.67) Vote(s) : 3
14. Kasabian (Note : 5) Vote(s) : 3
15. Lilou (Note : 5) Vote(s) : 3
16. Alexandre (Note : 5) Vote(s) : 3
17. gregoire (Note : 5) Vote(s) : 3
18. Lelodie (Note : 5) Vote(s) : 3
19. HEiiLLE (Note : 5) Vote(s) : 3
20. ptyflo (Note : 5) Vote(s) : 3
Ca devrait être marion en premier...

Si je fais avec ma sous-requête c'est tous ceux qui ont 5 de note qui vont être premier...

Merci
__________________
Vous êtes nouveau ici ?! Pensez à consulter les règles pour plus d'efficacité

Mon blog developpez.com! (En travaux)
- PHP5 sur 1and1
- Clé aléatoire en PHP
ArHacKnIdE est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 09h05   #4
Membre extrêmement actif
 
Avatar de ArHacKnIdE
 
Inscription : janvier 2006
Messages : 1 950
Détails du profil
Informations personnelles :
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : janvier 2006
Messages : 1 950
Points : 1 927
Points : 1 927
Envoyer un message via MSN à ArHacKnIdE
Un petit coup de pouce ?

MikeV ta solution va placer ceux qui ont le moins de votes dans les premières places...

EDIT : Je cherche toujours une petite solution

Merci =)
__________________
Vous êtes nouveau ici ?! Pensez à consulter les règles pour plus d'efficacité

Mon blog developpez.com! (En travaux)
- PHP5 sur 1and1
- Clé aléatoire en PHP
ArHacKnIdE est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2008, 14h13   #5
Membre extrêmement actif
 
Avatar de ArHacKnIdE
 
Inscription : janvier 2006
Messages : 1 950
Détails du profil
Informations personnelles :
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : janvier 2006
Messages : 1 950
Points : 1 927
Points : 1 927
Envoyer un message via MSN à ArHacKnIdE
Re,

J'ai trouvé une petite alternative qui rend un classement un peu mieux...

Voilà ce que j'ai fait pour ceux que ça interesse :

J'ai rajouté un champ dans la table user, le champ moyenne.

Le champ moyenne contient pour chaque utilisateur la moyenne de la place du classement vote et du classement note.

Exemple, Eric a 6 votes et une note de 4.8, avec ses 6 votes il occupe la 5eme place du classement vote et la position 3 au classement note.

Donc 5 + 3 = 8, 8/2 = 4, 4 est stocké dans le champ moyenne.

Ensuite lorsque j'etablis le classement, c'est sur moyenne que le tri se fait...


Exemple de resultat :

Citation:
1. marion (Note : 4.88) Vote(s) : 9
2. rockstarx (Note : 4.87) Vote(s) : 8
3. Elza (Note : 5) Vote(s) : 6
4. Lilou (Note : 5) Vote(s) : 5
5. ExSansTrick (Note : 5) Vote(s) : 5
6. Kasabian (Note : 5) Vote(s) : 3
7. PierO (Note : 5) Vote(s) : 4
8. HEiiLLE (Note : 5) Vote(s) : 3
9. MelleCam (Note : 5) Vote(s) : 4
10. baptiste (Note : 5) Vote(s) : 3
11. Toreo (Note : 4.65) Vote(s) : 14
12. Lucie (Note : 4.61) Vote(s) : 14
13. hej (Note : 5) Vote(s) : 3
14. gregoire (Note : 5) Vote(s) : 3
15. Lelodie (Note : 5) Vote(s) : 3
16. Guit0o (Note : 4.83) Vote(s) : 6
17. Lara (Note : 5) Vote(s) : 4
18. ptyflo (Note : 5) Vote(s) : 3
19. Annes0w (Note : 5) Vote(s) : 3
20. princ3ssdeperle (Note : 5) Vote(s) : 3
Merci MikeV
__________________
Vous êtes nouveau ici ?! Pensez à consulter les règles pour plus d'efficacité

Mon blog developpez.com! (En travaux)
- PHP5 sur 1and1
- Clé aléatoire en PHP
ArHacKnIdE est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h30.


 
 
 
 
Partenaires

Hébergement Web