multiple select und file-upload in einem Formular
Andreas Korthaus
- programmiertechnik
Hallo!
Mein Problem ist folgendes:
Ich hab ein Formular, welches gleichzeitig ein Multiple-Select Feld und 2 File-Upload Felder enthält.
Bis hierher noch nicht wirklich spektakulär. Das Problem wird durch Javascript verursacht. Das Multiple Select-Feld(Listenfeld) wird durch ein Javascript gefüllt, und Javascript ist leider sehr streng was die Elementenamen angeht, zumindest ist kein Name wie fledname[] erlaubt, was von PHP z.B. herrlich in einen Array mit den einzelnen ausgewählten Werten als Elemente umgesetzt würde. Aber das funktioniert schonmal nicht. In PHP könnte ich das umgehen indem ich auf den Request-String direkt zugreife, welcher aber dank des POST-Verfahrens, welches durch den File-Upload notwendig wird, nicht vorhanden ist. Trotz stundenlanger Suche habe ich in PHP keine Möglichkeit gefunden, dies irgendwie zu vereinigen.
OK, dann dachte ich an PERL, wobei ich dann meinen Sessionmechanismus etc. manuell implementieren und über flat-files mit PHP kommunizieren müßte, aber gut. Nur wie funktioniert das ganze in PERL? auch da habe ich jetzt ne ganze Weile gesucht, ich finde auch da eine Möglichkeit wie ich im POST-Fall von STDIN die Daten einlese, dann müßte ich den String halt manuell parsen. Nur weiß ich hier nicht wie das mit einem(zwei) File-Upload funktionieren soll. Andere Variante ist mit CGI.pm, aber da finde ich keine Möglichkeit Parameter die gleiche heißen, was bei der multiplen Liste halt der Fall ist wenn mehr als ein Wert ausgewählt wird, auszulesen. Auch hier habe ich lange gesucht, wenn auch nicht so effektiv weil ich mich mit PERL noch nicht so vertraut bin.
Oder vielleicht doch ein ganz anderer Weg, kann ich es in Javascript schaffen, mit irgendeinem Trick die Werte aus dem multiple-SelectFeld anders als alle mit demselben Namen an den Server zu übermitteln? Oder wenigstens an die Namen [] anhängen? Vielleicht einen Umweg über Hidden-Fields oder was weiß ich? Oder kann ich das Feld doch irgendwie mit name[] benennen und trotzdem mit Javascript drauf zugreifen? Siehe auch: [pref:t=31294&m=169241]
So ein doofes Problem hatte ich glaube ich noch nie! Wegen so ner Kleinigkeit geht so viel Zeit drauf :-(
Hat vielleicht jemand irgendeinen Tipp?
Viele Grüße
Andreas
Hallo Andreas,
Bis hierher noch nicht wirklich spektakulär. Das Problem
wird durch Javascript verursacht. Das Multiple
Select-Feld(Listenfeld) wird durch ein Javascript gefüllt,
und Javascript ist leider sehr streng was die
Elementenamen angeht, zumindest ist kein Name wie
fledname[] erlaubt, was von PHP z.B. herrlich in einen
Array mit den einzelnen ausgewählten Werten als Elemente
umgesetzt würde.
Guten Morgen. *grummel* Archiv?
document['forms']['formname']['elements']['elementname']
ist aequevalent zu
document.forms.formname.elements.elementname
ist aequivalent zu
document.forms['formname'].elements['elementname']
Hat vielleicht jemand irgendeinen Tipp?
Benutz das naechste mal die Selfsuche!
Gruesse,
CK
Hallo Christian!
Guten Morgen. *grummel* Archiv?
Also das das Problem schon andere hatten konnte ich mir nicht vorstellen, ich hatte ja Google ne ganze Zeut gequält, aber dazu habe ich nichts gefunden. Es gibt einfach zu viele Seiten die den Upload allgemein erklären.
document['forms']['formname']['elements']['elementname']
ist aequevalent zu
document.forms.formname.elements.elementname
ist aequivalent zu
document.forms['formname'].elements['elementname']
:-))))))))))))))))))))))))))))))))))))
DANKE DIR!
Tut mir wirklich Leid, habe solche Postings anscheinend noch nie mitbekommen, naja. Habe insgesamt 5-6 Stunden nach einer Lösung gesucht und habe am Ende an einem Workaround über ein hidden-Field gearbeitet, aber so ist es natütlich erheblich schöner ;-)
Vielen Dank nochmals, hast ich erlöst!
Viele Grüße
Andreas
Hallo Andreas,
Guten Morgen. *grummel* Archiv?
Also das das Problem schon andere hatten konnte ich mir
nicht vorstellen
Merke: Grundsaetzlich hat schonmal jemand dasselbe Problem
gehabt. Ausnahmen bestaetigen die Regel.
ich hatte ja Google ne ganze Zeut gequält,
Selfsuche...
Gruesse,
CK