PHP / mysql : somme des nombres en sortie

salut a tous,
je suis en train de faire un script de notation, donc j’extrait les notes une a une de la base de donnée pour les additioner et les diviser par le nombre de vote, j’obtient ainsi ma moyenne.
J’ai codé ça mais je pense qu’il y a plus simple ( je sais pas si ça marche car j’ai pas de serveur sous la main ).

include("…/./connec.php");
        $requaffiche = " select * from note ";
        $trait = mysql_query($requaffiche) or die(‘erreur here’.mysql_error());
        while ($bcle = mysql_fetch_array($trait))
          {
            $i=1;
            $note = $bcle[‘note’];
  $note[$i]
  $i ++;
          }
        for($a=1;$a<$i;$a++)
        {
          $notes += $note[$a];
        $maille = ($notes/$i);
        }

?> 

Précision : connec.php assure la connection a la base de donnée quivabien.

Ce message a été édité par fser le 02/09/2004

Heu, ya pas une fonction mysql qui fait la moyenne toute seule comme une grande par hasard? Je te retrouve ca et j’edite.

Edit : bon, ok, grillé. Tu peux aussi jouer avec AVG() pour faire la moyenne.

Ce message a été édité par sm2m2 le 02/09/2004

Bah le truc c’est que tu peux faire la moyenne directement dans la requete:

SELECT SUM(note)/count(note) as moyenne  FROM note
Du coup, rien à faire dans le php (qui m’avais l’air juste au passage)

Voilà voilà

EDIT : après une petite recherche dans la doc de mon analyseur de requête, j’ai retrouvé cette fonction d’agrégation : AVG
Plus qu’à faire en fait SELECT AVG(note) as moyenne  FROM note
Ce message a été édité par BodySplash le 02/09/2004

Ah merci bien !
je vais tester ça.
Je suppose qu’avec une requete comme ça la page gagne en temps de chargement en plus :stuck_out_tongue:
( tres peu certe mais c’est moins lourd )
maintenant je fais echo " requete " et ça devrait le faire.
j’editerai pour le dire


Ce message a été édité par fser le 02/09/2004

Juste, le as Moyenne , il sert a quoi entre guillemet, car si je fais echo mysql_query requete ça suffit a afficher ma moyenne non ?

[quote]include("…/./connec.php");
        $requaffiche = " select * from note ";
        $trait = mysql_query($requaffiche) or die(‘erreur here’.mysql_error());
        while ($bcle = mysql_fetch_array($trait))
          {
            $i=1;
            $note = $bcle[‘note’];
  $note[$i]
  $i ++;
          }
        for($a=1;$a<$i;$a++)
        {
          $notes += $note[$a];
        $maille = ($notes/$i);
        }

?> [/quote]Deja ton $i=0; Faut le mettre a l’exterieur de la boucle while sinon ca sert a rien

Et le i++; faut le mettre au debut comme ca si ya rien dans ta base il te mettra 0

Ensuite c’est mon point de vue et je fait du php depuis 2 mois ! donc bon …

Mais j’aurai fait une variable $sumnote tu la fous dans ta boucle while (sans oublier de l’initialiser donc au debut $sumnote=0;

ensuite

$sumnote = $sumnote + $bcle[‘note’];

La tu test si i et pas egal a 0 sinon va pas aimer la division par zero

Et a la fin c’est magique $resultat = $sumnote / $i ;

Voila donc je pense qu’il n’y a pas besoin de tableau ni de boucle for a la fin

oyo

Edit :: OUai mais si ya un truc qui fait la moyenne tous seul tss…
Bon je vais me coucher 
Ce message a été édité par avavrin le 05/09/2004
Ce message a été édité par avavrin le 05/09/2004

merci bien a toi,
demain je creuse tout ça :stuck_out_tongue:
avg ()??
je googlelifie demain
Roh c’est vraiment super avg ! merci !!
Ce message a été édité par fser le 05/09/2004
Ce message a été édité par fser le 05/09/2004

Si tu veux un petit prog qui fait serveur Apache, PHP et mySQL, utilise easyPHP. C’est pratique pour tester vite fait…

Ce message a été édité par Sempai le 05/09/2004

merci bien, mais ce n’est pas le probleme du soft, mais du bordel engendré ( oui j’ai 2 dossiers ww de serveurs precedement installés que je voudrais trier )
et mon apache sous linux marche pas mal il me semble.
Donc meme si mon passage sous win dure, j’men fou des serveurs.

Concretement, comment exploiter la note finale, soit le avg(note) ?
merci

En supposant que tes notes sont stockées dans le field Note_Field de la table Note_Table de la Database Note_Database:

$result = mysql_db_query(“Note_Database”, “SELECT AVG(Note_Field) as mean FROM Note_Table”);
if($result){
 $mean = (int)mysql_result($result,0,“mean”);
 mysql_free_result($result);
 echo $mean;
}

Merci Sempaï !
j’ai pas pu repondre avant, internat oblige