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 :
Voilà ce que j'ai fait :
$req =reqmysql("SELECT * FROM `archives` WHERE `vote` > 10 AND RIGHT(categorie,3)='68k' ORDER BY `notem` DESC LIMIT 0, 3" );
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.
|
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
select programmeur.nom, programmeur.prenom, avg(note) as note_moyenne
from programmeur.programmeur_id
inner join stats.programmeur_id
group by programmeur_id
order by avg(note) desc
limit 3 |
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" );
1./ tres déconseillé d'utiliser RIGHT cela ralentit énormément la requete 2./ dans ton pb, je ne vois pas que ce vient faire ton vote > 10
while ($ligne = mysql_fetch_object($req )) {
$tot =reqmysql("SELECT AVG(`notem`) FROM `archives` WHERE `auteur`=`$ligne->auteur`" );
$pouet = mysql_fetch_array($tot);
3./ a quoi cela sera d'executer une requete select si ce n'est pas pour récuper les valeurs ? j'ai fais une recherche de pouet dans ton code sur les lignes suiventes, je ne le trouve pas. pourquoi ?
$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 />" ; |
Message édité par weed le 03-11-2007 à 21:01:43