J'ai une page qui affiche un sondage (question et réponses) avec le nombre de pourcentage par réponse.
J'aimerais ordonné les réponses en fonction des pourcentages, du plus grand au plus petit.. mais je ne sais pas comment faire...
voici une partie de mon code :
<?
$sql = "SELECT * FROM question where id_sondage ='$id_sondage' ORDER BY position ASC";
$req = mysql_query($sql);
$total = mysql_num_rows($req);
if ($total == 0)
{
echo'<u><p><h1>Il n\'y a aucune question</p></u></h1>';
}
else if ($total > 0)
{
$i=1; //on met la variable a 1
while($valeur = mysql_fetch_array($req))
{
//Récupére les données des qestions
$titre_question = $valeur['titre_question'];
$id_question = $valeur['id_question'];
$methode = $valeur['methode'];
echo '<p> </p>';
//Affiche le numéro et le titre de la question
echo'<table border="0" width=95%><tr><td></td></tr><tr><tr><td></td></tr><td align = "left"><h1>'.$i.') '.$titre_question.'</h1></td><tr><td></td></tr><tr><tr><td></td></tr></table>';
//Requête pour récupérer les données des réponses
$requete2 = "SELECT * FROM reponse WHERE id_sondage = '$id_sondage' AND id_question = '$id_question' ORDER BY position ";
$resultat2 = mysql_query($requete2) or die ('Erreur SQL : impossible d\'effectuer la requête : <br />'.$requete2);
$total = mysql_num_rows($resultat2);
if ($total == 0)
{
echo'<u><h1>Il n\'y a aucune réponse</u></h1>';
}
else if ($total > 0)
{
while($val= mysql_fetch_array($resultat2))
{
$id_reponse = $val['id_reponse'];
$intitule = $val['intitule'];
?>
<html>
<body>
<div align ="center">
<TABLE border="0">
<?
//Suivant la méthode
switch ($methode)
{
//Liste déroulante
case 'deroulante':
//Récupére le nombre de réponse total
$req1 = "SELECT count(id_reponse) FROM vote WHERE id_sondage = '$id_sondage' AND id_question = '$id_question' ";
$resultat1 = mysql_query($req1);
while($val1= mysql_fetch_array($resultat1))
{
$nb_rep = $val1['count(id_reponse)'];
}
if ($nb_rep > 0)
{
$req4 = "SELECT * FROM vote WHERE id_sondage = '$id_sondage' AND id_question = '$id_question' AND id_reponse = '$id_reponse' ";
$resultat4 = mysql_query($req4);
$nb_vote = mysql_num_rows($resultat4);
$pourcent = cacul_pourcentage($nb_vote,$nb_rep);
echo'<table border="0" width="88%"><tr>';
echo'<td width="7%">'.$intitule.' : ';
echo'</td><td width="7%"><img src="image.php?p='.$pourcent.' align="left" >';
echo'</td><td width="2%">'.$pourcent.' %';
echo'</td></tr></table>';
}
break;
//Bouton radio
case 'radio':
//Récupére le nombre de réponse total
$req1 = "SELECT count(id_reponse) FROM vote WHERE id_sondage = '$id_sondage' AND id_question = '$id_question'";
$resultat1 = mysql_query($req1);
while($val1= mysql_fetch_array($resultat1))
{
$nb_rep = $val1['count(id_reponse)'];
}
if ($nb_rep > 0)
{
$req4 = "SELECT * FROM vote WHERE id_sondage = '$id_sondage' AND id_question = '$id_question' AND id_reponse = '$id_reponse' ";
$resultat4 = mysql_query($req4);
$nb_vote = mysql_num_rows($resultat4);
$pourcent = cacul_pourcentage($nb_vote,$nb_rep);
echo'<table border="0" width="88%"><tr>';
echo'<td width="7%">'.$intitule.' : ';
echo'</td><td width="7%"><img src="image.php?p='.$pourcent.' align="left" >';
echo'</td><td width="2%">'.$pourcent.' %';
echo'</td></tr></table>';
}
break;
case 'checkbox':
//Récupére le nombre de réponse total
$req1 = "SELECT count(id_reponse) FROM vote WHERE id_sondage = '$id_sondage' AND id_question = '$id_question' ORDER BY id_vote";
$resultat1 = mysql_query($req1);
while($val1= mysql_fetch_array($resultat1))
{
$nb_rep = $val1['count(id_reponse)'];
}
if ($nb_rep > 0)
{
$req4 = "SELECT * FROM vote WHERE id_sondage = '$id_sondage' AND id_question = '$id_question' AND id_reponse = '$id_reponse' ORDER BY id_vote"; $resultat4 = mysql_query($req4);
$nb_vote = mysql_num_rows($resultat4);
$pourcent = cacul_pourcentage($nb_vote,$nb_rep);
echo'<table border="0" width="88%"><tr>';
echo'<td width="7%">'.$intitule.' : ';
echo'</td><td width="7%"><img src="image.php?p='.$pourcent.' align="left" >';
echo'</td><td width="2%">'.$pourcent.' %';
echo'</td></tr></table>';
}
break;
}//fin switch
}//fin while
//s'il n'y a aucune réponse, on affiche un message
if ($nb_rep == 0)
{
echo'<table border="0" width=30%><td align="left"><u><ul> Il n\'y aucune réponse </td></ul></u></table>';
}
} //fin du if
$i++; // incrément le i avant la fin de la boucle
} //fin du while
}//fin else if (dc pour afficher)
?<
calcu_pourcentage est une fonction qui calcul le pourcentage.Je pense que je doit modifier cette ligne :
<?
$requete2 = "SELECT * FROM reponse WHERE id_sondage = '$id_sondage' AND id_question = '$id_question' ORDER BY position ";
?>
Peut etre mettre ORDER BY '.$pourcent.'"; mais ça ne marche pas car le pourcentage je le calcul aprés.J'espére que vous pourrez m'aider!