créer une note moyenne

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : créer une note moyenne

par Cyrano » 11 oct. 2006, 17:29

Pour des notes qui doivent être en 0 et 10, un type TINYINT aurait plus que très largement suffi, c'est pas utile de mettre un format aussi grand.

par lorenzo75 » 11 oct. 2006, 17:10

:oops: :oops: :oops: :oops: :oops:
SORRY

par lorenzo75 » 11 oct. 2006, 17:09

OK, le problème vient de mon type de champs 'set'. Je viens de le changer en 'INT' et les notes inscrites dans la base se sont transformées en 32 ou 16 ... :cry:

par Cyrano » 11 oct. 2006, 17:08

Le champ 'note' à l'intérieur de ma table est de type "set".
Est-il possible que ça pose problème?
Ha ben ça c'est certain :shock: On peut bien chercher... AVG() ne fonctionne qu'avec des champs de type numérique, donc là il y a un problème. Solution, faire un CAST ou encore modifier le type de champ.

par fred9999 » 11 oct. 2006, 16:47

et comme ça??
mysql_select_db($database_photos, $photos); 
$query_notemoyenne = "SELECT lieu, AVG(note) FROM photo WHERE lieu = '%s' GROUP BY lieu ;"; 
$notemoyenne = mysql_query($query_notemoyenne, $photos) or die(mysql_error()); 
	while($print = mysql_fetch_row($result))
	{
	echo "$print[0]";
	echo "$print[1]<br>";
	}

par lorenzo75 » 11 oct. 2006, 16:47

Le champ 'note' à l'intérieur de ma table est de type "set".
Est-il possible que ça pose problème?

par lorenzo75 » 11 oct. 2006, 16:43

je viens d'essayer sur mysql et c'est les mêmes résultats..

Ma requete est bien ça, mais il y a d'autres villes dans la table.

par fred9999 » 11 oct. 2006, 16:34

ta requete est un truc comme ça alors ???

Code : Tout sélectionner

SELECT lieu, AVG(note) FROM photo WHERE lieu = 'Atlantic City' GROUP BY lieu ;

par Vikchill » 11 oct. 2006, 16:34

Bien, as-tu fait un écho de ta variable $query_notemoyenne pour voir si la requete générée est la bonne?

Et as-tu essayé cette requête sous MySQL, directement?

par lorenzo75 » 11 oct. 2006, 16:32

Pour l'exemple (Atlantic city), il devrait m'afficher 3,538....

par lorenzo75 » 11 oct. 2006, 16:30

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);

par lorenzo75 » 11 oct. 2006, 16:23

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

par fred9999 » 11 oct. 2006, 16:19

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 :wink:

par lorenzo75 » 11 oct. 2006, 16:15

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

par fred9999 » 11 oct. 2006, 16:12

et si tu ne met que ça :

Code : Tout sélectionner

SELECT lieu, AVG(note) FROM photo WHERE lieu = 'colname' GROUP BY lieu ;