Formular Liste komplett übergeben
Hakan
- php
Hallo Leute,
wieder ein Problem mit einer Liste, bei dem ich nicht weiterkomme.
Ich habe zwei Listen.
Liste A ist leer und Liste B ist voll.
Dann wähle ich einige Elemente aus der Liste B und
übertrage diese per JS auf die Liste A.
Dann drücke ich auf Submit und möchte im nächsten Formular alle Elemente der Liste A auslesen.
Funzt aber nicht, weil solange die elemente aus der Liste A nicht explizit markiert sind, übergibt er keine Inhalte.
Gibt es eine Möglichkeit, beim Übergeben des Formulars, auf alle Elemente der Liste A zuzugreifen per $_REQUEST bzw. $_POST??
Auch funzt es nicht, wenn ich beim Listenfeld "multiple" angebe und mehrere markiere. Es wird immer nur ein Element übergeben.
-> count($_REQUEST['Liste']); ergibt immer 1.
Hat einer eine Idee?
Danke im Voraus!
Gruß
Hello,
Auch funzt es nicht, wenn ich beim Listenfeld "multiple" angebe und mehrere markiere. Es wird immer nur ein Element übergeben.
-> count($_REQUEST['Liste']); ergibt immer 1.
Es funktioniert schon...
<select name="element" multiple>
führt dazu, dass alle Optionen dieses Selects mit demselben Namen übergeben werden. Das bedeutet, dass der Browser lauter geliche Name=Value-Pärchen bastelt und im Post-Body an den Server verschickt.
Angucken könntest Du Dir das, wenn Du mal den Input-Stream ansprichst
$fh = fopen('php://input','r'),
$input = fread($fh, 4096);
fclose($fh);
echo "<pre>\r\n";
echo htmlspecialchars($input);
echo "</pre>\r\n";
PHP legt nun eine Variable an und überschreibt diese dann wieder, wenn dre nächste Parameter mit demselben bezeichner auftaucht.
Um das Problem zu lösen, solltest Du den Browser bitten, ein Array für PHP vorzubereiten
<select name="element[]" multiple>
Nun wird PHP explizit darauf aufmerksam gemacht, dass mehrere Elemente mit demselben Basisnamen kommen und legt diese gleich als Array an.
Ein harzliches Glückauf
Tom vom Berg
http://bergpost.annerschbarrich.de
Hallo Tom,
vielen dank, dass ist genau das, woran ich gescheitert bin.
Aber jetzt hab ich ein anderes Problem. Vielleicht kannst Du mir da auch auf Anhieb helfen.
Ist aber ein JS-problem.
Listenelement vorher:
<select name="element" multiple>
Unter JS konnte ich auf das Element wie folgt zugreifen:
document.formular.toUsr.length
Jetzt mit:
<select name="element[]" multiple>
kann ich unter JS auf das Element nicht zugreifen. Bekomme keine Meldung garnichts. JS bricht einfach ab - folgende JS-Befehle werden nicht ausgeführt.
waas mach ich falsch?
Gruß, Hakan
Hi,
Aber jetzt hab ich ein anderes Problem.
Ein weiteres uraltes ...
Unter JS konnte ich auf das Element wie folgt zugreifen:
document.formular.toUsr.lengthJetzt mit:
<select name="element[]" multiple>
kann ich unter JS auf das Element nicht zugreifen.
http://de.selfhtml.org/javascript/objekte/elements.htm#allgemeines, Schema 4
MfG ChrisB
Leider ist das nicht die Antwort auf mein Problem!
Es geht nicht darum, wie ich auf das Element zugreifen kann, sondern es scheitert allein an den Eckigen klammern.
Wenn das Element wie folgt aussieht:
<select name='user' size='16' multiple>
dann kann ich mit Schema4 genauso darauf zugreifen, wie mit jeder anderen Schema auch.
Also unter JS:
test = document.forms["formular"].elements["user"].length;
alert("Alarm "+test);
Sobald ich aber die Eckigen klammern hinzufüge:
<select name='user[]' size='16' multiple>
wird der "Alarm" nicht ausgeführt.
Und ich weiss nicht warum?!
Gruß, Hakan
Hi,
Es geht nicht darum, wie ich auf das Element zugreifen kann,
Doch, tut es.
test = document.forms["formular"].elements["user"].length;
alert("Alarm "+test);Sobald ich aber die Eckigen klammern hinzufüge:
<select name='user[]' size='16' multiple>wird der "Alarm" nicht ausgeführt.
Und ich weiss nicht warum?!
Weil du auf ein Feld ueber den Namen "user" zuzugreifen versuchst, obwohl dieses diesen Namen gar nicht traegt.
MfG ChrisB
Irgendwie hattest Du doch Recht, ChrisB.
Aber es funzt nicht, wenn ich das Element mit dem Namen anspreche.
Ich muss es als Index ansprechen. Dann gehts. Komische Sache.
Trotzdem danke!
Hakan
Hallo,
Funzt aber nicht, weil solange die elemente aus der Liste A nicht explizit markiert sind, übergibt er keine Inhalte.
Auch funzt es nicht, wenn ich beim Listenfeld "multiple" angebe und mehrere markiere. Es wird immer nur ein Element übergeben.
"funzt nicht" ist keine Fehlerbeschreibung, siehe auch Tipps für Fragende.
-> count($_REQUEST['Liste']); ergibt immer 1.
Schon mal var_dump oder print_r statt count verwendet?
Freundliche Grüße
Vinzenz
Hi,
Funzt aber nicht, weil solange die elemente aus der Liste A nicht explizit markiert sind, übergibt er keine Inhalte.
Dann markiere sie - im Moment des Absendens.
Auch funzt es nicht, wenn ich beim Listenfeld "multiple" angebe und mehrere markiere. Es wird immer nur ein Element übergeben.
Ganz alter Hut.
MfG ChrisB