Sql/php moyenne et exclusion

Résolu/Fermé
-
Messages postés
2
Date d'inscription
vendredi 27 mars 2009
Statut
Membre
Dernière intervention
28 mars 2009
-
Bonjour,
je tiens tout d'abord à préciser que ça fait moins d'une semaine que j'ai commencer le php, donc je vais très probablement passer pour un ignare...
Je fais des test pour créer un site de critique. j'ai créé une base dans laquelle sont enregistré les critique contenant un certain nombre de champs dont l'auteur de la critique, le titre, la note et le synopsis.
Je me retrouve confronté à un problème, je cherche à afficher dans un tableau le titre et la moyenne des notes sur la production en question.
J'affiche donc l'ensemble des titres critiqués via une boucle while....jusque là pas de problème.
Pour le titre premier problème, je veux afficher la liste des titres, mais comme plusieurs personnes peuvent faire une critique dessus, il se répète dans la liste, je sais comment faire une requête sql vers tous les éléments ayant des champs vides mais pas pour ceux ayant des champs pleins (qui serait une première méthode en excluant les éléments ne possédant pas de synopsis) ou alors il faudrait que je puisse faire une requête dans la boucle qui empêche que les élément avec le même titre ne s'affiche plusieurs fois.
Ensuite pour le champ moyenne, je suppose qu'il faut que je fasse une nouvelle requête sql pour sélectionner uniquement les mm titres, mais alors le titre serait une variable......
Enfin bon je me noie totalement dans mon bouillon.....
Que me conseillez vous? Pouvez vous m'aider?
Merci d'avance.

4 réponses

pouf ca a l air compliquer tout ca ^^ peux tu poster ton code que l'on y regarde stp ;)
Bien, voilà mon code, la page varie selon deux liens un pour non licencié l'autre pour licencié, donc j'ai intégré un switch qui me permet de faire varier la page selon une variable 'val'



<table width="600px">
<?php


switch ($_GET['val'])
{
case 5 :
?>
<tr>
<th class="thnew"><div align="left">
Les non licenciés</div>
</th>
</tr>
<tr>
<td class="tdnew">
<div align="left">
<table width="600px" class="tbproperty">
<tr>
<td class="tdnew"><div align="center"><strong>Titre</strong><br /></div>
</td>
<td class="tdnew"><div align="center"><strong>Synopsis</strong><br /></div>
</td>
<td class="tdnew"><div align="center"><strong>Critiques</strong><br /></div>
</td>
<td class="tdnew"><div align="center"><strong>Moyenne</strong><br /></div>
</td>
</tr>

<?php
mysql_connect("localhost", "root", "");
mysql_select_db("akormanga");
$reponse = mysql_query("SELECT * FROM anime WHERE licence=''");

while ($donnees = mysql_fetch_array($reponse) )
{
?>
<tr>
<td class="tdnew"><?php echo $donnees['nom']; //titre?></a>
</td>
<td class="tdnew"><a href="critique.php?nom=<?php echo $donnees['nom']; ?>">synopsis</a>
</td>
<td class="tdnew"><a href="critique.php?nom=<?php echo $donnees['nom']; ?>">critiques</a>
</td>
<td class="tdnew"><?php echo $donnees['MOYENNE']; //je voudrais entrer une moyenne des notes correspondant au titre
//normalement à chaque entrée de la table correspond une note, il faudrait que je fasse la moyenne des notes correspondant à un titre en particulier?>
</td>
</tr>
<?php
}
break;

case 17 :
?>
<tr>
<th class="thnew"><div align="left">
Les licenciés</div>
</th>
</tr>
<tr>
<td class="tdnew">
<div align="left">
<table width="600px" class="tbproperty">
<tr>
<td class="tdnew"><div align="center"><strong>Titre</strong><br /></div>
</td>
<td class="tdnew"><div align="center"><strong>Synopsis</strong><br /></div>
</td>
<td class="tdnew"><div align="center"><strong>Critiques</strong><br /></div>
</td>
<td class="tdnew"><div align="center"><strong>Licence</strong><br /></div>
</td>
<td class="tdnew"><div align="center"><strong>Moyenne</strong><br /></div>
</td>
</tr>

<?php
mysql_connect("localhost", "root", "");
mysql_select_db("bip");
$reponse = mysql_query("SELECT * FROM bip WHERE licence=''"); //là je ne sais pas quoi mettre car le contenu de licence est variable

while ($donnees = mysql_fetch_array($reponse) )
{
?>
<tr>
<td class="tdnew"><?php echo $donnees['nom']; ?>
</td>
<td class="tdnew"><a href="synopsis.php?nom=<?php echo $donnees['nom']; ?>">synopsis</a>
</td>
<td class="tdnew"><a href="critique.php?nom=<?php echo $donnees['nom']; ?>">critiques</a>
</td>
<td class="tdnew"><?php echo $donnees['age']; ?>
</td>
<td class="tdnew"><?php echo $donnees['MOYENNE']; //je voudrais entrer une moyenne des notes correspondant au titre
//normalement à chaque entrée de la table correspond une note, il faudrait que je fasse la moyenne des notes correspondant à un titre en particulier?>
</td>
</tr>
<?php
}
break;


}
?>
</table>
<?php



mysql_close();


?>
Messages postés
2
Date d'inscription
vendredi 27 mars 2009
Statut
Membre
Dernière intervention
28 mars 2009

bon j'ai à peu près réussi à régler tous mes problèmes sauf un.... je n'arrive pas à additionner toutes les notes attribués aux mêmes titres.
j'ai essayé comme ça mais ça foire un max

mysql_connect("localhost", "root", "");
mysql_select_db("");
$reponse2 = mysql_query("SELECT * FROM anime WHERE titre='$donnees['titre']'");
$retour = mysql_query("SELECT COUNT(*) AS nbre_entrees FROM anime WHERE titre='$donnees['titre']'");
$donnees3 = mysql_fetch_array($retour);
$result = while($donnees2 = mysql_fetch_array($reponse2) )
{
$donnees2['note'] +
}
/ $donnees3['nbre_entrees'];

echo $result; ?> / 10

le truc c'est que je ne vois vraiment pas comment faire là......
Messages postés
2
Date d'inscription
vendredi 27 mars 2009
Statut
Membre
Dernière intervention
28 mars 2009

Bon j'aurai fini par trouver..... je poste mon code si ça peut servir à quelqu'un un jour, on sait jamais un petit débutant comme moi.....

$imp = $donnees['titre'];

$reponse2 = mysql_query("SELECT * FROM anime WHERE titre='$imp'");
$retour = mysql_query("SELECT COUNT(*) AS nbre_entrees FROM anime WHERE titre='$imp'");
$donnees3 = mysql_fetch_array($retour);
//on compte les entrées qui ont le même titre dans la base de donnée
$retour2 = mysql_query("SELECT SUM(note) AS somme FROM anime WHERE titre='$imp'");
$donnees2 = mysql_fetch_array($retour2);
//on fait la sommes des notes des entrées qui ont le même titre

$result = $donnees2['somme'] / $donnees3['nbre_entrees'];

echo $result; ?> / 10
mysql_close();



en fait... rien de plus simple, il y a juste beaucoup trop de variables et de requêtes SQL pour un noob comme moi XD