Bonjour,
Je voudrais pouvoir afficher automatiquement sur une page php les résultats d'un concours de nouvelles que ma commune organise.
Voici les données :
- 3 catégories de nouvelles : "enfant", "adolescent" et "adulte"
- 2 jurys de chacun 7 personnes sont chargés de noter les nouvelles qui arriveront, l'un des jurys prenant en charge la notation des catégories "adolescent" et "adulte" et l'autre, la catégorie "enfant". Chaque juré notera toutes les nouvelles de la (ou des) catégorie à laquelle (ou auxquelles) il est affecté. Pour nous faciliter le travail, nous avons donné un numéro à chaque juré.
- pour que l'anonymat des participants au concours soit effectif, nous allons numéroter les nouvelles au fur et à mesure de leur réception.
J'ai fait un formulaire pour que chaque juré entre ses notes qui iront s'inscrire dans une table mysql "notation" dans laquelle j'ai créé les champs nécessaires :
num : le n° de juré
nouvelle : le n° de la nouvelle
classe : la catégorie de la nouvelle ("enfant", "adolescent", "adulte")
note : la note attribuée
Pour l'affichage des résultats, j'ai fait sans problème la requête permettant d'obtenir le total des votes de chaque nouvelle, classée dans l'ordre de leur numéro, puis celle indiquant le nombre de votant par nouvelle et enfin celle donnant la moyenne des notes par nouvelles ; par exemple pour la catégorie adultes
Jusque là pas de problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 /*sélection des nouvelles de la catégorie adulte classées par numéro*/ $rech = mysql_query ("SELECT * FROM notation WHERE classe = 'adulte' GROUP BY nouvelle ORDER BY nouvelle"); while ($data = mysql_fetch_array ($rech) ) { $numnouv = $data['nouvelle']; /*total des notes par nouvelles*/ $req=("SELECT SUM(note) FROM notation WHERE nouvelle = '$numnouv' "); $sommenouv = mysql_query ($req); $totalnouv = mysql_result($sommenouv, 0); /*calcul du nombre de votes par nouvelle*/ $rep = mysql_query("SELECT COUNT(note) AS nbre_jures FROM notation WHERE nouvelle = '$numnouv' "); $donnees = mysql_fetch_array ($rep); $jures = $donnees['nbre_jures']; /*pour obtenir la moyenne (avec des décimales) par nouvelle*/ $moyenne = ($totalnouv/$jures); $moyenne = sprintf('%0.2f', $moyenne); /*et j'affiche le tout sur la page*/ echo ...... }
Maintenant, je voudrais afficher aussi le classement des nouvelles de cette façon :
1 - nouvelle n° avec une moyenne de ...
2 - nouvelle n° avec une moyenne de ...
Bien sûr en allant de la meilleure moyenne à la plus mauvaise, et que la numérotation du classement se fasse automatiquement puisque tant que le concours n'est pas fini, nous ne connaissons pas le nombre de nouvelles que nous recevrons.
et là, je sèche...
Par avance merci de votre aide, et toutes mes excuses d'avoir été si longue, mais je voulais que vous ayez toutes les données.
Patricia
Partager