[php] Aide pour implanter un sondage!

Aide pour implanter un sondage! [php] - PHP - Programmation

Marsh Posté le 08-11-2006 à 21:17:42    

Hello! :hello:
 
Un petit coup de pouce svp! Je suis débutant en php, j'essaie de créer un petit sondage tout simple.
 
Je résume ma situation, dites moi ou ça va pas!
 
Je fais un sondage en php, sans base de donnée, les résultats s'enregistrent dans un fichier txt.
 
J'écris les fonctions php dans un fichier sondage.php, j'ai donc <?php include("sondage.php" ); ?> dans mon index.php.
 
J'appelle le sondage par <?php afficherSondage(); ?>.
 
Pour le formulaire... je ne sais trop ou le mettre alors je l'ai mis dans sondage.php

Code :
  1. <form name="formulaire" method="get" action="<?=$_SERVER['PHP_SELF'];?>">
  2. <b>Que fumez vous?</b><br>
  3. <input type="radio" name="choix" value="0" onClick="document.formulaire.submit();">Des cigarettes<br>
  4. <input type="radio" name="choix" value="1" onClick="document.formulaire.submit();">Des roulées<br>
  5. <input type="radio" name="choix" value="2" onClick="document.formulaire.submit();">Je suis non fumeur<br>
  6. <input type="hidden" name="vote-fait" value="ok">
  7. </form>


 
Viennent ensuite les fonctions:
 
J'ai donc besoin de:
function afficherResultats()
function ajouterVote($choix) // vote++
function afficherSondage()
et enfin
function creerSondage()
 
Je m'arrête là pour l'instant, j'avance a taton parce que je sais pas du tout ou je vais!
 
Des commentaires ou conseils là dessus?
Merci :)

Reply

Marsh Posté le 08-11-2006 à 21:17:42   

Reply

Marsh Posté le 08-11-2006 à 21:20:01    

Met un bouton submit pour ceux qu'on pas Javascript. Associe les intitulés de champs avec leur bouton radio via un label. N'utilise pas la méthode get (y'a effet de bord), POST ici plutôt. Et n'affiche jamais comme ça PHP_SELF sans escaping, on peut facilement injecter du script pour piquer les cookies associés au domaine.
 
Ca ferait une meilleure base [:dawa]

Reply

Marsh Posté le 08-11-2006 à 22:08:33    

J'ai modifié le formulaire, je pense qu'il est OK, par contre le label dont tu parles se définie ou?
 

Citation :

<form name="formulaire" method="post" action="sondage.php">
 <b>Que fumez vous?</b><br>
 <input type="radio" name="choix" value="0">Des cigarettes<br>
 <input type="radio" name="choix" value="1">Des roulées<br>
 <input type="radio" name="choix" value="2">Je suis non fumeur<br>
 <input type="submit" value="OK">  
</form>

Reply

Marsh Posté le 08-11-2006 à 22:14:45    

Faut mettre un id sur les radio, et associer un label. Et faut mettre un div, on peut pas mettre des champs comme ça dans un form à l'arrache. Et un fieldset pour le titre [:dawak] Et l'attribut name de form existe plus
 

Code :
  1. <form id="formulaire" method="post" action="sondage.php">
  2.   <fieldset>
  3.     <legend>Que fumez vous?</legend>
  4.     <input type="radio" name="choix" id="choix0" value="0"> <label for="choix0">Des cigarettes</label><br>
  5.     <input type="radio" name="choix" id="choix1" value="1"> <label for="choix1">Des roulées</label><br>
  6.     <input type="radio" name="choix" id="choix2" value="2"> <label for="choix2">Je suis non fumeur</label><br>
  7.     <input type="submit" value="OK"> 
  8.   </fieldset>
  9. </form>


Là on est bon.
 
Sinon donc dans sondage.php, faut vérifier que le formulaire a été envoyé (test si la méthode HTTP est POST). Si c'est le cas, faut vérifier qu'une valeur a été transmise et est bien 0, 1 ou 2. Si c'est le cas, faut ouvrir le fichier et y mettre la valeur... Ca c'est pour le principe général

Reply

Marsh Posté le 08-11-2006 à 22:28:26    

Oki merci, c'est vrai que le fieldset change tout ^^
Je bosse sur le reste pour l'instant, je reviendrai probablement ici! Sinon tant mieux!

Reply

Marsh Posté le 08-11-2006 à 22:29:01    

Ok ! Ben essaye de faire un peu la partie PHP, et hésite pas si t'as des questions

Reply

Marsh Posté le 09-11-2006 à 15:06:19    

Voilà, ça a avancé!
 
En s'inspirant de C, et sans fonctions, a la barbare, mais c'est pour commencer!
 
Voilà sondage.php, les enregistrements sont fait dans sondage.txt
 

Code :
  1. <?php
  2.     $choix = $_POST['choix'];
  3. echo "choix : ";
  4. echo $choix;
  5. $fr = fopen("sondage.txt","r" );
  6. $c1=fgets($fr,10);
  7. $c2=fgets($fr,10);
  8. $c3=fgets($fr,10);
  9. fclose($fr);
  10. $fw = fopen("sondage.txt","r+" );
  11. if ($choix==0)
  12. {
  13. $c1=$c1+1;
  14. fputs($fw,$c1);
  15. echo $c1;
  16. echo "choix numero 0";
  17. }
  18. if ($choix==1)
  19. {
  20. $c2=$c2+1;
  21. $int= fgets($fw,$c2);
  22. fputs($fw,$c2);
  23. echo $c2;
  24. echo "choix numero 1";
  25. }
  26. if ($choix==2)
  27. {
  28. $c3=$c3+1;
  29. $int= fgets($fw,10);
  30. $int= fgets($fw,10);
  31. fputs($fw,$c3);
  32. $c3++;
  33. echo $c3;
  34. echo "choix numero 2";
  35. }
  36. fclose($fw);
  37. /////////////////////////////////////////////////////////////////////////
  38. echo "<br><br>resultat : ";
  39. echo "<br>cigarettes : "; echo $c1;
  40. echo "<br>roulees : "; echo $c2;
  41. echo "<br>non fumeur : "; echo $c3;
  42. echo "<br>total des votes : "; echo $c1+$c2+$c3;
  43. ?>


 
Vous allez me dire qu'on peut voter indéfiniment sans doute et je vous l'accorde mais il faut bien commencer par qq chose!
Qu'en pensez vous?


Message édité par Fused le 09-11-2006 à 15:07:20
Reply

Marsh Posté le 09-11-2006 à 16:45:13    

C'est un bon début [:dawa] Y'a bien sûr matière à optimiser le code (plus pour la lisibilité que la rapidité), mais c'est bien pour un premier essai

Reply

Marsh Posté le 13-11-2006 à 19:36:24    

J'ai bien avancé, ça commence à devenir propre!
Juste un truc, comment faire pour que le résultat du sondage s'affiche au même endroit sur mon document index.php et nom sur une nouvelle page?
 
J'ai un fichier sondage.php (formulaire), avec un include dans index.php qui qu'il y apparaisse.
Et le fichier sondage.php se connecte a sondage.inc.php pour traiter le résultat mais ce fichier n'a pas d'importance pour ça je pense.
 
Merci!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed