Ich habe folgendes Formular:
%Vor%BEARBEITEN
Ist es möglich, die beiden Werte in ein assoziatives Array BEFORE zu übergeben? Ich möchte es in dieser Form weitergeben:
%Vor%Ich brauche das, weil ich es vermeide, das Skript der Ziel-PHP-Datei (options.php) zu ändern
Danke.
Hier ist eine Methode, die reines HTML verwendet, das Sie fast genau dorthin bringt, wo Sie sein wollen, und nur HTML verwendet:
%Vor%Was würde Sie in PHP geben:
%Vor%Was können Sie dann ( einschließlich Desinfektion ) wie folgt tun:
%Vor%BEARBEITEN
Oder ... Sie möchten auf das deptid
im Attribut input name
verweisen und es verwenden, um die Zeile für einen Abteilungsnamen zu ändern? Das scheint so etwas zu bedeuten:
Welche Ausgaben:
%Vor% Das Problem dabei ist, dass der Wert $deptid
zu einem Wert wird, der nicht direkt benannt oder referenziert wird. Ich denke, dass es aufgrund dieser Abstraktion des Werts vom Server zum Client und zurück potentiell problematisch ist, zu implementieren, also würde ich stattdessen empfehlen, was ich oben habe. Es ist in der Praxis kein großer Unterschied, aber es ist mehr oder weniger selbstdokumentierend.
Beachten Sie, wenn Sie eine Liste von Abteilungen serialisieren möchten, ist es ein wenig komplizierter. Sie könnten dies zum Beispiel versuchen:
%Vor% Dies würde einen indizierten Wert für jedes input
hinzufügen. Allerdings ... Sie würden nicht direkt assoziiert werden. Sie würden stattdessen zwei nullindizierte Arrays für jeden Schlüssel erhalten.
Was ich in diesem Fall vorschlagen würde, ist die Verwendung von Javascript, um die input
-Elemente jeder neuen Abteilung hinzuzufügen, so dass Sie jeder eine Zahl wie folgt geben können:
Oder führen Sie die POSTBACK-Methode der alten Schule aus und verwenden Sie PHP, um $POST['options']
zu zählen und "manuell" eine neue "Zeile" von Eingaben mit demselben Index hinzuzufügen. Es ist eine gewöhnliche Falle, also musst du nur darüber nachdenken, wenn du irgendwann danach suchst.
$_POST
ist bereits ein assoziatives Array und Ich empfehle Ihnen, Dinge nicht zu komplizieren, weil $_POST
bereits die Daten aus Ihrem Formular enthält .
und das assoziative Array, das Sie erhalten, ist im name-Attribut der Eingabeelemente in Ihrem Formular (einschließlich textarea) organisiert und benannt
Andere Einblicke
Wie ich Ihren Code sehe, möchten Sie die Daten deptname
auf deptid
setzen, wenn sie den serverseitigen PHP-Code erreichen. Nun, das, was Sie tun können, ist, dass Sie es einfach dem Schlüssel deptid
Erstellen Sie ein JS-Objekt mit der entsprechenden Struktur, konvertieren Sie es in JSON mit JSON.stringify()
, machen Sie es POST und führen Sie dann json_decode($_POST['data'],true)
.
Sie haben eine genaue Kopie von JS-Objekt zu PHP-assoziierten Array. Löschen Sie den zweiten Parameter von true
, um ein PHP-Objekt zu erhalten.
Warum möchten Sie das tun? Aber Sie können "Arrays" über Formulare wie folgt senden:
%Vor%Tags und Links html php associative-array