Simpele poll met cookie (log-based)
Auteur: remy - 17 januari 2005 - 20:05 - Gekeurd door: Dennisvb - Hits: 19827 - 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
<?php
ob_start(); //is enkel nodig voor de doorverwijzing
/* POLL
SIMPEL STEMSYSTEEM ZONDER MYSQL. RESULTATEN WORDEN OPGELSAGEN IN EEN LOG-BESTANDJE, WELKE GESCHEIDEIN WORDEN DOOR EEN ,.
BIJ GEBRUIK OP WEBSERVER MOET HET BESTANDJE 0777 GESCHMOD WORDEN
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.*/
$file = "poll.txt"; //het bestandje
$fp = fopen($file, "r"); //lees poll.txt uit
$inhoud = fread($fp, filesize($file)); //uitlezen
fclose($fp);
$vraag = "wat vin je ervan?";
$optie = array("leuk", "mooi", "gaat", "lelijk");
$resultaat = explode(",", $inhoud); //$inhoud in een array zetten.
$totaal = array_sum($resultaat); //totaal berekenen
$j = count($resultaat); //tellen hoeveel resultaten er zijn (standaard 3)
if($_COOKIE['poll'] == 'gestemd')
{
echo "<b>".$vraag."</b><br><hr><br>";
for($i = 0; $i < $j; $i ++) //lusje om resultaten te laten zien.
{
$uitslag = round(100 / $totaal * $resultaat[$i]); //formule voor procenten
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
}
echo "<b>je hebt al gestemd</b><br><br><b>".$totaal."</b> stemmen totaal";
}
else
{
if(isset($_POST['stemmen'])) //als er op de knop geklikt is
{
if($_POST['stem'] == '') //als er geen waarde is
{
echo "je hebt niks ingevuld, ga terug om dat alsnog te doen.";
}
else
{ // hieronder moeten de overige resultaten ook weer ingevoegd worden.
for($l = 0; $l < $_POST['stem']; $l ++)
{
$invoegen.= $resultaat[$l].","; //komma er weer bij..
}
$invoegen.= $resultaat[$_POST['stem']]+1; //voeg de stem toe + 1
for($l = $_POST['stem']; $l < $j-1; $l ++)
{
$invoegen.= ",".$resultaat[$l];
}
$fp = fopen($file, "r+");
fputs($fp, $invoegen); //$invoegen invoegen
fclose($fp);
setcookie("poll", "gestemd", time()+3600*24); //hier wordt het cookie geset op een dag
echo "Je stem is verzonden!<br>Je wordt nu doorgestuurd naar de poll...";
header("refresh: 2; url=poll.php"); //doorverwijzing
}
}
else
{
echo "<form method=\"post\">";
for($i = 0; $i < $j; $i ++) //lusje om resultaten te laten zien.
{
$uitslag = round(100 / $totaal * $resultaat[$i]); //formule voor procenten
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
}
echo "<input type=\"submit\" name=\"stemmen\" value=\"Stemmen\"></form><br><br><b>".$totaal."</b> stemmen totaal";
}
}
?>
<?php ob_start(); //is enkel nodig voor de doorverwijzing /* POLL SIMPEL STEMSYSTEEM ZONDER MYSQL. RESULTATEN WORDEN OPGELSAGEN IN EEN LOG-BESTANDJE, WELKE GESCHEIDEIN WORDEN DOOR EEN ,. BIJ GEBRUIK OP WEBSERVER MOET HET BESTANDJE 0777 GESCHMOD WORDEN 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.*/ $file = "poll.txt"; //het bestandje $fp = fopen($file, "r"); //lees poll.txt uit $vraag = "wat vin je ervan?"; $optie = array("leuk", "mooi", "gaat", "lelijk"); $resultaat = explode(",", $inhoud); //$inhoud in een array zetten. $totaal = array_sum($resultaat); //totaal berekenen $j = count($resultaat); //tellen hoeveel resultaten er zijn (standaard 3) if($_COOKIE['poll'] == 'gestemd') { echo "<b>".$vraag."</b><br><hr><br>"; for($i = 0; $i < $j; $i ++) //lusje om resultaten te laten zien. { $uitslag = round(100 / $totaal * $resultaat[$i]); //formule voor procenten 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 } echo "<b>je hebt al gestemd</b><br><br><b>".$totaal."</b> stemmen totaal"; } else { if(isset($_POST['stemmen'])) //als er op de knop geklikt is { if($_POST['stem'] == '') //als er geen waarde is { echo "je hebt niks ingevuld, ga terug om dat alsnog te doen."; } else { // hieronder moeten de overige resultaten ook weer ingevoegd worden. for($l = 0; $l < $_POST['stem']; $l ++) { $invoegen.= $resultaat[$l].","; //komma er weer bij.. } $invoegen.= $resultaat[$_POST['stem']]+1; //voeg de stem toe + 1 for($l = $_POST['stem']; $l < $j-1; $l ++) { $invoegen.= ",".$resultaat[$l]; } $fp = fopen($file, "r+"); fputs($fp, $invoegen); //$invoegen invoegen setcookie("poll", "gestemd", time()+3600*24); //hier wordt het cookie geset op een dag echo "Je stem is verzonden!<br>Je wordt nu doorgestuurd naar de poll..."; header("refresh: 2; url=poll.php"); //doorverwijzing } } else { echo "<form method=\"post\">"; for($i = 0; $i < $j; $i ++) //lusje om resultaten te laten zien. { $uitslag = round(100 / $totaal * $resultaat[$i]); //formule voor procenten 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 } echo "<input type=\"submit\" name=\"stemmen\" value=\"Stemmen\"></form><br><br><b>".$totaal."</b> stemmen totaal"; } } ?>
voorbeeld poll.txt
Download code (.txt)
|
|
|
Stemmen |
Niet ingelogd. |
|