PHP Umfrage Tutorial

Diesen Umfrage Code habe ich selbst geschrieben. Es ist mir klar das er für einige nicht perfekt oder professionell wirkt, dennoch wollte ich euch den Code zur Verfügung stellen.


In diesem Tutorial wird kein Grundwissen vermittelt wenn ihr z.b. nicht wisst was ein Array ist würde ich euch raten erst mal ein paar kleiner Scripts zu schreiben bevor ihr euch hiermit auseinandersetzt.

Wie fange ich an
Erstellt erst mal erstellt ihr folgende Dateien.
- vote.php //In die kommt der erste Script
- style.css //Da kommt der stylesheet rein um die Umfrage zu gestalten
- vote.txt //Da werden die Einträge gezählt und verwaltet,
was noch fehlt ist die Balkengrafik



Der PHP Code
<?php
$pfad = "besuche.txt"; //Pfad zur txt Datei
$frage = "Wie oft schaut Ihr hier vorbei?"; //Frage
$send = "senden_1"; //Name des Abstimmen Buttons
$see = "zeigen_1"; //Name des Ergebnis Buttons
$u_start = "11.11.2011"; //Datum Umfrage start

$auswahl = 4; //Anzahl der Auswahlmöglichkeiten

$option[0] = "täglich"; //Auswahlmöglichkeit 1
$option[1] = "gelegentlich"; //Auswahlmöglichkeit 2
$option[2] = "selten"; ////Auswahlmöglichkeit 3
$option[3] = "Bin zum ersten mal hier"; //Auswahlmöglichkeit 4

//--Ab hier nichts ändern--//

$vote = file("$pfad"); //Weist vote den Pfad der txt Datei zu
$radion = $_POST['radion_layout']; //Auswahl wird übergeben

$IP = $_SERVER['REMOTE_ADDR']; //IP des Users auslesen
$time = date(time()); //Datum mit Uhrzeit erstellen
$check = false; //check auf false setzen

if (isset($_POST[$send])) //Prüfen ob der Abstimmen Button gedrückt wurde
{
	if ($radion == "") //Prüfen ob eine Auswahl getroffen wurde
	{
	$fehler = "
Keine Auswahl getroffen
"; //Fehler ausgeben } else { $line = count(file("$pfad")); //Ansonsten die Zeilen in der txt Datei zählen if($line == 0) //Ist die txt Datei leer, { $check = true; //Gib true aus } else { //wenn in der txt Datei etwas steht $zeile = file("$pfad"); //zeile den pfad der txt Datei zuweisen $s=0; //Variable s auf 0 setzen while ($s < $line) //Vergleiche ob s kleiner als die Anzahl der Zeilen in der txt Datei ist { $geben = $zeile[$s]; //Eine Zeile auslesen $sort = explode("|",$geben); //Inhalt der Zeile aufsplitten und im array sort speichern if ($sort[0] == $IP) //Stimmt die IP mit der in der txt Datei überein { $check = false; //Wenn ja, darf nicht abgestimmt werden $fehler = "
Sie haben bereits abgestimmt
"; } else { $check = true; //Wenn nein, darf abgestimmt werden } $s ++; // erhöht den zähler s um einen und geht in die nächste Spalte } } } if ($check === true and $_POST[$send]) //Hat check den Wert true und es wurde Abstimmen gedrückt gehts weiter { $vo = fopen("$pfad", "a+"); //öffnet die txt Datei zum schreiben $vote_datei = fwrite ($vo, "$IP|$time|$radion|\r\n"); //schreibt in die txt Datei fclose($vo); // schließt die txt Datei } else { echo "$fehler"; } } if(isset($_POST[$see])) { $count = count(file("$pfad")); $array = file("$pfad"); $L = 0; for($i=0; $i <= $auswahl; $i++) { $vote[$i] = 0; } while ($L < $count) { $line = $array[$L]; $get_L = explode("|",$line); $step = 0; while($step <= $auswahl) { if ($get_L[2] == $step) { $vote[$step]++; } $step++; } $L++; } echo"
$frage
Mögliche Auswahl
Votes
Anteil
Umfrage Start: $u_start
"; for($m=0; $m < $auswahl; $m++) { $line = count(file("$pfad")); if($line == 0) { $prozent = 0; } else { $prozent = $vote[$m] * 100 / $line; $prozent = round($prozent,0); } echo"
$option[$m]
$vote[$m]
".$prozent."%
"; } $filetime = date("d.m.Y H:i:s",filemtime("$pfad")); echo"
Gesamt
$line
100%
Letztes Voting: $filetime
"; } else { echo"
\n"; echo"$frage
"; for($i=0; $i < $auswahl; $i++) { echo"$option[$i]
"; } echo"
"; } ?>

Um die Umfrage richtig darzustellen brauchen wir noch folgenden Code für die css Datei
/*Umfrage*/
#vote 
	{
	width:350px; height:auto; 
	border:10px #dad7d7 solid; margin:0px auto;
	text-align:left; padding:5px;
	}
	
#vote span, #ergebniss span
	{
	font-size:16px;
	}

.UmfrageButton 
	{ 
	width:auto; height:25px; 
	border:1px #dad7d7 solid;
	margin:5px; line-height:25px;
	cursor:pointer;
	}

#ergebniss 
	{
	width:540px; height:auto; margin:0px auto;
	text-align:left; padding:5px; 
	border:10px #dad7d7 solid;
	}

.option 
	{
	width:150px; height:19px; 
	padding:2px; float:left;
	border-bottom:1px #fff solid;
	}
	
.wert 
	{
	width:50px; height:19px; 
	padding:2px; float:left;
	border-bottom:1px #fff solid;
	border-left: 1px #fff solid;
	}

.balken 
	{
	width:270px; height:19px; 
	padding:2px; float:left;
	border-bottom:1px #fff solid;
	border-left: 1px #fff solid;
	}
	
.vote_grafik 
	{
	height:20px; float:left; 
	background-image:url(../style/stat.png);
	background-repeat:repeat-x; clear:left;
	}
	
.umfragefehler
	{
	width:370px; height:20px; 
	margin:0px auto; padding:5px;
	text-align:center; line-height:20px;
	background-color:#c81818; 
	color:#FFFFFF; font-weight:bold;
	}


Fertig
Am Ende sollte die Umfrage etwa so aussehen





Ich wünsche euch noch viel spaß beim coden ^.^
Bei Probleme könnt ihr mich jederzeit kontaktieren.