Moin!
was @@identity betrifft, so hast du recht...
ich hatte das in anderer (falscher) erinnerung...nun zu der frage warum ich das brauche:
es wird ein file auf den webserver geladen, dessen url in der datenbank zum zugehörigen datensatz gespeichert wird...
Wahrscheinlich ist dir die richtige Vorgehensweise nur noch nicht eingefallen. :)
Mal konkret überlegt: Wenn du eine Datei, die Bestandteile eines Datensatzes sein soll, hochlädst, dann hast du zwei Möglichkeiten:
a) Datensatz und Datei getrennt übertragen
b) Datensatz und Datei _gemeinsam_ übertragen
Bei Methode a mußt du, da es sich um zwei getrennte HTTP-Requests handelt, dem einen Request irgendwie mitgeben, dass er einen Bezug zum anderen Request herstellt. Also: Entweder lädst du zuerst die Datei hoch und gibst als erfolgreiche Ergebnisseite eine aus, in der im Formular für die weiteren Datensätze der _temporäre_ Dateiname der erfolgreich hochgeladenen Datei enthalten ist, oder es läuft umgekehrt, und zuerst wird der restliche Datensatz abgefragt, und als Ergebnisseite kommt das Upload-Formular, welches die erzeugte Datensatz-ID enthält, um die Daten dann zuordnen zu können.
Beide Methoden haben ein Problem: Der zweite Request kann scheitern oder einfach nicht stattfinden, weshalb du entweder einen dateilosen Datensatz in der Datenbank hast, oder eine datensatzlose temporäre Datei, die niemals umbenannt wurde.
Deshalb ist es schlauer, die Daten für einen Datensatz in einem einzigen Formular abzufragen. Dann siehst du, ob der Upload geklappt hat und kannst im Fehlerfall entsprechend handeln, und im Erfolgsfall Datensatz und Datei als Einheit speichern.
man könnte nat. erst den datensatz in die datenbank schreiben und dann das file kopieren, allerdings kann während des file uploades ein fehler entstehen (unzulässiges file, datenabrruch,...) so das file nicht korrekt hochgeladen wurde, der datensatz steht nun aber schon in der datenbank und man müsste ihn extra nochmal löschen...
was nat. auch kein problem wäre, allerdings hatte ich gedacht das es mit der vorher-id-bekommen methode eleganter wäre
In Datensatz-IDs entstehen zwansgläufig Lücken. Das ist keine Schande, sondern normal.
- Sven Rautenberg
Signatur oder nicht Signatur - das ist hier die Frage!