Classement programmeurs [SQL] - SQL/NoSQL - Programmation
Marsh Posté le 03-11-2007 à 17:11:33
et bien je ferais une table qui enregistrerait les renseignements des programmeurs référencé :
Programmeur avec comme champs prgrammeur_id (clé primaire), nom, prenom (ou pseudo), email
Et une autre table stats avec comme champs
stats_id (clé primaire), programmeur_id, date_du_vote, ip_du_vorant
Donc comme tu l'as surement deviné, chaque programme sur ton site a son programmeur_id spécifique qui correspond à l'auteur de programme.
Tu spécifiera dans ta base de donnée que les champs programmeur_id + ip_du_votant sont unique pour ne pas qu'un internaute puisse voter 2 fois le meme programmeur.
Lorsque l'internaute votera, tu insérera :
l'id du programmeur, l'ip de l'internaute, et sa date de vote.
Et apres pour faire tes stats, tu fais tout simplement un truc dans le genre
Code :
|
Marsh Posté le 03-11-2007 à 18:34:34
MErci.
En fait je voudrais le faire en mySQL.
Voilà ce que j'ai fait :
Mon problème est dans le $tot qui affiche la moyenne des notes des programmes d'un auteur.
J'ai des messages d'erreur.
J'ai mis en rouge les gros doutes.
$req =reqmysql("SELECT * FROM `archives` WHERE `vote` > 10 AND RIGHT(categorie,3)='68k' ORDER BY `notem` DESC LIMIT 0, 3" );
while ($ligne = mysql_fetch_object($req )) {
$tot =reqmysql("SELECT AVG(`notem`) FROM `archives` WHERE `auteur`=`$ligne->auteur`" );
$pouet = mysql_fetch_array($tot);
$tablo = pathinfo($ligne ->fichier) ;
$ext = $tablo ['extension'] ;
$bloc = $bloc ."<a href=\"modules/archives/download.php?id=$ligne ->id\"><img src=\"/images/";
if ($ext == "exe" or $ext == "com" or $ext == "bat" or $ext == "msi" ) {
$bloc = $bloc ."star.gif\"";
} elseif ($ext == "rar" or $ext == "zip" ) {
$bloc = $bloc ."star.gif\"";
} else {
$bloc = $bloc ."star.gif\"";
}
$bloc = $bloc ." border=\"noborder\" alt=\"archives\" /></a> <a href=\"index.php?mod=archives&ac=voir&id=".$ligne->id."\">".$ligne ->nom."</a> <font color=#ff0172>(".$ligne ->notem."/5) - Moyenne auteur : ".$pouet['tot']."</font><br /><br />" ;
Marsh Posté le 03-11-2007 à 18:47:52
en fait je voudrais meme mieux, je voudrais afficher les 5 meilleures mmoyennes lais bon là je teste juste en affichant les moyenens des auteurs des programmes les mieux notés
Marsh Posté le 03-11-2007 à 19:06:29
ReplyMarsh Posté le 03-11-2007 à 19:12:41
ReplyMarsh Posté le 03-11-2007 à 20:59:39
ti-bank a écrit : MErci. |
Et donc ?
Ce n'est pas bon ce que je t'ai dis ?
J'ai donné pour le moment aucune spécificité à un serveur de base de donnée. Idéallement c'est d'etre le plus standard possible.
ti-bank a écrit : |
Juste pour info, tu es dans la cat SQL ....
de plus DESC n'est pas tres beau .... tu devrais l'utiliser avec order by, je trouve ca mieux
=> doc : mysql.com/select
ti-bank a écrit : en fait je voudrais meme mieux, je voudrais afficher les 5 meilleures mmoyennes lais bon là je teste juste en affichant les moyenens des auteurs des programmes les mieux notés |
Ahh, j'avais pas compris que tu voulais le top 3 des moyennes des notes. Dans ce cas, en effet il suffit de faire un average des notes, de les trier
et de limiter l'affichage à 3 (la par contre ca se spécifique à MySQL à cause de limit qui n'est pas standard )
Dans ce cas, je récapitule au niveau des tables :
table programmeur : champs prgrammeur_id (clé primaire), nom, prenom (ou pseudo), email
table stats : stats_id (clé primaire), programmeur_id, date_du_vote, note, ip_du_vorant
|
Petit commentaire sur ton code (j'ai utilisé un spoiler pour les couleurs, car elles sont desactivé avec les balises fixe et code) :
Spoiler : $req =reqmysql("SELECT * FROM `archives` WHERE `vote` > 10 AND RIGHT(categorie,3)='68k' ORDER BY `notem` DESC LIMIT 0, 3" ); |
Marsh Posté le 03-11-2007 à 16:14:16
J'aimerai classer les programmeurs de mes programmes que je propose en téléchargement sur mon site :
ceux qui ont la meilleure moyenne de leurs programmes notés.
Donc faut que je ratisse chaque programme pour chaque programmeur, que je fasse la moyenne pour chaucun puis que je classe.
Ma base s'appelle 'archives'.
Le champ 'auteur' précise le nom du programmeur.
Le champ 'notem' précise la note du programme.
Pouvez-vous me guider ? merci
Message édité par ti-bank le 03-11-2007 à 18:35:03
---------------
Tous vos programmes & cours pour calculatrices TI : www.ti-bank.fr