Formulare erstellen und auswerten

Ein Formular besteht eigentlich nur aus HTML (eventuell noch Javascript) und hat somit erstmal nichts mit PHP zu tun. Wenn wir aber das Formular auswerten möchten, brauchen wir PHP.

Ein typisches Formular

<form action="formular_verarbeiten.php" method="get">
	<p>Gib deinen Namen ein: <input type="text" name="benutzername" /></p>
	<input type="submit" value="absenden" />
</form>

Hier siehst du ein typisches HTML-Formular. Unser Formular hat zwei Attribute:

  • action – das action-Attribut hat den Wert „formular_verarbeiten.php“. Nachdem der Besucher auf den Absenden Button des Formulars klickt, wird diese Datei aufgerufen und die Formular-Werte übermittelt.
  • method – Die Methode mit der die Variablen verschickt werden sollen. Es gibt die Wahl zwischen get und post. Wir benutzen hier erstmal die Methode GET

Der Rest ist Standard HTML: Ein Input-Feld mit dem Feldnamen „benutzername“ und einen Submit-Button, um das Formular abzuschicken.

Erstelle jetzt die Datei „index.html“ und füge obigen HTML Code ein. Wenn du die Datei jetzt aufrufst, solltest du folgende Ausgabe sehen:

Das ist unser HTML-Formular, und viel passiert noch nicht. Wenn du deinen Namen einträgst und auf absenden klickst, versucht der Browser die Datei aufzurufen, die im action-Attribut angegeben ist. Da die Datei noch nicht existiert, erscheint eine Fehlermeldung.

Formular Daten mit PHP verarbeiten

Um die Fehlermeldung zu beseitigen, erstellen wir jetzt die Datei „formular_verarbeiten.php“ im selben Ordner wie die „index.html“:

<?php
	echo 'Hallo ';
?>

Bislang alles wie gewohnt, aber nun wollen wir auf die Formular-Eingaben zugreifen. Die Formular-Werte werden in die PHP-Variablen „$_GET“ und „$_POST“ gespeichert, je nachdem, welche Methode wir oben im Formular angegeben haben. Da wir uns erstmal für „get“ entschieden haben, sind da auch unsere Werte drin. Da „$_GET“ ein Array ist, wollen wir uns das mal anschauen:

<?php
	echo 'Hallo ';
	
	echo '<pre>';
	print_r($_GET);
	echo '</pre>';
?>

Die Formular-Werte werden also als assoziatives Array in der $_GET-Variable abgelegt. Der Wert des „name“-Attributs ist der Index und der Wert ist die Eingabe, die der User ins Feld geschrieben hat. Das wollen wir nun direkt mal nutzen und passen die Datei „formular_verarbeiten.php“ an:

<?php
	echo 'Hallo '.$_GET['benutzername'];
?>

Ausgabe: Hallo Christian (bzw. welchen Namen du eingibst)

Ein weiteres Beispiel

Man kann alle Formular-Werte an PHP schicken, man muss den Eingabe-Feldern nur einen Namen geben:

index.html

<form name="eingabe" action="formular_verarbeiten.php" method="get">
	<p><strong>Wie geht es dir?</strong></p>
	<input type="radio" name="zustand" value="1" /> Super <br />
	<input type="radio" name="zustand" value="2" /> Gut <br />
	<input type="radio" name="zustand" value="3" /> Wie immer <br />
	<input type="radio" name="zustand" value="4" /> Geht so <br />
	<input type="radio" name="zustand" value="5" /> Schlecht <br />
	
	<br />
	<input type="submit" value="absenden" />
</form>

formular_verarbeiten.php

<?php
	switch($_GET['zustand']) {
		case 1:
			echo 'Geht mir genau so, ein super Tag!';
			break;
	
		case 2:
			echo 'Toll, das freut mich für dich :)';
			break;
			
		case 3:
			echo 'Besser als sich schlecht zu fühlen ;)';
			break;
			
		case 4:
			echo 'Kopf hoch, das wird schon wieder.';
			break;
			
		case 5:
			echo 'Denk dran, nach jedem Tief kommt ein Hoch.';
			break;
	
		default:
			echo 'Du hast vergessen deinen Zustand auszuwählen.';
	}
?>	

Der Besucher kann seinen Gemütszustand auswählen und wir geben ihm eine dazu passende Antwort. Wenn der Besucher vergisst etwas auszuwählen, nutzen wir die „default“-Aktion von Switch.

hier geht's weiter...



Kommentare


Hallo,

ich muss hier leider auch nochmal Nachfragen.
Im Punkt "Assoziative Arrays" steht, dass dieser sich dadurch auszeichnet, dass er einen Namen als Index-Wert hat. Wie sehe ich hier, dass es sich bei $_Get überhaupt um ein Array handelt?
Denn der Assoziative lecuhtet mir durch $_GET['benutzername']; "benutername" ein.

Danke schonmal.


Ein Array kann man daran erkennen, dass es "eckige Klammern" hat. Die $_GET-Variable ist ein Standard PHP Array welches von PHP automatisch "gefüllt" wird.


Das versteh ich ebenfalls, ich sehe aber nicht an welcher Stelle $_GET als array deklariert wird. Da [] sowohl array(); fehlen. Aber ebend nur im ersten Abschnitt von ''Formular Daten mit php bearbeiten. Die ass. Array erkenn ich ja.

Nochmals danke:)


Wie gesagt "$_GET" wird automatisch von PHP angelegt und gefüllt.


Ahh okay da ich $_GET verwende ist das für php automatisch ein array?


genau :)
mit "print_r($_GET);" kannst du dir den Inhalt des GET-Arrays anschauen, vorausgesetzt es enthält Werte.


Hallo teste gerade deine scripts.
Bei dem Script "Formulare bearbeiten mit PHP" kommt folgender Fehler:

Notice: Undefined index: zustand in /opt/lampp/htdocs/php/formular_verarbeiten.php on line 2

Du hast vergessen deinen Zustand auszuwählen.

der untere war ja gewollt aber wie bekomme ich den oberen weg.

Vielen Dank für deine Hilfe.

Kommentar schreiben

Kommentar

Hilfe:

<strong>fettgedruckt</strong> => fettgedruckt

<em>kursiv</em> => kursiv

<a href="http://wordpress.lernenhoch2.de">Link</a> => Link

[code]<?php echo 'hello world'; ?>[/code]

*

Feedback Formular