afficher note moyenne sql

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 : afficher note moyenne sql

Re: afficher note moyenne sql

par yann18 » 14 nov. 2013, 12:41

cette requête est bonne, elle te calcule la moyenne pour chaque news:
$retour_messages=$cnx->query('SELECT news, AVG(note) AS moyenne FROM '.$prefixe.'_comments GROUP BY news');
Ah, j'avais oublié d'enlever le LIMIT, d'où l'erreur.
Mais ça ne m'affiche toujours pas la moyenne pour chaque news !
La table doit avoir au moins plusieurs lignes de news identiques pour pouvoir les grouper.Maintenant je connais ni la structure de la table encore moins les enregistrements qu'elle contient donc je ne pourrai pas te dire exactement pourquoi ça ne marche .

Re: afficher note moyenne sql

par Guillaume324 » 14 nov. 2013, 10:12

Je poste la solution :
$retour_messages=$cnx->query("SELECT news, AVG(note) AS moyenne FROM ".$prefixe."_comments WHERE news=".$id."");

Re: afficher note moyenne sql

par Guillaume324 » 14 nov. 2013, 08:25

Ah, j'avais oublié d'enlever le LIMIT, d'où l'erreur.
Mais ça ne m'affiche toujours pas la moyenne pour chaque news !

Re: afficher note moyenne sql

par Guillaume324 » 14 nov. 2013, 08:15

Il me semble qu'avec un GROUP par news, ça devrait fonctionner, pourtant j'ai un message d'erreur.
$retour_messages=$cnx->query('SELECT AVG(note) AS moyenne FROM '.$prefixe.'_comments GROUP BY news ORDER BY id DESC LIMIT');
Fatal error: Call to a member function fetch() on a non-object in /home/a3347974/public_html/en/comments/index.php on line 45

Re: afficher note moyenne sql

par yann18 » 13 nov. 2013, 23:22

Désolé de répondre tardivement, mais je n'avais plus de connexion internet !

Au début, j'avais fait ma requête ainsi :
$retour_messages=$cnx->query('SELECT news, AVG(note) AS moyenne FROM '.$prefixe.'_comments WHERE news='.$id.' GROUP BY news');
Mais ça ne donnait rien.

Le var_dump me donne ça :

Code : Tout sélectionner

array(2) { ["news"]=> string(2) "10" ["moyenne"]=> string(6) "4.0000" }
non pas avec la clause WHERE. Avec WHERE tu restreins le résultat de la moyenne qu'à la seule $news associée à $id . Or il te faut une moyenne par news.Encore une fois procède au débogage du résultat et assures-toi que la requête fonctionne avec phpmyadmin.

Re: afficher note moyenne sql

par Guillaume324 » 13 nov. 2013, 18:48

Désolé de répondre tardivement, mais je n'avais plus de connexion internet !

Au début, j'avais fait ma requête ainsi :
$retour_messages=$cnx->query('SELECT news, AVG(note) AS moyenne FROM '.$prefixe.'_comments WHERE news='.$id.' GROUP BY news');
Mais ça ne donnait rien.

Le var_dump me donne ça :

Code : Tout sélectionner

array(2) { ["news"]=> string(2) "10" ["moyenne"]=> string(6) "4.0000" }

Re: afficher note moyenne sql

par yann18 » 13 nov. 2013, 12:51

bonjour,

Que donne ta requête sql quand elle est exécutée au niveau de la console mysql ou de phmyadmin?
dans ton code on ne voit pas la boucle qui doit parcourir le tableau de données? sinon essaies de faire un débogage sur le tableau de données:
 $donnees_messages=$retour_messages->fetch(PDO::FETCH_ASSOC);
var_dump($donnees_messages);//affiche la moyenne par news

Re: afficher note moyenne sql

par sirakawa » 13 nov. 2013, 10:01

Il faut peut être mettre du where là dedans...

afficher note moyenne sql

par Guillaume324 » 13 nov. 2013, 09:32

Bonjour,

Je cherche à afficher la note moyenne pour chaque news.
$retour_messages=$cnx->query('SELECT news, AVG(note) AS moyenne FROM '.$prefixe.'_comments GROUP BY news');
$donnees_messages=$retour_messages->fetch(PDO::FETCH_ASSOC);

$note = $donnees_messages['moyenne'];
$starLevel = 0;
if(empty($note)){}
elseif($note<=1){ $starLevel = 1;}
elseif($note<=2){ $starLevel = 2;}
elseif($note<=3){ $starLevel = 3;}
elseif($note<=4.5){ $starLevel = 4;}
elseif($note<=5){ $starLevel = 5;}
$affnote = '<img src="note/'.$starLevel.'star.png" border="0">';

echo '$affnote';
Mais ce n'est pas le bon résultat qui s'affiche, ça me donne la note moyenne pour toutes les news en même temps.

Merci d'avance pour votre aide !