Voici donc mon code :
<?php
// on prépare une requête pour sélectionner l'id et la question du dernier sondage
//(on sélectionne les questions, et on en prend qu'une (le LIMIT 0,1) et ce, dans un ordre décroissent (DESC), soit en fait, la dernière question posée).
$sql = 'SELECT id, question FROM sondage_questions ORDER BY id DESC';
// on lance la requête
$req = mysql_query ($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
// on récupère le résultat dans un tableau associatif
$data = mysql_fetch_array ($req);
$nb_sondage = mysql_num_rows($req);
if ($nb_sondage == 0)
{
echo 'Aucun sondage.';
}
else
{
while ($data)
{
// on libère l'espace mémoire alloué à cette requête
mysql_free_result ($req);
// on affiche la question
echo stripslashes(htmlentities(trim($data['question']))),'<br />';
// on prepare l'affichage de notre formulaire permettant de voter
echo '<form action = "sondage.php" method = "post">';
// on prépare une requête permettant de sélectionner les réponses possibles se rapportant à ce même sondage
$sql = 'SELECT id, reponse FROM sondage_reponses WHERE id_sondage="'.$data['id'].'"';
// on lance la requête
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
// on prépare notre boucle pour afficher les différents choix possibles de réponses
while ($donnees = mysql_fetch_array($req))
{
// on affiche des boutons radio pour les différents choix de réponses possibles
echo '<input type="radio" name="choix" value="' , $donnees['id'] , '"> ' , stripslashes(htmlentities(trim($donnees['reponse']))) , '<br />';
}
}
?>
<input type = "hidden" name = "sondage_en_cours" value = "<?php echo $data['id']; ?>">
<input type = "submit" name="go" value = "Vote">
</form>
<?php
}
// on libère l'espace mémoire alloué à cette requête
mysql_free_result ($req);
// on ferme la connection à notre base de données
mysql_close ();
?>
J'ai donc bien la même boucle que celle que tu m'as montré. Mais là, ça m'affiche mon premier sondage en boucle. J'ai donc pensé que c'était parce que dans la boucle que j'ai là, on utilise la même variable pour des requêtes différentes. J'ai alors rajouté un 2, et retiré la libération de la requête de la boucle, comme cela :
<?php
// on prépare une requête pour sélectionner l'id et la question du dernier sondage
//(on sélectionne les questions, et on en prend qu'une (le LIMIT 0,1) et ce, dans un ordre décroissent (DESC), soit en fait, la dernière question posée).
$sql = 'SELECT id, question FROM sondage_questions ORDER BY id DESC';
// on lance la requête
$req = mysql_query ($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
// on récupère le résultat dans un tableau associatif
$data = mysql_fetch_array ($req);
$nb_sondage = mysql_num_rows($req);
if ($nb_sondage == 0)
{
echo 'Aucun sondage.';
}
else
{
while ($data)
{
// on affiche la question
echo stripslashes(htmlentities(trim($data['question']))),'<br />';
// on prepare l'affichage de notre formulaire permettant de voter
echo '<form action = "sondage.php" method = "post">';
// on prépare une requête permettant de sélectionner les réponses possibles se rapportant à ce même sondage
$sql2 = 'SELECT id, reponse FROM sondage_reponses WHERE id_sondage="'.$data['id'].'"';
// on lance la requête
$req2 = mysql_query($sql2) or die('Erreur SQL !<br />'.$sql2.'<br />'.mysql_error());
// on prépare notre boucle pour afficher les différents choix possibles de réponses
while ($donnees = mysql_fetch_array($req2))
{
// on affiche des boutons radio pour les différents choix de réponses possibles
echo '<input type="radio" name="choix" value="' , $donnees['id'] , '"> ' , stripslashes(htmlentities(trim($donnees['reponse']))) , '<br />';
}
}
?>
<input type = "hidden" name = "sondage_en_cours" value = "<?php echo $data['id']; ?>">
<input type = "submit" name="go" value = "Vote">
</form>
<?php
}
// on libère l'espace mémoire alloué à cette requête
mysql_free_result ($req);
// on ferme la connection à notre base de données
mysql_close ();
?>
Mais ça ne change rien.
Je pense donc qu'il doit y avoir quelque chose que j'ai mal compris
[edit :]
Je viens d'essayer encore autre chose :
<?php
// on prépare une requête pour sélectionner l'id et la question du dernier sondage
//(on sélectionne les questions, et on en prend qu'une (le LIMIT 0,1) et ce, dans un ordre décroissent (DESC), soit en fait, la dernière question posée).
$sql = 'SELECT id, question FROM sondage_questions ORDER BY id DESC';
// on lance la requête
$req = mysql_query ($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
// on récupère le résultat dans un tableau associatif
//$data = mysql_fetch_array ($req);
$nb_sondage = mysql_num_rows($req);
if ($nb_sondage == 0)
{
echo 'Aucun sondage.';
}
else
{
while ($data=mysql_fetch_array ($req))
{
// on affiche la question
echo stripslashes(htmlentities(trim($data['question']))),'<br />';
// on prepare l'affichage de notre formulaire permettant de voter
echo '<form action = "sondage.php" method = "post">';
// on prépare une requête permettant de sélectionner les réponses possibles se rapportant à ce même sondage
$sql2 = 'SELECT id, reponse FROM sondage_reponses WHERE id_sondage="'.$data['id'].'"';
// on lance la requête
$req2 = mysql_query($sql2) or die('Erreur SQL !<br />'.$sql2.'<br />'.mysql_error());
// on prépare notre boucle pour afficher les différents choix possibles de réponses
while ($donnees = mysql_fetch_array($req2))
{
// on affiche des boutons radio pour les différents choix de réponses possibles
echo '<input type="radio" name="choix" value="' , $donnees['id'] , '"> ' , stripslashes(htmlentities(trim($donnees['reponse']))) , '<br />';
}
?>
<input type = "hidden" name = "sondage_en_cours" value = "<?php echo $data['id']; ?>">
<input type = "submit" name="go" value = "Vote">
</form>
<?php
}
}
// on libère l'espace mémoire alloué à cette requête
mysql_free_result ($req);
// on ferme la connection à notre base de données
mysql_close ();
?>
Mais avec ce code, ça ne m'affiche que le premier sondage, pas en boucle cette fois. Je ne comprends d'ailleurs pas pourquoi mes deux précédents codes c'était en boucle, et pas celui-ci...
Modifié par tatsu (03 Mar 2009 - 09:24)