php formcheck trotz dateiupload feld
cayaphas
- php
0 Cheatah0 Froschpopo0 wahsaga
Tach miteinander,
ich hab ein kleines grundsätzliches Problem bei einem Formular.
Mein Formular hat viele Felder welche ich logischerweise(bevor sie in die DB geschrieben werden) überprüfen muss. Jetzt ist es aber auch so, dass darunter ein Datei-Upload Feld ist. Möchte ich die Inputs serverseitig überprüfen hab ich natürlich das Problem mit dem Upload-Feld, dass die Datei sowieso erst hochgeladen wird (was ein unangenehmer zeitaufwand ist, aber es ist halt so). Wenn Fehler vorhanden sein sollten sollte ich die korrekt eingetragenen Werte ja wieder übergeben und ins Formular schreiben damit die inkorrekten geändert werden können.
Was mach ich aber mit der hochgeladenen Datei?
(die kann ich ja nicht mehr in das value Attribut schreiben)
Gibts da ne elegante Lösung?
Meine aktuelle Lösung ist:
Ich lade sie hoch und speichere sie zwischen. Ich merke mir den alten Dateinamen (schreibe sie in ein hidden Field) und gebe diesen Namen irgendwo bei dem jetzt leeren Dateiupload Feld an .. Wenn er die Datei noch ändern will, muss er eine neue angeben und dann halt die neue hochladen, und ich muss die zwischengespeicherte löschen.
Ich persönlich finde das keine besonders elegante Lösung, habt ihr vielleicht eine bessere Idee? Javascript würde ich gerne vermeiden.
Gruss
caya
Hi,
Was mach ich aber mit der hochgeladenen Datei?
speichern und Dir diesen Umstand merken.
Ich lade sie hoch und speichere sie zwischen. Ich merke mir den alten Dateinamen (schreibe sie in ein hidden Field) und gebe diesen Namen irgendwo bei dem jetzt leeren Dateiupload Feld an .. Wenn er die Datei noch ändern will, muss er eine neue angeben und dann halt die neue hochladen, und ich muss die zwischengespeicherte löschen.
Jupp. Vergiss nicht, den User darüber zu informieren, dass die Datei hochgeladen ist.
Ich persönlich finde das keine besonders elegante Lösung,
Wie viel eleganter soll's denn noch werden?
Cheatah
Das Zauberwort heißt AJAX
Ich muss aber ehrlich gestehen, dass ich persönlich das Upload auf der Folgeseite gemacht hätte. Das wäre dann die Seite nach erfolgreicher Übertragung.
Ich finde nämlich, zu einem Upload gehören zusätzliche Infos wie max. Größe, Dateitypen, Qualitätsrichtlinien etc. Das auf einer Seite mit weiteren Eingabemöglichkeiten unterzubringen finde ich sehr unschön.
Aber wenn du einzelne Teile zwischendurch abschicken möchtest, machst du das am besten Mit javascript und AJAX.
Mit JavaScript stellst du dann den Request der dann mit dem Server kommuniziert. Der Server liefert dir dann die entsprechenden HTML-Fragmente zurück anhand denen du dann z.b. mit CSS erfolgreich geätigte Eingabefelder unsichtbar machen kannst :)
Aber am einfachsten geht es wirklich mit zwei Seiten.
hi,
Das Zauberwort heißt AJAX
Das ist weniger Zauber- mehr Hype-Wort.
Zum Überprüfen _kann_ es hier helfen, wenn's verfügbar ist.
PHP _muss_ die Daten trotzdem prüfen. Also sollte auch ein Fallback implementiert sein, und das ist so wie beschrieben gut umgesetzt.
gruß,
wahsaga