Moyenne avec requête bdd
15 messages
• Page 1 sur 1
-

TrAsKiN - WRInaute discret

- Messages: 136
- Inscription: 17 Juil 2006
Moyenne avec requête bdd
Bonsoir à tous !
Voilà ! J'aimerais faire une moyenne de notes stockées dans une base de données. J'ai déjà fais ceci :
Mais ça m'affiche toujours "Pas de note" ! J'ai essayé d'autre truc mais c'est pire
!
Voilà ! J'aimerais faire une moyenne de notes stockées dans une base de données. J'ai déjà fais ceci :
- Code: Tout sélectionner
mysql_query( "SELECT COUNT(*)'$nb_note' FROM `avis` WHERE `ref_id`='$id'" );
$requete_note = mysql_query( "SELECT * FROM `avis` WHERE `ref_id`='$id'" );
while ( $note = mysql_fetch_array( $requete_note ) ) {
$total = ( $total + $note["note"] );
}
if ( $nb_note == 0 ) {
echo "<p>Pas de note</p>";
} else {
$moyenne = ( $total / $nb_note );
echo "<p>Note : ". $moyenne ."</p>";
}
Mais ça m'affiche toujours "Pas de note" ! J'ai essayé d'autre truc mais c'est pire
-

sonikbuzz - WRInaute occasionnel

- Messages: 469
- Inscription: 21 Fév 2005
C'est pas top top comme script ...
Y'a plusieurs trucs qui fonctionne pas et y'a moyen de faire plus simple.
Déja ta variable $nb_note n'est pas déclaré et n'est pas incrémentée
-> $nb_note++; dans ta boucle
edit...
[mode=je fais tout
]
SELECT AVG(note) FROM `avis` WHERE `ref_id`='$id' GROUP BY ref_id;
Ca devrait être ok ...
[/mode]
Y'a plusieurs trucs qui fonctionne pas et y'a moyen de faire plus simple.
Déja ta variable $nb_note n'est pas déclaré et n'est pas incrémentée
-> $nb_note++; dans ta boucle
edit...
[mode=je fais tout
SELECT AVG(note) FROM `avis` WHERE `ref_id`='$id' GROUP BY ref_id;
Ca devrait être ok ...
[/mode]
Dernière édition par sonikbuzz le Lun Oct 02, 2006 1:08, édité 1 fois.
-

TrAsKiN - WRInaute discret

- Messages: 136
- Inscription: 17 Juil 2006
sonikbuzz a écrit:C'est pas top top comme script ...
Y'a plusieurs trucs qui fonctionne pas et y'a moyen de faire plus simple.
Bah j'ai cherché pendant un moment sur le net mais j'ai rien trouvé qui me convienne... Si tu as ça en stock je veux bien !
J'ai ajouter $nb_note++; mais ça ne change pas grand chose !
-

rog - WRInaute passionné

- Messages: 1662
- Inscription: 21 Sep 2006
j'ai rien compris
pourquoi la première requete ?
on ne formate pas de variables numeriques avec l'apostrophe dans une clause
si tu veux connaitre le nombre de éléments dans un champs et pour un id
ça se fait de plusieurs manières
avec un count ou avec un mysql_num_rows
rog
pourquoi la première requete ?
on ne formate pas de variables numeriques avec l'apostrophe dans une clause
si tu veux connaitre le nombre de éléments dans un champs et pour un id
ça se fait de plusieurs manières
avec un count ou avec un mysql_num_rows
rog
-

TrAsKiN - WRInaute discret

- Messages: 136
- Inscription: 17 Juil 2006
rog a écrit:j'ai rien compris
pourquoi la première requete ?
on ne formate pas de variables numeriques avec l'apostrophe dans une clause
si tu veux connaitre le nombre de éléments dans un champs et pour un id
ça se fait de plusieurs manières
avec un count ou avec un mysql_num_rows
rog
J'ai essayé avec un COUNT mais ça n'a rien donné ! Le première requête, j'ai simplement oublier de la viré ! Par contre je n'ai jamais utilisé mysql_num_rows, je ne vois pas trop ce qu'elle retourne !
-

TrAsKiN - WRInaute discret

- Messages: 136
- Inscription: 17 Juil 2006
sonikbuzz a écrit:SELECT AVG(note) FROM `avis` WHERE `ref_id`='$id' GROUP BY ref_id
Soit je suis nul, soit y a d'autre truc qui bloque !
Voilà ce que j'ai fais avec :
- Code: Tout sélectionner
$moyenne = mysql_query( "SELECT AVG(`note`) FROM `avis` WHERE `ref_id`='$ref_id' GROUP BY `ref_id`" );
if ( $moyenne == 0 ) {
echo "<p>Pas de note</p>";
} else {
echo "<p>Note : ". $moyenne ."</p>";
}
Ca affiche toujours : " Note : Resource id #(un chiffre) " !
-

rog - WRInaute passionné

- Messages: 1662
- Inscription: 21 Sep 2006
lol
faudrait quand meme apprendre les bases
les fonctions du type mysql_query ne retournent pas de résultat
elles retournent un identifiant de ressource
il faut ensuite monter la ressource pour en extraire le résultat
il y a un tas de fonction pour ça, la plus simple est mysql_result
rog
faudrait quand meme apprendre les bases
les fonctions du type mysql_query ne retournent pas de résultat
elles retournent un identifiant de ressource
il faut ensuite monter la ressource pour en extraire le résultat
il y a un tas de fonction pour ça, la plus simple est mysql_result
rog
-

TrAsKiN - WRInaute discret

- Messages: 136
- Inscription: 17 Juil 2006
Désoler...
Ca fais trois que j'apprend le PHP en regardant d'autres scripts, j'ai quasiment pas utilisé mysql_result. Je l'avais carrément zappé !
Maitenant le problème c'est que une erreur :
Warning: Wrong parameter count for mysql_result()
Je ne vois pourquoi, dans phpMyAdmin la requete est bonne !
Maitenant le problème c'est que une erreur :
Warning: Wrong parameter count for mysql_result()
Je ne vois pourquoi, dans phpMyAdmin la requete est bonne !
-

rog - WRInaute passionné

- Messages: 1662
- Inscription: 21 Sep 2006
essaies ça
( "SELECT AVG(note) as result FROM avis WHERE ref_id = $ref_id GROUP BY ref_id
ça crée un champ virtuel pour le resultat (si la table en a deja un, faut changer de nom)
et si ça marche pas
postes ta ligne de code mysql_result
rog
( "SELECT AVG(note) as result FROM avis WHERE ref_id = $ref_id GROUP BY ref_id
ça crée un champ virtuel pour le resultat (si la table en a deja un, faut changer de nom)
et si ça marche pas
postes ta ligne de code mysql_result
rog
-

TrAsKiN - WRInaute discret

- Messages: 136
- Inscription: 17 Juil 2006
J'ai toujours la même erreur qui me rapporte à cette ligne :
Je suis plus trop sûr de comment utiliser mysql_result !
- Code: Tout sélectionner
$moyenne = mysql_result( "SELECT AVG(`note`) AS resultat FROM `avis` WHERE `ref_id`='$id' GROUP BY `ref_id`" );
Je suis plus trop sûr de comment utiliser mysql_result !
-

TrAsKiN - WRInaute discret

- Messages: 136
- Inscription: 17 Juil 2006
Merci (encore une fois) rog ! Ca marche !
J'ai fais ceci :
En plus, je dormirais moins con ce matin !
J'ai mis le @ pour qu'il ne m'envoie pas d'erreur si c'est vide !
J'ai fais ceci :
- Code: Tout sélectionner
$moyenne = @mysql_result( mysql_query( "SELECT AVG(`note`) AS resultat FROM `avis` WHERE `ref_id`='$id' GROUP BY `ref_id`" ), 0 );
En plus, je dormirais moins con ce matin !
J'ai mis le @ pour qu'il ne m'envoie pas d'erreur si c'est vide !
-

sonikbuzz - WRInaute occasionnel

- Messages: 469
- Inscription: 21 Fév 2005
C'est mieux de faire comme ca :
Pour des questions de perf mieux vaut récuperer les resultats dans des "integer array" en plus ca évite de faire des "AS" .
- Code: Tout sélectionner
$query = "SELECT AVG(note) FROM avis WHERE ref_id='$id' GROUP BY ref_id";
$result = mysql_query($query);
$record_array = mysql_fetch_array($result, MYSQL_NUM);
$moy = $record_array[0];
Pour des questions de perf mieux vaut récuperer les resultats dans des "integer array" en plus ca évite de faire des "AS" .
-

TrAsKiN - WRInaute discret

- Messages: 136
- Inscription: 17 Juil 2006
sonikbuzz a écrit:C'est mieux de faire comme ca :
- Code: Tout sélectionner
$query = "SELECT AVG(note) FROM avis WHERE ref_id='$id' GROUP BY ref_id";
$result = mysql_query($query);
$record_array = mysql_fetch_array($result, MYSQL_NUM);
$moy = $record_array[0];
Pour des questions de perf mieux vaut récuperer les resultats dans des "integer array" en plus ca évite de faire des "AS" .
Je vais faire des tests et je vois lequel me plait le plus !
15 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Informations sur l'infrastructure technique de Google - 01-11-2004
- Google API : guide de développement de l'API Google - 20-09-2002
- Youtube toujours leader de la vidéo aux USA - 17-08-2010
- Script de mise en cache des pages (PHP MySQL) - 09-08-2010
- Yagoort : Yet Another Google Rank Test - 24-03-2005
- La tension monte entre Google et les sites d'avis d'internautes - 01-02-2011
- Nombre moyen de mots par requête : statistiques AOL Août 2006 - 10-08-2006
- Nombre de clics dans les pages de résultats : statistiques AOL Août 2006 - 11-08-2006
Consultez la description détaillée des produits ou services de Google suivants : Google Feed Fetcher
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
