Mehrfachauswahllist
$mardevilco
- php
0 Cheatah0 $mardevilco0 wahsaga
Ich habe da ein Problem.
Ich habe eine Mehrfachauswahllist. Und ich möchte jetzt das Ausgewählt mit PHP bestimmen. Aber es gibt immer nur den Wert des letzten ausgewählten zurück und nicht alles.
Ich wär froh, wenn mir jemand behilflich sein könnte.
Besten Dank im Voraus.
Hi,
Ich habe eine Mehrfachauswahllist. Und ich möchte jetzt das Ausgewählt mit PHP bestimmen. Aber es gibt immer nur den Wert des letzten ausgewählten zurück und nicht alles.
PHP hat einen kritischen defekt: Wenn mehrere gleichnamige Eingabefelder (nichts anderes ist ein <select multiple>) bearbeitet werden sollen, muss der Name dieser Eingabefelder auf "[]" enden.
Cheatah
Vielen Dank
Das ist das, was ich wissen wollte!
hi cheatah,
PHP hat einen kritischen defekt: Wenn mehrere gleichnamige Eingabefelder (nichts anderes ist ein <select multiple>) bearbeitet werden sollen, muss der Name dieser Eingabefelder auf "[]" enden.
bist du sicher, dass man hier von einem "defekt" sprechen kann?
wenn du eine multiple select-auswahl per GET übergibst kannst du erkennen, dass der query-string wie folgt aufgebaut wird:
?selectname=wert1&selectname=wert2&selectname=wertx&...
ich würde mal behaupten, dass es ein ganz normales verhalten jeder programmiersprache ist, dass bei mehreren hintereinander erfolgenden zuweisungen an die selbe variable jede neue zuweisung die vorhergehende überschreibt.
wenn du in php jetzt aber eine variable mit eckigen klammern notierst, interpretiert php dies als anweisung, einen neuen wert in das durch die variable bezeichnete array aufzunehmen.
in so fern erscheint mir dieses verhalten eigentlich eher logisch denn fehlerhaft zu sein.
gruss,
wahsaga
Hi,
PHP hat einen kritischen defekt: Wenn mehrere gleichnamige Eingabefelder (nichts anderes ist ein <select multiple>) bearbeitet werden sollen, muss der Name dieser Eingabefelder auf "[]" enden.
bist du sicher, dass man hier von einem "defekt" sprechen kann?
die Implementierung diktiert die Nomenklatur? Ja, das _ist_ defekt.
?selectname=wert1&selectname=wert2&selectname=wertx&...
ich würde mal behaupten, dass es ein ganz normales verhalten jeder programmiersprache ist, dass bei mehreren hintereinander erfolgenden zuweisungen an die selbe variable jede neue zuweisung die vorhergehende überschreibt.
Nö. In Perl klappt das seit zig Jahren. _Jede_ mir bekannte auch nur halbwegs ernstzunehmende Auswertung von Request-Parametern beachtet den Fall multipler Werte pro Parametername - nur die von PHP nicht, da muss man speziell ein "hoppla, hier könnte es mehrere von geben" melden. Ich nehme ferner an, die daraus resultierenden Einschränkungen z.B. bei (dem wesentlich älteren und etablierteren, nur mal nebenbei erwähnt) JavaScript sind Dir bekannt.
wenn du in php jetzt aber eine variable mit eckigen klammern notierst, interpretiert php dies als anweisung, einen neuen wert in das durch die variable bezeichnete array aufzunehmen.
Und warum tut es das nicht bei _jedem_ gültigen Namen?
in so fern erscheint mir dieses verhalten eigentlich eher logisch denn fehlerhaft zu sein.
Es ist allerhöchstens eine Notlösung aus Faulheit. Sie macht genauso viel oder wenig Sinn, wie einen Unterstrich an den Anfang des Parameternamen zu befehligen.
Cheatah
hi,
wenn du in php jetzt aber eine variable mit eckigen klammern notierst, interpretiert php dies als anweisung, einen neuen wert in das durch die variable bezeichnete array aufzunehmen.
Und warum tut es das nicht bei _jedem_ gültigen Namen?
weil du dann keine variable mehr durch einfache neuzuweisung eines wertes überschreiben könntest, wenn php bei jeder neuen zuweisung automatisch ein array anlegt...?
gruss,
wahsaga
Hi,
wenn du in php jetzt aber eine variable mit eckigen klammern notierst, interpretiert php dies als anweisung, einen neuen wert in das durch die variable bezeichnete array aufzunehmen.
Und warum tut es das nicht bei _jedem_ gültigen Namen?
weil du dann keine variable mehr durch einfache neuzuweisung eines wertes überschreiben könntest, wenn php bei jeder neuen zuweisung automatisch ein array anlegt...?
ähm. Es geht hier nicht um Zuweisungen, sondern um einen _Algorithmus_, mittels dem Request-Parameter ausgewertet werden. Es ist Sache eben dieses Algorithmus', ein Array zu erzeugen, sobald dies nötig ist; natürlich in Abhängigkeit des Begriffes "nötig".
Cheatah
Moin!
ähm. Es geht hier nicht um Zuweisungen, sondern um einen _Algorithmus_, mittels dem Request-Parameter ausgewertet werden. Es ist Sache eben dieses Algorithmus', ein Array zu erzeugen, sobald dies nötig ist; natürlich in Abhängigkeit des Begriffes "nötig".
Welche Konsequenz würde dein Vorschlag denn haben? Die Variable, in die die Formulardaten gespeichert würden, würde ihren Typ je nach Lage ändern. Es wäre bei nur einem Datum ein String, und bei zwei und mehr Daten ein Array. Das hätte zur Konsequenz, dass man sich in seinen Skripten auf nichts mehr verlassen könnte, sondern Typabfragen einbauen müßte.
Der jetzige Mechanismus garantiert, dass man einen String erhält, wenn man einen String wünscht, und ein Array (auch mit nur einem Element) erhält, wenn man einen String wünscht.
Ich würde dieses Verhalten keinesfalls als defekt bezeichnen. Solche vermeintlichen "Defekte" sind immer Ansichtssache.
Und mit Javascript erleidet man auch keinerlei Einschränkungen in der Programmierbarkeit.
- Sven Rautenberg