login  Naam:   Wachtwoord: 
Registreer je!
 Scripts:

Scripts > PHP > Poll/Stem systemen > Simpele poll met cookie (log-based)

Simpele poll met cookie (log-based)

Auteur: remy - 17 januari 2005 - 20:05 - Gekeurd door: Dennisvb - Hits: 19662 - Aantal punten: 3.38 (12 stemmen)




Simpele poll zonder MySql, er zit een cookie systeem in, zodat er na stemmen een maand niet gestemd mag worden.

In het txt-bestandje worden de resultaten gescheiden met een komma (,), deze worden er als een array uitgehaald waardoor er geen vast aantal opties (en dus resultaten) hoeft te zijn.

Verdere info: zie script

Code:
poll.php
  1. <?php
  2. ob_start(); //is enkel nodig voor de doorverwijzing
  3. /* POLL
  4. SIMPEL STEMSYSTEEM ZONDER MYSQL. RESULTATEN WORDEN OPGELSAGEN IN EEN LOG-BESTANDJE, WELKE GESCHEIDEIN WORDEN DOOR EEN ,.
  5. BIJ GEBRUIK OP WEBSERVER MOET HET BESTANDJE 0777 GESCHMOD WORDEN
  6.  
  7. ER KUNNEN ZOVEEL OPTIES TOEGEVOEGD WORDEN ALS MEN WIL, DIT WORDT AUTOMATISCH OPGENOMEN IN HET SCRIPT MITS DEZE GESCHEIDEN ZIJN DOOR EEN KOMMA (,) IN POLL.TXT.*/
  8.  
  9. $file = "poll.txt"; //het bestandje
  10. $fp = fopen($file, "r"); //lees poll.txt uit
  11. $inhoud = fread($fp, filesize($file)); //uitlezen
  12. fclose($fp);
  13. $vraag = "wat vin je ervan?";
  14. $optie = array("leuk", "mooi", "gaat", "lelijk");
  15. $resultaat = explode(",", $inhoud); //$inhoud in een array zetten.
  16. $totaal = array_sum($resultaat); //totaal berekenen
  17. $j = count($resultaat); //tellen hoeveel resultaten er zijn (standaard 3)
  18.  
  19. if($_COOKIE['poll'] == 'gestemd')
  20. {
  21. echo "<b>".$vraag."</b><br><hr><br>";
  22. for($i = 0; $i < $j; $i ++) //lusje om resultaten te laten zien.
  23. {
  24. $uitslag = round(100 / $totaal * $resultaat[$i]); //formule voor procenten
  25. echo "<table width=\"100%\" border=\"0\"><tr><td width=\"100\">".$optie[$i]."</td><td width=\"20\"><!-- no contents --></td><td width=\"*\"><table border=\"0\" width=\"".$uitslag."%\" height=\"20\"><td bgcolor=\"#3399cc\"> </td></tr></table></td><td width=\"30\">".$uitslag."%</td></tr></table><br>"; //maak de opmaak met de breedte van tabel
  26. }
  27. echo "<b>je hebt al gestemd</b><br><br><b>".$totaal."</b> stemmen totaal";
  28. }
  29. else
  30. {
  31. if(isset($_POST['stemmen'])) //als er op de knop geklikt is
  32. {
  33. if($_POST['stem'] == '') //als er geen waarde is
  34. {
  35. echo "je hebt niks ingevuld, ga terug om dat alsnog te doen.";
  36. }
  37. else
  38. { // hieronder moeten de overige resultaten ook weer ingevoegd worden.
  39. for($l = 0; $l < $_POST['stem']; $l ++)
  40. {
  41. $invoegen.= $resultaat[$l].","; //komma er weer bij..
  42. }
  43. $invoegen.= $resultaat[$_POST['stem']]+1; //voeg de stem toe + 1
  44. for($l = $_POST['stem']; $l < $j-1; $l ++)
  45. {
  46. $invoegen.= ",".$resultaat[$l];
  47. }
  48.  
  49. $fp = fopen($file, "r+");
  50. fputs($fp, $invoegen); //$invoegen invoegen
  51. fclose($fp);
  52. setcookie("poll", "gestemd", time()+3600*24); //hier wordt het cookie geset op een dag
  53. echo "Je stem is verzonden!<br>Je wordt nu doorgestuurd naar de poll...";
  54. header("refresh: 2; url=poll.php"); //doorverwijzing
  55. }
  56. }
  57. else
  58. {
  59. echo "<form method=\"post\">";
  60. for($i = 0; $i < $j; $i ++) //lusje om resultaten te laten zien.
  61. {
  62. $uitslag = round(100 / $totaal * $resultaat[$i]); //formule voor procenten
  63. echo "<table width=\"100%\" border=\"0\"><tr><td width=\"100\">".$optie[$i]."</td><td width=\"20\"><input type=\"radio\" name=\"stem\" value=\"".$i."\"></td><td width=\"*\"><table border=\"0\" width=\"".$uitslag."%\" height=\"20\"><td bgcolor=\"#3399cc\"> </td></tr></table></td><td width=\"30\">".$uitslag."%</td></tr></table><br>"; //maak de opmaak met de breedte van tabel
  64. }
  65. echo "<input type=\"submit\" name=\"stemmen\" value=\"Stemmen\"></form><br><br><b>".$totaal."</b> stemmen totaal";
  66. }
  67. }
  68. ?>


voorbeeld poll.txt
  1. 1,0,0,0
Download code! Download code (.txt)

 Bekijk een voorbeeld van dit script!
 Stemmen
Niet ingelogd.

 Reacties
Post een reactie
Lees de reacties (17)
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.036s