Enregistrer une moyenne faite à partir d'une autre table

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonsoir,

J'ai 1 table avec plusieurs notes correspondant à différents lieux.

Je fais une moyenne avec

1
$req = $bdd->query('SELECT AVG(moyenne) AS note FROM modale GROUP BY campings_id')

Ca fonctionne mais je n'arrive pas à enregistrer ces résultats dans ma 2e table pour pouvoir ensuite les afficher où je veux.

Je ne sais pas non plus sur quelle page mettre ça, parce qu'à chaque avis publié, la moyenne va changer et donc l'enregistrement dans ma 2e table doit changer aussi.

Du coup je ne sais pas comment m'y prendre :)

Merci pour votre aide

+0 -0

si tu doit y enregistrer dans une deuxième table a chaque nouvel avis, ne vaut t'il pas mieux lors de l'affichage faire directement cette requête ?

1
$req = $bdd->query('SELECT AVG(moyenne) AS note FROM modale GROUP BY campings_id')

(ಠ_ಠ) visite Drozor

+0 -0
Auteur du sujet

Effectivement, pour la page ou j'affiche les avis d'un seul camping, ça fonctionne très bien.

Là ou ça se corse, c'est pour la page ou je liste les campings avec une requête. Tout ce que j'arrive à faire, c'est afficher les moyennes de tous les campings même ceux qui ne sont pas sur cette liste.

J'ai essayé de mettre ma requête à l'intérieur de l'autre mais je dois mal m'y prendre parce que ça ne marche pas.

+0 -0
1
2
3
4
5
$req = $bdd->query('SELECT AVG(moyenne), * AS note FROM modale GROUP BY campings_id')
while($donnees = $req->fetch())
{
    //affichage des infos et de la moyenne
}

(j'y ai écrit de tête et je n'y ai pas testé ;) )

Édité par Aze

(ಠ_ಠ) visite Drozor

+0 -0
Auteur du sujet

En fait j'ai une table campings qui affiche la liste des campings par département avec un SELECT tout simple.

Dans cette table j'ai fait une colonne note pour y enregistrer les moyennes globales de chaque campings ( ce que je n'ai pas réussi à faire ).

J'ai une 2e table qui contient tous les avis sur tous les campings avec une note moyenne par avis, et je calcule la moyenne globale avec avg().

Pour la page affichage des avis ça fonctionne, mais pour la page avec ma liste de campings…

C'est la que je bloque: soit pour enregistrer la moyenne globale dans la table campings (avec un UPDATE ?), soit l'afficher avec avg() pour chacun des campings.

+0 -0
Auteur du sujet

J'ai réussi !!!

1
2
3
4
5
6
7
8
<?php 
                $req = $bdd->prepare('SELECT AVG(moyenne) AS note FROM modale WHERE campings_id = ?');
                $req->execute(array($donnees['id']));
                    while ($donnees = $req->fetch())
                    {
                        echo round($donnees['note']*2)/2 .'/10</span></p>';
                    }
            ?>

Je l'ai placé dans la boucle de ma première requête, là ou j'avais besoin.

J'avais déjà essayé mais ça allait pas du tout. Sûrement une erreur de balise toute bête.

En tous cas, ça y est :)

Merci pour ton aide

EDIT : Et M****, j'ai parlé trop vite.

Maintenant j'ai bien la moyenne affichée sur la liste des campings, mais en cliquant sur lire les avis, j'ai plus rien qui s'affiche…

J'y comprends vraiment rien.

Édité par clenake

+0 -0
Auteur du sujet

Oui, j'avais déjà vu les requêtes imbriquées mais je n'ai pas réussi à faire ce que je voulais.

Tant pis, j'ai bidouillé mon css et tout colle :)

Encore merci pour tes conseils en espérant en avoir fini avec les problèmes !

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte