1115 Stimmen

PHP: Formular-Eingaben als Array an PHP Skript schicken

Tipp von Stefan Trost | Letztes Update am 07.05.2021 | Erstellt am 29.10.2012

Oft ist es recht praktisch, Eingaben aus einem Formular direkt als Array in einem PHP Skript zu empfangen, um direkt mit der Bearbeitung der Daten in der richtigen Form beginnen zu können. In diesem Tutorial möchte ich euch zeigen, wie das geht.

Typische Anwendungsfälle sind zum Beispiel Formulare mit zahlreichen gleichartigen Feldern oder Formulare, in denen eine vorher unbekannte Anzahl an Feldern dynamisch erstellt wird.

Ein erstes Beispiel

Schauen wir uns zunächst ein einfaches Beispiel an. In unserem ersten Beispiel haben wir drei Eingabefelder und möchten deren Inhalt in unserem PHP Skript "script.php" zusammen in nur einem Array empfangen.

<form action="script.php" method="post">
  <input name="feld[]" value="" />
  <input name="feld[]" value="" />
  <input name="feld[]" value="" />
</form>

Das entscheidende, um die vom Nutzer in das Formular eingegebenen Daten später direkt als Array empfangen zu können, sind die eckigen Klammern. Der Name "feld" ist dabei beliebig, jedoch muss jedes Input-Feld den gleichen Namen feld[] haben, damit alle Nutzereingaben später auch im gleichen Array stehen.

In unserem PHP Skript können wir mit $_POST['feld'] das Array empfangen und auf die übertragenen Werte zugreifen:

// einen einzelnen Wert ausgeben
echo $_POST['feld'][0];

Das erste Array-Feld aus unserem Formular hat dabei den Index 0, das zweite 1 und so weiter. In unserem Beispiel greifen wir demnach mit $_POST['feld'][0] auf den Wert, den der Nutzer in das erste Feld eingetragen hat zu.

Wir können mit dem Array wie mit einem ganz normalen Array in PHP arbeiten:

// alle Daten in einem Array empfangen
$felder = $_POST['feld'];
 
//alle Daten ausgeben / verarbeiten
foreach ($felder as $value) {
  echo $value;
}

In diesem Beispiel weisen wir $_POST['feld'] zum Beispiel einer Variable zu und durchlaufen danach das Array Element für Element. Wir ersparen uns hier also die Arbeit, jedes Feld einzeln ansprechen und auslesen zu müssen.

Namen für die Felder im Array

In unserem ersten Beispiel haben wir durch das Schreiben von [] eine numerisch indizierten Array bekommen. Alternativ können wir den einzelnen Feldern im Array aber auch Namen geben und so einen assoziativen Array erhalten:

<form action="script.php" method="post">
  <input name="feld[vorname]" value="" />
  <input name="feld[nachname]" value="" />
  <input name="feld[passwort]" value="" />
</form>

In unserem PHP-Skript können wir die einzelnen Felder direkt über deren Namen ansprechen:

// alle Daten in einem Array empfangen
$felder = $_POST['feld'];

// Felder mit dem Namen auslesen
$vorname  = $felder['vorname'];
$nachname = $felder['nachname'];
$passwort = $felder['passwort'];

Dies kann es je nach Anwendungsfall einfacher machen, die einzelnen Felder auseinander zu halten.

Weitere Möglichkeiten

Natürlich lassen sich auch beliebig viele Arrays nebeneinander übertragen und auch mit nicht-Array Feldern kombinieren:

<form action="script.php" method="post">
  <input name="feld[]" value="" />
  <input name="feld[]" value="" />
  <input name="andererarray[]" value="" />
  <input name="normalesfeld" value="" />
  <input name="andererarray[]" value="" />
</form>

Und anschließend in PHP auslesen:

$feld = $_POST['feld'];
$andererarray = $_POST['andererarray'];
$normalesfeld = $_POST['normalesfeld'];

foreach ($feld as $value) echo $value;
foreach ($andererarray as $value) echo $value;
echo $normalesfeld;

Damit lässt sich schon im Formular festlegen, in welcher Form die Daten später verfügbar sein werden. Darüber hinaus sind wir, wie man sieht, völlig frei in der Anordnung und können normale Felder auch zwischen Array-Felder mischen. Die Reihenfolge spielt keine Rolle.

AntwortenPositivNegativ

Über den Autor

AvatarSoftware von Stefan Trost finden Sie auf sttmedia.de. Benötigen Sie eine individuelle Software nach Ihren eigenen Wünschen? Schreiben Sie uns: sttmedia.de/kontakt
Profil anzeigen

 

Ähnliche Themen

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.