Probleme au niveau d'un sondage

XjeanjanX - 15 août 2012 à 14:33
 XjeanjanX - 13 sept. 2012 à 18:28
Bonjour à tous !

je viens de m'inscrire sur ce site que j'ai découvert, il y a deux - trois jours.

j'avais une question a vous poser suite a un problème que je rencontre pour faire un sondage.

j'ai trouvé sur internet un sondage tout pres, mais je n'aime pas le tout cuit, donc je veux l'améliorer, j'ai notamment fait des barres qui evoluent en fonction du pourcentage.

mon probleme est que je ne peux pas poser plusieurs questions, ca reste bloqué à la derniere, malgré mon while... je ne comprends donc plus !

voici le code ou on voit la question :
<?php
// on teste si formulaire de vote a été validé
if (isset($_POST['go']) && $_POST['go']=='Vote') {
if (!isset($_POST['choix']) || !isset($_POST['sondage_en_cours'])) {
$erreur = 'Aucune réponse n\'a été choisie.';
}
// on teste si le visiteur a bien choisi une réponse avant d'avoir clické sur "Vote". On teste aussi si la variable $_POST['sondage_en_cours'] n'est pas vide
 if (empty($_POST['choix']) || empty($_POST['sondage_en_cours'])) {
$erreur = 'Au moins un des champs est vide.';
}
else {
// là le visiteur à choisi une réponse
 // on se connecte à notre base
 $base = mysql_connect ('localhost','root','');
mysql_select_db ('test');

// on prépare notre requête : on ajoute un vote pour la réponse choisie par le votant
 $sql ='UPDATE sondage_reponses SET nb_reponses = nb_reponses + 1 WHERE id_sondage="'.$_POST['sondage_en_cours'].'" AND id="'.$_POST['choix'].'"';

// on lance la requête
 mysql_query ($sql) or die ('Erreur SQL !'.$sql.'
'.mysql_error());

// on ferme la connexion à la base de donnée
 mysql_close ();

$erreur = 'Merci d\'avoir voté !';
}
}
?>

<html>
<head>
<title>Index de notre sondage </title>
</head>


<?php
// on se connecte à notre base de données
$base = mysql_connect ('localhost','root','');
mysql_select_db ('test');

// 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 LIMIT 1,2');

// on lance la requête
$req = mysql_query ($sql) or die ('Erreur SQL !
'.$sql.'
'.mysql_error());

// on récupère le résultat dans un tableau associatif
while ($data = mysql_fetch_array ($req))
{

$nb_sondage = mysql_num_rows($req);

if ($nb_sondage == 0) {
echo 'Aucun sondage pour le moment.';
}
else {

// on affiche la question
echo stripslashes(htmlentities(trim($data['question']))),'
';

// on prepare l'affichage de notre formulaire permettant de voter
echo '<form action "index.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 !
'.$sql.'
'.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 ' ' , stripslashes(htmlentities(trim($donnees['reponse']))) , '
';
}
?>
">

</form>
<?php
}
}

// on ferme la connection à notre base de données
mysql_close ();
?>

<?php
// on affiche les erreurs éventuelles
if (isset($erreur)) echo '

',$erreur;
?>


[sondage_resultats.php Voir les résultats]
[admin.php Voir la partie admin ]


</html>



auriez vous une idée ? merci d'avance !

10 réponses

happy05 Messages postés 34 Date d'inscription mardi 1 mai 2012 Statut Membre Dernière intervention 7 juillet 2017
6 sept. 2012 à 17:01
Bonjour,
on voit clairement la réponse dans le commentér:
// 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 LIMIT 1,2');

LIMIT 0,1 ==> la question du dernier sondage..
LIMIT 1,2 ==> la question du l'avant dernier sondage..
pour poser 2 questions ==> LIMIT 0,2
pour poser 3 questions ==> LIMIT 0,3
et...

 $sql = ('SELECT id, question FROM sondage_questions ORDER BY id DESC LIMIT 0,2');
0
je te réponds, bien que j'ai réussi a régler mon problème !
et bien tu as raison mais qu'a moitié car autre chose bloqué l'apparition des autres sondages !

enfin, problème réglé !

merci !
0
happy05 Messages postés 34 Date d'inscription mardi 1 mai 2012 Statut Membre Dernière intervention 7 juillet 2017
6 sept. 2012 à 20:59
ok, bon chance...
0
happy05 Messages postés 34 Date d'inscription mardi 1 mai 2012 Statut Membre Dernière intervention 7 juillet 2017
6 sept. 2012 à 21:04
mais ci bien de partager la solution ici quand on la trouve
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
et bien voila ! dans un premier temps, je met un lien qui affiche le titre du sondage, et qui une fois que l'on clique, envois l'id du sondage

Les sondages :













ensuite, je clique sur le liens, ej'ai le sondage ! on me presente les resultat si j'ai voté, sinon la question !

















Avant'age
























0
happy05 Messages postés 34 Date d'inscription mardi 1 mai 2012 Statut Membre Dernière intervention 7 juillet 2017
13 sept. 2012 à 16:01
Salut,
ton code n'est pas sécurisé, tu dois faire attention au SQL injection
dans:
$verifier = "SELECT * FROM sondage_ip WHERE ip='".$ip."' AND id_sondage = '".$_GET['vote']."'";

et
$sql3 = 'SELECT id, question, description FROM sondage_questions WHERE id='.$_GET['vote'].'';
0
que dios je mettre pour le protéger ?
0
happy05 Messages postés 34 Date d'inscription mardi 1 mai 2012 Statut Membre Dernière intervention 7 juillet 2017
13 sept. 2012 à 16:26
0
happy05 Messages postés 34 Date d'inscription mardi 1 mai 2012 Statut Membre Dernière intervention 7 juillet 2017
13 sept. 2012 à 16:30
0
merci de ton aide preciseuse !
j'ai fait : $id_sondage = mysql_real_escape_string(intval($_GET['vote']));
0
Rejoignez-nous