Dateiupload und Formulardaten

port29

deus.Server
Hallo Leute,

ich brauche mal einen Denkanstoss, wie ich ein Formular Client und Serverseitig am besten realisiere.

In dem Formular füllt der Nutzer oben ein paar Felder aus und unten kann er anschließend noch ein paar Files hochladen. Und ganz am Ende gibt es wieder ein paar Felder. Um das Hauptformular abzuschicken, muss der Benutzer mindestens eine Datei hochladen.

Bisher ist alles bei mir ein einziges Formular. Mit dem Upload Knopf habe ich eine JS Funktion verknpüft, die ein hidden Input Feld auf 1 setzt. Anhand dieses Feldes stellt der Webserver dann fest, dass eben dieser Knopf gedrückt wurde. Anderenfalls wird das Formular Programm abgespielt.

Meine Lösung funktioniert zwar, aber ich halte sie nicht für das Gelbe vom Ei. Deshalb wollte ich mal fragen, wie ihr das machen würdet.
 
Hi,

Javascript würde ich da nur für die Bequemlichkeit einsetzen. D.h. wenn Eingaben fehlen, das Formular gar nicht erst abschicken, sondern eine Meldung ausgeben. Serverseitig musst Du sowieso alle Bedingungen nochmal prüfen. Dabei würde ich das hidden field übrigens weglassen. Das kann clientseitig manipuliert werden. Prüfe doch einfach gleich, ob mindestens eine Datei hochgeladen wurde.

LG
 
ich auch nicht.
aber aufjedenfall hat kuddeldaddeldu recht wenn er meint das JS nur der bequemlichkeit dient. Du kannst/musst alles serverseitig nochmal überprüfen.
 
Ich glaube, Du musst den Aufbau Deines Formulars nochmal genauer beschreiben, den Einwand verstehe ich nämlich nicht.

Okay, ich versuche es nochmal.

Also Formular:

Name
Vorname

Bereits hochgeladene Dateien
Dateiupload + Upload Button

Text
Submit Button


Der User füllt das Formular oben erstmal aus. Dann befindet er sich an der Stelle, wo er die Datei hochladen kann. Er wählt eine Datei aus und klickt auf den Submit Button. Die Daten werden an den Server geschickt und das Formular baut sich neu auf, diesmal mit den bereits ausgefüllten Formularfeldern und unter den bereits hochgeladenen Dateien erscheint dann der Dateiname der ersten Datei. Jetzt kann der User eine weitere Datei hochladen oder das Formular endgültig abschicken.

Die Herausforderung besteht in dem Herausfinden, welcher Button gedrückt wurde. Der Hochladen Button darf das Formular nicht endgültig abschicken.
 
Ach so, Du hast zwar ein Formular, aber zwei Buttons zum Abschicken, die unterschiedliche Aktionen auslösen sollen?

Welcher Button gedrückt wurde, kannst Du serverseitig doch auch direkt abfragen (reden wir diesbezüglich eigentlich von PHP?). Ob schon Dateien hochgeladen wurden, würde ich in einer Sessionvariablen speichern.

LG
 
Ach so, Du hast zwar ein Formular, aber zwei Buttons zum Abschicken, die unterschiedliche Aktionen auslösen sollen?

Ja, aber noch lustiger... diese "Buttons" sind Texte, die ein Submit() des Formulars auslösen.

Welcher Button gedrückt wurde, kannst Du serverseitig doch auch direkt abfragen (reden wir diesbezüglich eigentlich von PHP?).

Naja, eigentlich reden wir hier von RoR, aber die serverseitige Sprache sollte jetzt das kleinste Problem sein. Alles, was an den Server übertragen wird, kann man auch auslesen
 
Hi,

Ja, aber noch lustiger... diese "Buttons" sind Texte, die ein Submit() des Formulars auslösen.

Also auch per Javascript (onclick). Finde ich persönlich jetzt unschön, aber wenn's so sein soll. Du könntest es aber ohne Javascript nutzbar machen, indem Du z.B. normale submit-Buttons einbaust, diese onload auf display:none setzt und bei Klick auf den Textbutton (den Du bei aktiviertem JS onload erst einblendest) per Javascript klickst, statt das Formular direkt abzuschicken. Dann kannst Du serverseitig auch abfragen, durch welchen Button das Formular abgesendet wurde.

LG
 
wenn die buttons nichts anderes als ein form.submit() aufrufen kannst du auch submit buttons nehmen, dessen werte kannst du serverseitig auslesen. wenn du noch mehr machst kannst du in deiner function noch parameter hnzubasteln.

ansich find ich submit buttons jedenfalls besser. mit den eventhandler der form-input felder kannst du dann immer noch JS funktionen ausführen und ggf verhindern das
das formular abgeschickt wird.
 
Zurück