IT-Academy Logo
Sign Up Login Help
Home - Programmieren - PHP - PHP und MySQL: Quiz und Gewinnspiel erstellen



PHP und MySQL: Quiz und Gewinnspiel erstellen

Ein Tutorial das zeigt, wie man mit PHP und MySQL ein Quiz oder ein Gewinnspiel auf der Seite einrichtet.


Autor: Patrick Faes (dreamer)
Datum: 07-01-2004, 22:38:53
Referenzen: keine
Schwierigkeit: Fortgeschrittene
Ansichten: 20053x
Rating: 8.67 (3x bewertet)

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



Einleitung

Ein Quiz oder ein Gewinnspiel auf der Seite regt immer die Aufmerksamkeit der Besucher und motiviert zum wiederkommen. Die meisten Leute haben allerdings keine Ahnung wie man das macht, wobei es mit HTML-Formularen, PHP und MySQL doch sehr leicht zu realisieren ist.
Ich werde hier zwei Beispiele zeigen:
  • ein Quiz das sofort zeigt welche Antworten richtig waren und eine erneute Chance gibt
  • ein Gewinnspiel, wobei die Daten in einer Datenbank gespeichert werden
Ein Quiz

<?php

echo '<form method="post" action="quiz.php">';

if ($_POST['antwort1'])=='richtige_antwort')
{
echo '<span style="color:green">Sie haben diese Frage richtig beantwortet!</span><br>;
$resultat + 1;
}

else if (($_POST['antwort1']!='richtige_antwort') && (isset($_POST['antwort1']))
{
echo '<span style="color:red;">Dies war die falsche Antwort.</span>;
echo '<span style="color:red;">Versuchen Sie es nochmal.</span>;
echo 'Frage 1 <br> <input type="text" size="15" name="antwort1">';
}

else {echo 'Frage 1 <br> <input type="text" size="15" name="antwort1">';

echo '</form>;

?>
So, das ist eigentlich schon der ganze Code. Das Formular wird in demselben Script aufgestellt in welchem es verarbeitet wird. Das Script:
  1. Schreibe Anfangstag eines Formulares (<form>)
  2. Sehe nach ob die gegebene Antwort gleich die richtige Antwort ist (wenn noch keine Antwort gegeben würde, ist dies immer FALSE). Wenn TRUE, dann schreibe in grün, dass die richtige Antwort gegeben wurde.
  3. Wenn 2 FALSE ist, dann sehe nach ob eine Antwort gegeben wurde (und diese dann die falsche Antwort ist). Wenn beides der Fall ist, wird in rot geschrieben, dass die Antwort falsch ist und wird die Frage erneut gestellt.
  4. Zuletzt wird (wenn 2 und 3 FALSE sind, also wenn noch keine Antwort gegeben wurde) einfach die Frage gestellt
  5. Zum Schluss soll noch der Formular-Endtag (</form>) geschrieben werden
Wenn Sie mehr zu Formularen wissen möchten, klicken Sie hier.

Wenn Sie mehr zum PHP-Sprachkonstrukt echo() wissen möchten, klicken Sie hier.

Ein Gewinnspiel

Nun kommen wir zu einem Gewinnspiel. Hierzu gibt es 4 Scripte die in dieser Reihenfolge abgearbeitet werden:
  1. Abfragen von persönlichen Daten (Name, Adresse usw.)
  2. Die Gewinnspiel-Fragen
  3. Eine Auflistung der gegebenen Daten und Antworten und der Frage ob diese richtig sind.
  4. Das Script, dass die Daten in einer Datenbank speichert.
Im ersten Script steht einfach ein Formular. Allerdings sollte man die Daten die verplichtet sind, markieren (z.B. mit ein *). Im zweiten wird auch kontrolliert ob diese ausgefüllt wurden und, wenn dies nicht der Fall ist, wird der User zurückgeschickt zum ersten Script. Das Feld wird dann markiert (braucht einen extra Variablen $test). Deshalb sollte in diesem Script jedes Feld so geschrieben werden:

<?php

if (isset($_GET['vorname']))
{echo 'Vorname:<input type="text" size="12" name="vorname" value="'.$vorname.'">
';} else if ( (!isset($vorname)&&($test==1) ) {echo '<spans style="color:red;">Vorname:</span><input type="text" size="12" name="vorname">
';} else echo '<input type="text" size="12" name="vorname">
';} ?>
Dieses Script arbeitet so:
  1. Teste ob die Variable $vorname schon gesetzt wurde. Wenn dies der Fall ist, soll dieser Wert im Formular geschrieben werden.
  2. Teste ob die Variable $vorname keinen Wert hat UND (&&) die Variable $test schon. Wenn beides der Fall ist, wurde der User vom zweiten Script zurückgeschickt, weil einer der verplichteten Daten nicht angegeben wurde.
  3. Wenn beide Variable keinen Wert haben, dann wird einfach das Formular-Feld im Code geschrieben.
Anmerkung: Dies soll man nur machen bei Daten die zwingend notwendig sind.

Doch wie schickt man einen Besucher zurück wenn wichtige Daten fehlen?
Stellen wir mal vor, ein Formular kann man die folgenden Daten eingeben:
  • Name
  • Vorname
  • Adresse
  • Alter
  • Geschlecht
Hierbei sind Name, Vorname und Adresse verplichtet, das Alter und das Geschlecht sind nur optional. Dazu fängt man die Seite, auf dem das zweite Script steht, an mit

<?php

if ( (!isset($_POST['vorname'])) || (!isset($_POST['name']))
 || (!isset($_POST['adresse']))  )
header{"location:http://gewinnspiel1.php?vorname=$vorname&name=$name&adresse=$adresse
&alter=$alter&geschlecht=$geschlecht"}

?>
Wenn einer der verplichteten Daten nicht angegeben wurde, wird der User zurück zur vorherigen Seite geschickt und alle Daten werden wieder mitgegeben. Die geschieht mit der GET-Methode, während die Formulardaten per POST-Methode übergeben wurde.

Anmerkung: Der Header-Befehl muss immer ganz oben auf einer Seite stehen. Manche Leute haben aber nur eine Seite, wo die andere Teile immer inkludiert werden. Wenn dies bei Ihnen der Fall ist, müssen Sie die Abfrage so anpassen:

if ( ( ($_POST['gewinnspiel']=='ja') && ( (!isset($_POST['vorname']))
 || (!isset($_POST['name'])) ) )
Hierzu muss man auch eine weitere Variable angeben, um zu bestimmen, welches Script includiert werden soll:

<form method="post" action="index.php?gewinnspiel_var=3">
Hier wird abgefragt ob es sich um ein Gewinnspiel handelt ($gewinnspiel=='ja'). Die Variable $gewinnspiel kann man per Formular übergeben. Dazu kann man ein extra Formular-Feld hinzufügen:

<input type="hidden" value="ja">
Der Code ist deutlich: in ein für den User unsichtbarem Feld wird der Variable den Wert "ja" vergeben.

Nun legen wir die letzt Hand am zweiten Script. Um die Daten des ersten Scripts am dritten Script zu übergeben, benutzen wir wieder die versteckten Felder:

<?php

echo '

<form method="" action="">
 Die Fragen
<:input type="hidden" name="name=" value="'.$name.'">
<:input type="hidden" name="vorname=" value="'.$vorname.'">
<:input type="hidden" name="adresse" value="'.$adresse.'">



?>

<input type="hidden" value="ja">

';?>

Das dritte Script ist recht einfach. Hier sollen nur nochmal alle Felder aufgelistet werden mit der Frage, ob diese richtig sind. So kann der User noch ein letztes mal checken und so sicher gehen, dass alle Daten und Antworten stimmen.

<?php

echo '
<form method="post" action="gewinnspiel4.php"> <br>
<input type="text" size="15" name="vorname" value="'.$_POST['vorname']> <br>
<input type="text" size="15" name="antwort1" value="'.$_POST['antwort1']> <br>
</form>
';

?>
Zu guter letzt (jaja, wir sind bald da!) werden im vierten Script die Daten noch in einer Datenbank gespeichert.

<?php

if (!isset($_POST['alter'])) $alter='null';
if (!isset($_POST['geschlecht'])) $geschlecht='null';

$query = "insert into tabellenname (name,vorname,adresse,alter,geschlecht)
values ($name,$vorname,$adresse,$alter,$geschlecht)";

$datenbank = mysql_connect('localhost','user','passwort');
mysql_select_db('$db',tabellenname);
mysql_query($query);

?>
Zuerst werden die Daten die nicht verplichtet sind und auch nicht ausgefüllt wurden, mit 'null' gleich gesetzt. So kann man später auch in die Datenbank angeben, dass diese Daten nicht ausgefüllt wurden. Danach wird der Query definiert mit allen Variablen und diese werden dann in die Datenbank aufgenommen. Das war's.

Wenn noch Fragen offen bleiben, bitte ich diese im Forum zu stellen.


dreamer
Expert
Beitrag vom:
23-01-2004, 15:06:55

Wenn ITA das zulässt, würde ich das Live-Beispiel liebend gern machen, aber ITA... Vielleicht will Microsoft mich ja sponsorn. Jeder will doch die ganze Reihe Microsoft-Produkte haben.

-----------------------------------------------------


no_comment
Professonial
Beitrag vom:
23-01-2004, 13:17:31

Live-Beispiel

ok, schön gemacht, aber was mir fehlt ist ein Live-Beispiel...am besten mit echten Gewinnen und Preisen, damit wir ein Gefühl davon bekommen ;) exklusiv für ITA-User

-----------------------------------------------------
Es gibt nur 3 natürliche Feinde des Programmierers: Tageslicht, frische Luft und das unerträgliche Gebrüll der Vögel -- http://pc-intern.com http://straightvisions.com


[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04508
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16552
Queueeinträge:06243
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1144
Comments: 0