Wir erstellen einen PHP Zufallsgenerator, den man z.B. für ein Gewinnspiel verwenden kann.
Vorweg: Das ganze ist eigentlich kein Zufallsgenerator sondern mehr ein „Zufallsauswähler“, da er einen von mehreren zuvor eingegebenen Werten auswählt.
Einen PHP Zufallsgenerator zu programmieren/erstellen ist an sich keine schwierige Übung. Das Ziel soll sein, das wir mehrere Wörter eingeben und PHP zufällig eines dieser Wörter ausgibt. Wir werden eine nicht perfekte, aber funktionierende Methode verwenden, indem wir die Wörter in eine Textarea eintragen (eines in jede Zeile), die Anzahl der Zeilen ermitteln, zufällig eine Zeile auswählen lassen und den Inhalt dieser Zeile wieder ausgeben lassen. Allerdings brauchen wir bevor wir mit dem programmieren des Zufallsgenerators an sich anfangen können zunächst einige Tools zum erstellen der PHP Datei.
Was brauchen wir um einen PHP Zufallsgenerator zu erstellen?
Zum erstellen des PHP Zufallsgenerators brauchen wir zunächst mal einen Texteditor, am besten mit farbiger Code Hervorhebung und speziell für PHP, CSS, HTML und co.: (Ich übernehme keine Haftung für die Aktualität und Korrektheit der Links, bzw. für evtl. Schäden durch das Verwenden der unten genannten Programme)
- (Adobe) Dreamweaver – Benutze ich persönlich – – ca. 500€
- (Webocton) Scritply – – Kostenlos
- (Oracle) NetBeans – – Kostenlos
- Sublime Text – – $59 (ca. 45€)
Zudem solltet ihr ein FTP Programm besitzen:
- FileZilla – – Kostenlos
Außerdem müsst ihr euch entscheiden, ob ihr lokal arbeitet (zum Beispiel mit Xampp), oder bei einem Online Hoster eurer Wahl. Wenn ihr nicht Online arbeiten wollt oder könnt, findet ihr alle Installationsanweisungen für Xampp und euer jeweiliges Betriebssystem auf der Xampp Webseite.
Lets Code!
Ich werde hier zunächst noch einmal das „Konzept“ welches ich weiter oben schon angerissen habe noch einmal genauer erläutern. Wir werden dem Benutzer die Möglichkeit geben, Wörter (Begriffe, Zahlen, Benutzernamen) in eine mehrzeilige Textbox, eine sogenannte Textarea einzutragen, dann mit PHP die Zeilenanzahl der Textarea ermitteln und von PHP zufällig eine auswählen lassen, um dann den Inhalt der entsprechenden Zeile auszugeben. Der Nachteil dieser Technik ist, das man nur eine „Option“ pro Zeile eintragen kann, was die ganze Sache im Endeffekt allerdings einfacher und übersichtlicher macht. Klingt doch in der Theorie ziemlich simpel. Also Los!
Schritt 1 beim erstellen eines PHP Zufallsgenerators: *.php Datei erstellen
Das ist noch einfach: Wir erstellen ein neues leeres Dokument und nennen es zum Beispiel „zufallsgenerator.php“.
Schritt 2 beim erstellen eines PHP Zufallsgenerators: Das Ausgeben der Textarea
Zunächst müssen wir dem Benutzer die Möglichkeit geben, die zur Auswahl stehenden Begriffe einzugeben, was wir mit einem Formular und einer Textarea tun werden. Allerdings sollte dieses Formular nur dann ausgegeben werden, wenn noch keine Daten in dieses eingegeben wurden. Dafür überprüfen wir einfach den Inhalt des $_POST, bzw. $_GET Arrays in PHP. Ob wir nun die GET Methode zum übertragen des Formulars benutzen, bei der die Daten direkt an die URL angehängt werden, oder die POST Methode, bei der die Daten versteckt übermittelt werden, ist grundsätzlich egal. Ich empfehle aber in diesem Fall, POST zu verwenden, da wir mit POST längere Strings übermitteln können als bei GET. Wichtig ist nur darauf zu achten, das wir sowohl im PHP Code als auch bei der Ausgabe des Formulars die selbe Methode verwenden.
<?php // Wenn das Formular leer ist if(!isset($_POST['array']) or $_POST['array'] == '') {
Danach folgt eine Aufforderung an den Benutzer, jeweils einen Wert in eine Zeile der Textarea einzutragen und das Formular. Ich benutze zum ausgeben des HTML Codes eine einfache Methode, in dem ich PHP mit ?> schließe und später wieder mit <?php öffne.
?> <center> <!-- Bitte Zentrieren! --> <h1>Bitte geben Sie die möglichen Werte unten ein: </h1> <br> <h4>Ein Wert pro Zeile!</h4> <form action method="post"> <textarea name="array"></textarea> <input type="submit" value="Abschicken!" /> </form> </center>
Schritt 3 beim erstellen eines PHP Zufallsgenerators: Das verarbeiten mit PHP
Nun müssen wir die übermittelten Daten verarbeiten und zufällig einen der Werte aus der Textarea auswählen und ausgeben. Wir können hierzu das if Statement am Anfang vom Code verwenden, da dieses überprüft, ob bereits Werte übergeben wurden. Ist dies nicht der Fall, gibt es das Formular aus. Also können wir sicher sein, das der Code im else Statement nur dann ausgeführt wird, wenn Werte in die Textarea eingetragen wurden. Wir werden die übermittelten Daten, die sich bei mir im $_POST-Array befinden, zunächst mit der Funktion explode() teilen, welche einen String jeweils an einer bestimmten Stelle, in unserem Fall an einem Zeilenumbruch (\n) teilt, und uns ein Array bestehend aus den geteilten Strings zurückliefert.
<?php } else { $line_count_array= explode("\n", $_POST['array']);
Jetzt können wir mit der Funktion count(), die in unserem Fall alle Ebenen des Arrays zählt und einen Integer zurückliefert, die Anzahl aller Zeilen der Textarea, und somit der eingetragen Werte ermitteln. Dann können wir den Zufall ins Spiel bringen, indem wir mit der Funktion rand() eine Zeile auswählen. Die rand() Funktion akzeptiert zwei Parameter, wovon der erste den kleinsten und der zweite den größten möglichen Rückgabewert festlegen. In unserem Beispiel übergeben wir als ersten Parameter 1, wir fangen also bei Zeile eins an, und als zweiten Parameter die Anzahl der Zeilen, die uns count() zurückgeliefert hat, in meinem Fall also die Variable $line_count.
$line_count = count($line_count_array); $line = rand(1, $line_count);
Soweit so gut, jetzt haben wir also zufällig eine Zeile aus der Textarea ausgewählt, es fehlt also nur noch die Ausgabe dieser Zeile (und deren Inhalt). Dazu müssen wir auf das Array $line_count_array, welches uns weiter oben die explode() Funktion zurückgeliefert hat zurückgreifen. Wir können allerdings nicht einfach die Ebene des Arrays $line_count_array ausgeben, welche die selbe Nummer wie $line hat, sondern müssen $line zunächst um einen Wert subtrahieren, da wir der rand() Funktion als Einstiegswert 1 übermittelt haben, die erste Ebene eines Arrays jedoch den Wert 0 hat.
$line_content = $line_count_array[$line - 1];
Nun können wir die ausgewählte Zeile und deren Inhalt ausgeben:
echo "Die ausgewählte Zeile ($line) enthält den Wert $line_content.";