php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Mehrseitiger Erfassungsdialog


 
yezariel
03-02-2003, 09:51 
 
Moin!

Ich habe einen Kunden, der gerne mehrseitige Erfassungsdialoge für seine Daten hätte. Die Daten wandern am Schluss alle in jeweils einzelne Tabellen. Z.B. gibt es eine Tabelle "mitarbeiter" und für die gibt es einen 5-seitigen Erfassungsdialog.

Ich dachte mir ich kann das ja über Sessions lösen. Aber da ergeben sich gleich einige Fragen:

a) Welche Datenmengen kann ich in Sessions speichern? Es gibt z.B. auch einige Textfelder in den Tabellen, die relativ große Datenmengen speichern sollen. Geht das dann überhaupt mit den Standard-Sessionfunktionen?

b) Welche anderen Lösungsansätze könntet Ihr euch vorstellen? Wäre eine temporäre DB-Tabelle sinnvoll? Oder soll ich die Daten nach jeder Maske vielleicht in Textdateien zwischenspeichern?

Ich möchte keine fertigen Lösungen, nur vielleicht ein paar Ansätze wie man sowas lösen könnte.

Für Tipps wäre ich extrem dankbar.

Gruss

Yezariel

 
TBT
03-02-2003, 10:28 
 
In die Standard Sessions passt schon jede Menge rein, ist ja Datei basiert.
Man sollte aber aus Performancegründen nur bis zu 4 KB drin speichern.
Wenn ich aber deine Anforderungen so höre, würde ich eine "Erfassungstabelle" machen, wo du Stückchenweise die Daten der einzelenen erfassten Seiten einträgst. Zum Ende nochmal ein "Stimmen diese Daten so ?" an den User, und dann ein "insert into tab ( ... ) select ... from erfassungstabelle"

 
yezariel
03-02-2003, 11:08 
 
Aha. Sowas hatte ich mir auch schon gedacht. Mein Problem war halt dabei, dass ich dann alle Tabellen für die das in Frage kommt doppelt anlegen muss. Aber im Grunde tut das ja nicht weh weil ich den Satz, den ich dann in der "richtigen" Tabelle speichere ja aus der "Zwischentabelle" wieder rauslöschen kann...

Ich denke ich mach's so.

Wenn jemand noch andere Ideen hat, kann er die ja gerne hier posten. Vielleicht haben andere ja auch das Problem. :)

Danke für den Tipp! :)

Gruss

Yezariel

 
wahsaga
03-02-2003, 11:16 
 
also ich finde sessions sind auf jeden fall die elegantere lösung.
und vier kilobyte kriegst du doch über ein einfaches formular nie zusammen (dateiupload jetzt mal aussen vor), so viel text gibt doch kein mensch irgendwo ein...

Mein Problem war halt dabei, dass ich dann alle Tabellen für die das in Frage kommt doppelt anlegen muss. Aber im Grunde tut das ja nicht weh weil ich den Satz, den ich dann in der "richtigen" Tabelle speichere ja aus der "Zwischentabelle" wieder rauslöschen kann...

Wenn jemand noch andere Ideen hat, kann er die ja gerne hier posten.
andere möglichkeit wäre:

du baust in jede tabelle noch ein kennzeichen für temporäre sätze ein.

dann speichert du jede eingabe erstmal auf der folgeseite in die jeweilige tabelle, mit dem kennzeichen für 'temporär' gesetzt.

am ende gibst du nochmal alles aus, wenn es ok ist, löschst du dann bei den entsprechenden sätzen in den tabellen das temporär-kennzeichen und die sätze sind somit 'freigeschaltet'.
andernfalls pustest du die sätze mit temporär-kennung einfach wieder aus der db raus...

 
yezariel
03-02-2003, 11:23 
 
YES!! :) 100 Punkte! :)

Ich glaube diese beiden Lösungen gefallen mir besser weil mein Datenbankkonzept auf diese Weise nicht so unübersichtlich und aufgebläht wird. Die Sache mit den Sessions ist vielleicht doch nicht wirklich so schlecht. 4 KB hört sich so wenig an heutzutage... :) Und das mit den Kennzeichen ist eigentlich auch genial... Jetzt muss ich mich nur noch entscheiden. :)

Danke!

Gruss

Yezariel

 
wahsaga
03-02-2003, 11:57 
 
bei der lösung mit dem kennzeichen musst du dir nur noch ein paar zusätzliche gedanken machen, was ist wenn der user vor dem beenden deiner aktionen aussteigt?

dann hast du zum teil noch temporäre datensätze von den vorhergehenden seiten in deinen tabellen, die willst du ja nicht ewig drin haben, musst du also irgendwann löschen.

allerdings darfst du auch nicht rigoros immer sofort alle temporären sätze killen, denn vielleicht ist ein anderer user ja gerade mitten in der bestellung, dem schiesst du dann die daten einfach weg...


aber z.b. immer alle temp-sätze löschen, die älter als eine stunde sind, wäre eine akzeptable lösung.

 
yezariel
03-02-2003, 14:07 
 
Jep, ich hab mir schon meine Gedanken gemacht, wie ich das dann anstelle. Ich glaube ich finde die Lösung mit der Session doch am besten. Dann muss ich nicht so viel auf der Datenbank rumrödeln und hab auch nachher keinen Datenmüll dort rumliegen. Ich glaube das ist die bessere Lösung... irgendwie. :)

Danke!

Gruss

Yezariel


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:33 Uhr.