Amélioration d'un sondage
amazigh_antalas
Messages postés
87
Statut
Membre
-
amazigh_antalas Messages postés 87 Statut Membre -
amazigh_antalas Messages postés 87 Statut Membre -
Bonjour,
J'ai fait un sondage avec php qui est loin d'être parfait on va dire.
Je m'explique il fait bien le compte des votes ,mais quand on valide il me donne pas le résultat des vote par exemple.
Autre chose la possibilité de choisir une réponse ou plusieurs parmi les réponses donnée et géré de façon assez débutante (voir ça sur le code ci dessous).
et pour finir ,mon code ne permet de gérer les gens qui peuvent voter deux ou plusieurs fois.
========================================================================
<script language="javascript">
function force_1_seul(nb_reponses){
var nombre_checked = 0;
var i=0;
var garder=true;
if (nb_reponses>0) if (document.form1.choix1.checked) nombre_checked++;
if (nb_reponses>1) if (document.form1.choix2.checked) nombre_checked++;
if (nb_reponses>2) if (document.form1.choix3.checked) nombre_checked++;
if (nb_reponses>3) if (document.form1.choix4.checked) nombre_checked++;
if (nb_reponses>4) if (document.form1.choix5.checked) nombre_checked++;
if (nb_reponses>5) if (document.form1.choix6.checked) nombre_checked++;
if (nb_reponses>6) if (document.form1.choix7.checked) nombre_checked++;
if (nb_reponses>7) if (document.form1.choix8.checked) nombre_checked++;
if (nb_reponses>8) if (document.form1.choix9.checked) nombre_checked++;
if (nb_reponses>9) if (document.form1.choix10.checked) nombre_checked++;
if (nombre_checked>1){
window.alert('Un seul choix possible!');
if (nb_reponses>0&&document.form1.choix1.checked) {if (!garder)document.form1.choix1.checked=false; garder=false;}
if (nb_reponses>1&&document.form1.choix2.checked) {if (!garder)document.form1.choix2.checked=false ;garder=false;}
if (nb_reponses>2&&document.form1.choix3.checked) {if (!garder)document.form1.choix3.checked=false ;garder=false;}
if (nb_reponses>3&&document.form1.choix4.checked) {if (!garder)document.form1.choix4.checked=false ;garder=false;}
if (nb_reponses>4&&document.form1.choix5.checked) {if (!garder)document.form1.choix5.checked=false ;garder=false;}
if (nb_reponses>5&&document.form1.choix6.checked) {if (!garder)document.form1.choix6.checked=false ;garder=false;}
if (nb_reponses>6&&document.form1.choix7.checked) {if (!garder)document.form1.choix7.checked=false ;garder=false;}
if (nb_reponses>7&&document.form1.choix8.checked) {if (!garder)document.form1.choix8.checked=false ;garder=false;}
if (nb_reponses>8&&document.form1.choix9.checked) {if (!garder)document.form1.choix9.checked=false ;garder=false;}
if (nb_reponses>9&&document.form1.choix10.checked) {if (!garder)document.form1.choix10.checked=false ;garder=false;}
}
}
</script>
<?PHP
header('Content-type: text/html; charset=UTF-8');
$db = mysql_connect('localhost', 'root', 'mysql');
if ( ! $db )
die ("connection à la base de données ebc medical impossible");
$mabasededonnee="mabase";
mysql_select_db($mabasededonnee) or die ("base introuvable");
$date_du_jour = date("Y-m-d");
//print ("$date_du_jour");
$sql = "SELECT id,date,multi,nombrep,date_fin,question,reponses,votes FROM sondage WHERE '".$date_du_jour."' BETWEEN date AND date_fin";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$data = mysql_fetch_assoc($req); //on prend le premier sondage qui verifie la condition de date
echo utf8_encode( '<b>'.$data['question'].'</b>');
$reponses=$data['reponses'];
$idsondage=$data['id'];
echo '<form id="form1" name="form1" method="post" action="traitement_vote.php">';// ici
$reponses=trim($reponses);
$reponses=$reponses."|";
$i=0;
$nbrep=0;
$reponsecourante="";
echo '<input type="hidden" name="id_sondage" id="textfield" value='.$idsondage.' />';
while($i<strlen($reponses)){
if ($reponses[$i]=='|'){
$nbrep++;
echo utf8_encode ( '<br><input type="checkbox" ');
if ($data['multi']==0) echo utf8_encode ('onClick="javascript : force_1_seul('.$data['nombrep'].')" ');
echo utf8_encode ('name="choix'.$nbrep.'" value="0"> '.$reponsecourante.'</label>');
$reponsecourante="";
}
else{
$reponsecourante=$reponsecourante.$reponses[$i];
}
$i++;
}
echo'<br>';
echo'<table width="69" border="0" cellspacing="0">';
echo'<tr>';
echo'<td width="67" background="icones et images/boutonorange_off.jpg"><div align="center">';
echo'<input type="submit" name="btn_vote" id="button" value="VALIDER" />';
echo'</div></td>';
echo'</tr>';
echo'</table>';
echo'<br>';
echo'<br>';
echo '<input type="hidden" name="nombrep" id="textfield" value='.$nbrep.' />';
echo '</form>';
$j=0;
$votes=$data['votes'];
if ($data['votes']==''){
while ($j<$nbrep){
$votes=$votes.'0000-';
$j++;
}
}
$sql = "UPDATE sondage SET votes= '".$votes."' WHERE id= '".$idsondage."'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
mysql_close();
?>
=======================================================================
Donc mon bute serait d'améliorer ce code.
Pour :-Qu'il me donne les résultats graphiquement quand je clic sur "VALIDER" comme sur ce site:https://www.jeuxvideo.com/
-Trouver une façon plus adapter pour faire le choix de une ou plusieurs réponse en n'utilisant pas les boutons radio.
-et pour finir un moyen d'empêcher un même user de voter plus d'une fois sur un même sondage.
Voilà ,j'espère compter sur votre aide ,car je suis débutant et je ne crois pas arriver à le faire.
Merci
J'ai fait un sondage avec php qui est loin d'être parfait on va dire.
Je m'explique il fait bien le compte des votes ,mais quand on valide il me donne pas le résultat des vote par exemple.
Autre chose la possibilité de choisir une réponse ou plusieurs parmi les réponses donnée et géré de façon assez débutante (voir ça sur le code ci dessous).
et pour finir ,mon code ne permet de gérer les gens qui peuvent voter deux ou plusieurs fois.
========================================================================
<script language="javascript">
function force_1_seul(nb_reponses){
var nombre_checked = 0;
var i=0;
var garder=true;
if (nb_reponses>0) if (document.form1.choix1.checked) nombre_checked++;
if (nb_reponses>1) if (document.form1.choix2.checked) nombre_checked++;
if (nb_reponses>2) if (document.form1.choix3.checked) nombre_checked++;
if (nb_reponses>3) if (document.form1.choix4.checked) nombre_checked++;
if (nb_reponses>4) if (document.form1.choix5.checked) nombre_checked++;
if (nb_reponses>5) if (document.form1.choix6.checked) nombre_checked++;
if (nb_reponses>6) if (document.form1.choix7.checked) nombre_checked++;
if (nb_reponses>7) if (document.form1.choix8.checked) nombre_checked++;
if (nb_reponses>8) if (document.form1.choix9.checked) nombre_checked++;
if (nb_reponses>9) if (document.form1.choix10.checked) nombre_checked++;
if (nombre_checked>1){
window.alert('Un seul choix possible!');
if (nb_reponses>0&&document.form1.choix1.checked) {if (!garder)document.form1.choix1.checked=false; garder=false;}
if (nb_reponses>1&&document.form1.choix2.checked) {if (!garder)document.form1.choix2.checked=false ;garder=false;}
if (nb_reponses>2&&document.form1.choix3.checked) {if (!garder)document.form1.choix3.checked=false ;garder=false;}
if (nb_reponses>3&&document.form1.choix4.checked) {if (!garder)document.form1.choix4.checked=false ;garder=false;}
if (nb_reponses>4&&document.form1.choix5.checked) {if (!garder)document.form1.choix5.checked=false ;garder=false;}
if (nb_reponses>5&&document.form1.choix6.checked) {if (!garder)document.form1.choix6.checked=false ;garder=false;}
if (nb_reponses>6&&document.form1.choix7.checked) {if (!garder)document.form1.choix7.checked=false ;garder=false;}
if (nb_reponses>7&&document.form1.choix8.checked) {if (!garder)document.form1.choix8.checked=false ;garder=false;}
if (nb_reponses>8&&document.form1.choix9.checked) {if (!garder)document.form1.choix9.checked=false ;garder=false;}
if (nb_reponses>9&&document.form1.choix10.checked) {if (!garder)document.form1.choix10.checked=false ;garder=false;}
}
}
</script>
<?PHP
header('Content-type: text/html; charset=UTF-8');
$db = mysql_connect('localhost', 'root', 'mysql');
if ( ! $db )
die ("connection à la base de données ebc medical impossible");
$mabasededonnee="mabase";
mysql_select_db($mabasededonnee) or die ("base introuvable");
$date_du_jour = date("Y-m-d");
//print ("$date_du_jour");
$sql = "SELECT id,date,multi,nombrep,date_fin,question,reponses,votes FROM sondage WHERE '".$date_du_jour."' BETWEEN date AND date_fin";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$data = mysql_fetch_assoc($req); //on prend le premier sondage qui verifie la condition de date
echo utf8_encode( '<b>'.$data['question'].'</b>');
$reponses=$data['reponses'];
$idsondage=$data['id'];
echo '<form id="form1" name="form1" method="post" action="traitement_vote.php">';// ici
$reponses=trim($reponses);
$reponses=$reponses."|";
$i=0;
$nbrep=0;
$reponsecourante="";
echo '<input type="hidden" name="id_sondage" id="textfield" value='.$idsondage.' />';
while($i<strlen($reponses)){
if ($reponses[$i]=='|'){
$nbrep++;
echo utf8_encode ( '<br><input type="checkbox" ');
if ($data['multi']==0) echo utf8_encode ('onClick="javascript : force_1_seul('.$data['nombrep'].')" ');
echo utf8_encode ('name="choix'.$nbrep.'" value="0"> '.$reponsecourante.'</label>');
$reponsecourante="";
}
else{
$reponsecourante=$reponsecourante.$reponses[$i];
}
$i++;
}
echo'<br>';
echo'<table width="69" border="0" cellspacing="0">';
echo'<tr>';
echo'<td width="67" background="icones et images/boutonorange_off.jpg"><div align="center">';
echo'<input type="submit" name="btn_vote" id="button" value="VALIDER" />';
echo'</div></td>';
echo'</tr>';
echo'</table>';
echo'<br>';
echo'<br>';
echo '<input type="hidden" name="nombrep" id="textfield" value='.$nbrep.' />';
echo '</form>';
$j=0;
$votes=$data['votes'];
if ($data['votes']==''){
while ($j<$nbrep){
$votes=$votes.'0000-';
$j++;
}
}
$sql = "UPDATE sondage SET votes= '".$votes."' WHERE id= '".$idsondage."'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
mysql_close();
?>
=======================================================================
Donc mon bute serait d'améliorer ce code.
Pour :-Qu'il me donne les résultats graphiquement quand je clic sur "VALIDER" comme sur ce site:https://www.jeuxvideo.com/
-Trouver une façon plus adapter pour faire le choix de une ou plusieurs réponse en n'utilisant pas les boutons radio.
-et pour finir un moyen d'empêcher un même user de voter plus d'une fois sur un même sondage.
Voilà ,j'espère compter sur votre aide ,car je suis débutant et je ne crois pas arriver à le faire.
Merci
A voir également:
- Amélioration d'un sondage
- Creer un sondage - Guide
- Framadate sondage - Guide
- Comment épingler un sondage sur whatsapp - Accueil - Messagerie instantanée
- Sondage messenger ✓ - Forum Facebook
- Sondage remunerés vendredi noir - Forum Réseaux sociaux
6 réponses
Hello,
Je n'ai pas vraiment le courage de te refaire un formulaire, mais je peux toujours te donner quelques pistes pour t'aider :)
Si tu veux la possibilité de ne faire qu'un choix parmi plusieurs, tu peux, soit faire une liste (un SELECT avec des OPTION), soit utiliser le type Radio.
Par exemple, si tu dois choisir entre un homme et une femme, tu fera :
Homme : <INPUT type=radio name="sexe" value="M">
Femme : <INPUT type=radio name="sexe" value="F">
Un "name" identique indiquera que l'utilisateur ne pourras choisir que l'un des 2.
Pour le dernier point, a savoir l'impossibilité de voter 2 fois, tu as 2 choix qui s'offrent a toi.
Soit tu peux créer une variable de session indiquant si l'utilisateur a deja voté (simple, mais facile a contourner), soit tu créer une base de données contenant les adresses IP de tous les votants, et tu verifie au chargement de la page si l'adresse IP de l'utilisateur est dans la BDD
Pour les resultats graphiques, et bien... Et bien je ne vois pas, mais essaye deja de resoudre ces 2 points :p
Je n'ai pas vraiment le courage de te refaire un formulaire, mais je peux toujours te donner quelques pistes pour t'aider :)
Si tu veux la possibilité de ne faire qu'un choix parmi plusieurs, tu peux, soit faire une liste (un SELECT avec des OPTION), soit utiliser le type Radio.
Par exemple, si tu dois choisir entre un homme et une femme, tu fera :
Homme : <INPUT type=radio name="sexe" value="M">
Femme : <INPUT type=radio name="sexe" value="F">
Un "name" identique indiquera que l'utilisateur ne pourras choisir que l'un des 2.
Pour le dernier point, a savoir l'impossibilité de voter 2 fois, tu as 2 choix qui s'offrent a toi.
Soit tu peux créer une variable de session indiquant si l'utilisateur a deja voté (simple, mais facile a contourner), soit tu créer une base de données contenant les adresses IP de tous les votants, et tu verifie au chargement de la page si l'adresse IP de l'utilisateur est dans la BDD
Pour les resultats graphiques, et bien... Et bien je ne vois pas, mais essaye deja de resoudre ces 2 points :p
Merci de m'avoir répondu si rapidement.
Pour l'utilisation des bouton radio c'est exclut .
La solution deux sur les adresse IP ,je ne sais pas car d'après ce que je sais ,les adresse IP changent à chaque fois je crois pour les ordinateurs maintenant ,non ?
Dommage que tu ne puisse pas y jeter un coup d'œil car pour être sincère je doute que j'y arrive seul.
Merci encore et bonne journée.
Pour l'utilisation des bouton radio c'est exclut .
La solution deux sur les adresse IP ,je ne sais pas car d'après ce que je sais ,les adresse IP changent à chaque fois je crois pour les ordinateurs maintenant ,non ?
Dommage que tu ne puisse pas y jeter un coup d'œil car pour être sincère je doute que j'y arrive seul.
Merci encore et bonne journée.
Le changement des adresses IP depend de beaucoup de choses, mais je pense qu'a l'heure actuelle, beaucoup de gens ont encore une IP statique (qui ne change que tres rarement, donc). Il n'y a pas vraiment d'autres moyen, ou peut-être avec l'utilisation d'un Cookies ? (mais dans ce cas, un simple vidage des Cookies permettrait de voter a l'infini).
Je vais tacher de voir ton code, peut-être pas maintenant, mais ce soir, je pense :)
Au fait, pourquoi ne pas pouvoir mettre des boutons radio ?
Quoique un SELECT peut-être tout aussi pratique.
Je vais tacher de voir ton code, peut-être pas maintenant, mais ce soir, je pense :)
Au fait, pourquoi ne pas pouvoir mettre des boutons radio ?
Quoique un SELECT peut-être tout aussi pratique.
Merci beaucoup ,franchement ,si tu arrive à faire quelque chose dessus ,tu me rendrais un immense service.
Les coookies seraient une solution c vrai et la possibilité avec le numéro des disque dure ? c'est aussi faisable ?
Bon je te dérange pas plus .
J'attends ta réponse .
Les coookies seraient une solution c vrai et la possibilité avec le numéro des disque dure ? c'est aussi faisable ?
Bon je te dérange pas plus .
J'attends ta réponse .
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Avec les numeros de disque dur, j'avoue que je n'en sais rien, a vrai dire, je ne savais pas ca possible, donc aucune idée ;)
Par contre, si ca ne te derange pas trop, est-ce que tu pourrais commenter un peu plus ton code (car c'est assez flou, pour le moment ^^), et me l'envoyer par MP, ou même le poster ici ?
Ca m'aidera surement un peu, merci :)
Par contre, si ca ne te derange pas trop, est-ce que tu pourrais commenter un peu plus ton code (car c'est assez flou, pour le moment ^^), et me l'envoyer par MP, ou même le poster ici ?
Ca m'aidera surement un peu, merci :)