Faire la moyenne des données d'une colonne récupérées avec une requete

Faire la moyenne des données d'une colonne récupérées avec une requete - SQL/NoSQL - Programmation

Marsh Posté le 24-05-2013 à 16:11:15    

Bonjour à tous,
 
Voila mon souci, j'affiche un tableau sur mon site grace à cette requete:
 

Code :
  1. <thead>
  2.     <tr>
  3.      <th>MATCH DE</th>
  4.      <th width="200px">NOMS</th>
  5.      <th>PPD</th>
  6.      <th>MPR</th>
  7.      <th>MOYENNE</th>
  8.     </tr>
  9.    </thead>
  10.    <tbody>
  11.     <?php
  12.      $q = '
  13.      SELECT horaire, joueur, ppd, mpr, (ppd+mpr*10)/6 as moyenne
  14.      FROM moyenne
  15.      where joueur = "' . htmlspecialchars($_GET['nom']) . '"
  16.      UNION ALL
  17.      SELECT horaire, joueurb, ppdb, mprb, (ppdb+mprb*10)/6 as moyenne
  18.      FROM moyenne
  19.      where joueurb = "' . htmlspecialchars($_GET['nom']) . '"
  20.      ORDER BY horaire
  21.      ';
  22.      $r = mysql_query($q) or die(mysql_error());
  23.      while (list($horaire,$joueur,$ppd,$mpr,$moyenne) =mysql_fetch_array($r)) {
  24.     ?>
  25.     <tr>
  26.      <td id="sample2"><?php echo $horaire ?></td>
  27.      <td id="sample2"><?php echo $joueur ?></td>
  28.      <td id="sample2"><?php echo $ppd ?></td>
  29.      <td id="sample2"><?php echo $mpr ?></td>
  30.      <td id="sample2"><?php echo number_format($moyenne,2) ?></td>
  31.     </tr>
  32.     <?php
  33.      }
  34.     ?>
  35.    </tbody>


 
Ce qui me donne ce tableau:
 
http://sdz-upload.s3.amazonaws.com/prod/upload/exemple.PNG
 
J'aimerai rajouter une ligne à la fin du tableau qui me donne la moyenne de la colonne moyenne.
Mais je ne sais pas comment faire.
 
Un coup de main serait le bienvenu!!!
 
Merci d'avance.

Reply

Marsh Posté le 24-05-2013 à 16:11:15   

Reply

Marsh Posté le 25-05-2013 à 14:46:20    

Code :
  1. $i =0;
  2. $somme_moyenne = 0;
  3. while (list($horaire,$joueur,$ppd,$mpr,$moyenne) =mysql_fetch_array($r)) {
  4.     ?>
  5.     <tr>
  6.      <td id="sample2"><?php echo $horaire ?></td>
  7.      <td id="sample2"><?php echo $joueur ?></td>
  8.      <td id="sample2"><?php echo $ppd ?></td>
  9.      <td id="sample2"><?php echo $mpr ?></td>
  10.      <td id="sample2"><?php echo number_format($moyenne,2) ?></td>
  11.     </tr>
  12.     <?php
  13.       $i++;
  14.       $somme_moyenne += $moyenne;
  15.      }
  16.     ?>
  17.    <tr>
  18.        <td colspan="4">MOYENNE</td>
  19.       <td><?php echo number_format($i == 0 ? 0 : $moyenne / $i), 2)?></td>
  20.   </tr>
  21.    </tbody>

Reply

Marsh Posté le 25-05-2013 à 14:57:43    

Ça me donne un résultat à 0.00.
 
http://img822.imageshack.us/img822/6659/capture11f.png
 
J'ai fait un echo des variables $i et $moyenne $i donne bien 7 mais $moyenne est vide.
 
à mon avis c'est $somme_moyenne += $moyenne; qui ne fonctionne pas.
Mais ça dépasse mes compétences.
En tout cas merci de te pencher sur mon problème.

Reply

Marsh Posté le 25-05-2013 à 15:02:42    

Et bien oui bien sur j'ai modifié
<td id="sample2"><?php echo number_format(($i == 0 ? 0 : $moyenne / $i), 2)?></td>
par
<td id="sample2"><?php echo number_format(($i == 0 ? 0 : $somme_moyenne / $i), 2)?></td>
et ça fonctionne ;)
Merci à toi!!!

Reply

Marsh Posté le 25-05-2013 à 15:22:10    

ah ouais c'est pas faux

Reply

Marsh Posté le 05-06-2013 à 09:12:59    

Sinon je pense qu'il devait être possible de tout récupérer en une requête avec quelque chose de ce style :
 

Code :
  1. SELECT 1 as determinant, horaire, joueur, ppd as ppd, mpr as mpr, (ppd+mpr*10)/6 as moyenne
  2. FROM moyenne
  3. where joueur = "' . htmlspecialchars($_GET['nom']) . '"
  4. UNION ALL
  5. SELECT 1 as determinant, horaire, joueurb, ppdb as ppd, mprb as mpr, (ppdb+mprb*10)/6 as moyenne
  6. FROM moyenne
  7. where joueurb = "' . htmlspecialchars($_GET['nom']) . '"
  8. UNION ALL
  9. SELECT 2 as determinant, null as horaire, joueur, sum(decode(joueur, "' . htmlspecialchars($_GET['nom']) . '", ppd, ppdb)) as ppd,
  10.        sum(decode(joueur, "' . htmlspecialchars($_GET['nom']) . '", mpr, mprb)) as mpr,
  11.    (sum(decode(joueur, "' . htmlspecialchars($_GET['nom']) . '", ppd, ppdb))+sum(decode(joueur, "' . htmlspecialchars($_GET['nom']) . '", mpr, mprb))*10)/6 as moyenne
  12. FROM moyenne
  13. where joueur = "' . htmlspecialchars($_GET['nom']) . '"
  14. or joueurb = "' . htmlspecialchars($_GET['nom']) . '"
  15. ORDER BY determinant, horaire


---------------
Miagic
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed