/ / Undefinierter Index in $ _POST mit Mehrfachauswahl - Javascript, PHP, HTML

Undefinierter Index in $ _POST mit mehreren Auswahl - Javascript, PHP, HTML

Ich habe ein Formular, das ein Vielfaches enthält <select> Element. Ich möchte in der Lage sein, PHP eine Liste aller Optionen in der abrufen zu lassen <select>.

Der Benutzer kann Elemente zum hinzufügen <select> durch Klicken auf verschiedene Dinge auf der Seite. Dies fügt der <select> dynamisch über JavaScript.

Grundgerüst meines HTML-Formulars:

<form action="submit.php" method="post">
<select id="list" name="items[]" multiple="multiple">
</select>

<input type="submit" value="Save" />
</form>

Und mein submit.php:

<?php
$list = $_POST["items"]; // returns "undefined index" error
for($i = 0; $i < count($list); $i++) {
echo $list[$i] . "<br />";
}
?>

Ich habe mich zu diesem Thema viel umgesehen und kann nichts finden, was funktioniert. Ich habe versucht, alles mit POST zu GET zu ändern, und das ändert nichts.

Wenn ich es tue var_dump($_POST), Ich bekomme:

array(0) { }

Ich verwende einen XAMPP-Server auf meinem lokalen Computer und bin nicht sicher, ob dies zu dem Problem beiträgt.

Danke für jede Hilfe.

Antworten:

0 für die Antwort № 1

Das funktioniert für mich:

HTML:

<form action="submit.php" method="post">
<select id="list" name="items[]" multiple="multiple">
<option value="Test1">Test 1</option>
<option value="Test2">Test 2</option>
<option value="Test3">Test 3</option>
</select>

<input type="submit" value="Save" />
</form>

PHP:

<?php
$list = $_POST["items"];
for($i = 0; $i < count($list); $i++) {
echo $list[$i] . "<br />";
}
?>

0 für die Antwort № 2

Wenn es keine gibt <option> Elemente in einem <select>oder wenn keine ausgewählt sind, wird das Formularfeld nicht an den Server gesendet.

Sie sollten immer sicherstellen, dass POST- (und GET-) Variablen festgelegt sind, bevor Sie sie verwenden:

if ( ! isset($_POST["items"])) {
die("Not set: "items"");
}

Beispielsweise:

<form action="submit.php" method="post">
<select id="list" name="items[]" multiple="multiple">
<option value="1">A</option>
<option value="2">B</option>
<option value="3">C</option>
</select>
<input type="submit" value="Save" />
</form>

<?php
if (isset($_POST["items"]) and is_array($_POST["items"])) {
$list = $_POST["items"];
for($i = 0; $i < count($list); $i++) {
echo $list[$i] . "<br />";
}
} else {
die("Not set: "items"");
}