Page 1 sur 2
créer une note moyenne
Posté : 11 oct. 2006, 13:02
par lorenzo75
Bonjour
Je cherche à créer une note moyenne dans une de mes pages.
Cette page est en lien avec une table de style :
id ville note
1 paris 4
2 paris 3
3 Lyon 4
4 paris 5
Comment faire pour additionner les notes de la ville appelée en URL (mapage.php?ville=paris) et diviser le tout par le nombre d'enregistrement Paris?
2ème question: quel est le moyen pour en récupérer un chiffre arrondi à 0,5? (1;1,5;2;2,5....)
Ce chiffre servira à aller chercher une image.
J'espère avoir été clair.
Merci.
Posté : 11 oct. 2006, 13:09
par Cyrano
Tu pourrais récupérer directement la moyennes via une requête SQL triée par villes, ça donnerait quelque chose du genre :
Code : Tout sélectionner
SELECT ville, AVG(note) AS moyenne
FROM ma_table_de_notes
GROUP BY ville
ORDER BY ville;
Adapte en mettant le bon nom de table et teste ça.
Posté : 11 oct. 2006, 15:51
par lorenzo75
Ca ne marche pas.
J'ai des notes comprises entre 0 et 5 et je me retrouve avec des moyennes de 12,3467... voire plus.
Posté : 11 oct. 2006, 15:55
par Vikchill
Pourtant, la requête de Cyrano est correcte. Peut-on voir la tienne?
Posté : 11 oct. 2006, 15:57
par Cyrano
Ce n'est pas que ça ne marche pas, c'est que le degré de précision du résultat est trop grand, il faut donc procéder à un arrondi. Regarde du coté de la fonction php round() pour limiter le nombre de décimales.
Posté : 11 oct. 2006, 16:00
par Vikchill
Je crois que l'arrondi est encore un autre problème Cyrano, puisque l'AVG lui retourne une valeur supérieure à la plus grande valeur de la population

Le round lui donnerait 12.3, quand la meilleure note est 5. Si seulement mes profs me faisaient les mêmes moyennes

Posté : 11 oct. 2006, 16:07
par Cyrano
Fais donc voir la structure de ta table et un jeu d'essai, ne voyant pas ce que tu fais, je ne peux que deviner et je n'ai aucune idée de l'erreur faite, parce que c'est sûr qu'il y a une erreur.
Posté : 11 oct. 2006, 16:09
par lorenzo75
SELECT lieu, AVG(note) AS moyenne
FROM photo
WHERE photo.lieu = colname
GROUP BY lieu
ORDER BY lieu
Posté : 11 oct. 2006, 16:10
par lorenzo75
Je vois que tu suis Vikchill!
Posté : 11 oct. 2006, 16:12
par fred9999
et si tu ne met que ça :
Code : Tout sélectionner
SELECT lieu, AVG(note)
FROM photo
WHERE
lieu = 'colname'
GROUP BY lieu ;
Posté : 11 oct. 2006, 16:15
par lorenzo75
et si tu ne met que ça :
Code : Tout sélectionner
SELECT lieu, AVG(note)
FROM photo
WHERE
lieu = 'colname'
GROUP BY lieu ;
Non, même résultat...
Posté : 11 oct. 2006, 16:19
par fred9999
en sortie de résultat ou après ton script d'arrondi???
quelle est la moyenne qui devrai s'afficher??
passe nous un bout de ta page php sinon

Posté : 11 oct. 2006, 16:23
par lorenzo75
Exemple :
Code : Tout sélectionner
Atlantic City 3
Atlantic City 4
Atlantic City 3
Atlantic City 4
Atlantic City 4
Atlantic City 4
Atlantic City 3
Atlantic City 3
Atlantic City 4
Atlantic City 4
Atlantic City 4
Atlantic City 3
Atlantic City 3
Il me trouve la moyenne de 12,30769.....
Posté : 11 oct. 2006, 16:30
par lorenzo75
Je n'ai pas encore fais l'arrondi puisque la moyenne n'est pas bonne.
mysql_select_db($database_photos, $photos);
$query_notemoyenne = sprintf("SELECT lieu, AVG(note) AS moyenne
FROM photo WHERE photo.lieu = %s GROUP BY lieu ORDER BY lieu ", GetSQLValueString($colname_notemoyenne, "text"));
$notemoyenne = mysql_query($query_notemoyenne, $photos) or die(mysql_error());
$row_notemoyenne = mysql_fetch_assoc($notemoyenne);
$totalRows_notemoyenne = mysql_num_rows($notemoyenne);
Posté : 11 oct. 2006, 16:32
par lorenzo75
Pour l'exemple (Atlantic city), il devrait m'afficher 3,538....