Partage
  • Partager sur Facebook
  • Partager sur Twitter

Additionner toutes les valeurs

Sujet résolu
    2 décembre 2006 à 9:11:03

    Bonjour,
    j'ai pas trop su comment expliquer, mais voilà, j'ai une table commentaires, avec :
    l'id du commentaire
    l'id du jeu associé
    l'id de l'article associé
    l'auteur
    le contenu

    Mais j'aimerai aussi rajouter un système de notes.
    A chaque nouveau commentaire, ya une note qui est donnée.

    Donc je dois rajouter un champ note.

    Jusque là ça va, j'arrive à afficher la note associée aux commentaires, les commentaires voulus, le nombre de commentaires, ...

    Mais j'aimerai faire une moyenne de toutes les notes.

    Donc additionner tout les champs notes que je veux (ceux dont l'id_jeu et l'id_article est la même) et le diviser par le nombre de notes.

    C'est l'addition qui me pose problème.

    Je sais pas si vous m'avez compris, mais en gros.

    Merci d'avance pour votre aide,

    a455bcd9
    • Partager sur Facebook
    • Partager sur Twitter
      2 décembre 2006 à 9:21:19

      Déjà il faut que ta requête ne sélectionne que les bons articles.
      je suppose que l'on a défini $id_jeu et $id_article via le tableau $_GET par exemple.
      Puis en traitant ça en boucle on devrait s'en sortir...

      $query = "SELECT * FROM table WHERE id_jeu='$id_jeu' AND id_article='$id_article'";
      $result = mysql_query($query);
      $num = mysql_num_rows($result);
      $total = 0;
      while($a = mysql_fetch_assoc($result))
      {
      $total += $a['note']
      // Autres traitement à faire éventuels, mais ça concerne plus le système de notation
      }
      $moyenne = $total / $num;

      Et v'là l'travail :D

      Ya p'tet moyen de récupérer ça méthode pur MySQL mais je saurais pas faire...
      • Partager sur Facebook
      • Partager sur Twitter
        2 décembre 2006 à 9:23:21

        Salut,

        MySQL a une fonction qui permet de faire une moyenne, donc autant en profiter. La fonction, c'est AVG(). Petit exemple:
        SELECT LOGIN,AVG(SCORE) AS MOY
        FROM table4 GROUP BY LOGIN
        ORDER BY MOY DESC


        A+ ;)
        lobotomised
        • Partager sur Facebook
        • Partager sur Twitter
          3 décembre 2006 à 19:41:22

          lobotomised :

          J'ai essayé, avec une table, avec 3 champs :
          id_vote, id_jeu, et vote.

          Voilà mon code :

          <?php
          mysql_connect("", "", "");
          mysql_select_db("");

          $sql = mysql_query("SELECT id_vote, id_jeu, vote, AVG(vote) AS moyenne
          FROM test_moyenne WHERE id_jeu = 2 GROUP BY id_jeu
          ORDER BY id_vote DESC"
          );

          while ($donnees = mysql_fetch_array($sql))
          {
          ?>

          <?php
          $arrondi = round($donnees['moyenne'], 0);
          echo '<b>Moyenne des votes : ' .$arrondi. '</b><br />'; ?>
          <?php echo 'Vote n°' .$donnees['id']. ' : ' .$donnees['vote'] .'<br />'; ?>

          <?php
          }  // Fin de la boucle des news
          ?>


          La moyenne fonctionne très bien, mais le problème, c'est que je n'arrive pas à afficher que la note.
          C'est à dire, que j'aimerai pouvoir afficher, à la fois la moyenne des notes (en haut de page par exemple), et la note correspondant à chaque commentaire (à côté du pseudo par exemple).

          Est ce que c'est possible ?

          Sinon, Darth Killer, j'ai essayé, ton code, et ça me mets 0 0 0 0 0 0 0 :
          <?php
          mysql_connect("sql11", "virtualg", "ypYfeJr2");
          mysql_select_db("virtualg");

          $result = mysql_query("SELECT * FROM test_moyenne");
          $num = mysql_num_rows($result);
          $total = 0;
          $moyenne = $total / $num;
          while($donnees = mysql_fetch_assoc($result))
          {
          ?>

          <?php
          echo $moyenne;
          ?>

          <?php
          }  // Fin de la boucle des news
          ?>


          Merci pour votre aide,

          a455bcd9
          • Partager sur Facebook
          • Partager sur Twitter

          Additionner toutes les valeurs

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown