PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP für Fortgeschrittene und Experten (http://www.selfphp.de/forum/forumdisplay.php?f=13)
-   -   Temporäre Daten, mehrseitige Formulare (http://www.selfphp.de/forum/showthread.php?t=21389)

Exe0 30.04.2009 11:26:51

Temporäre Daten, mehrseitige Formulare
 
Hallo alle zusammen.

Da ich in diesem Forum noch neu bin, hoffe ich, dass ich gründlich genug recherchiert habe und diese Frage kein zweites Mal gestellt wird:

Die Aufgabe:
Ich möchte die Eingabe von Daten über mehrere Formulare und PHP-Seiten hinweg gestalten:

Seite 1: Kundendaten (Ergebnis soll beim Speichern in Datenbank "Kunden")
Seite 2: Mehrere Texte abhängig vom Kunden (Ergebnis soll beim Speichern in Datenbank "Texte")
Seite 3: Mehrere Dateien abhängig vom Kunden (Ergebnis soll beim Speichern in Datenbank "Dateien")
Seite 4: User muss sich entscheiden: Neuer Kunde speichern oder verwerfen. Ist speichern angesagt, erst dann werden die Daten in die entsprechenden Datenbanken gespeichert. Bei verwerfen werden sie einfach vergessen.

Der Ansatz:
Mein Ansatz war der, dass ich mit temporären Tabellen arbeiten könnte, aber in meinen Versuchen waren die temporären Tabellen nach dem Wechsel von Seite 1 zu Seite 2 weg und damit dann natürlich auch die Daten.

Der Weg über Session-Variablen erschien mir zu aufwendig, da ich für die entsprechenden Übersichtslisten und Sortierungen von Hand machen müßte und nicht bequem per SELECT.

Gibt es einen besseren Weg?

Vielen Dank und viele Grüße,
Axel.

Domi 30.04.2009 11:42:45

AW: Temporäre Daten, mehrseitige Formulare
 
Hallo und willkommen im Forum.

Du könntest das wie du schon gesagt hast einfach in eine noramel Tabelle reinschreiben die du speziell für so temporäre Sache hast. Ich würde hier nicht extra eine echt temporäre Tabelle verwenden, dann sollte es auch funktionieren.

Weiter kannst du auch per SESSION oder per POST (hidden fields) transportieren, sehe aber das Problem mit dem sortieren, welches du beschreibst, nicht.

Gruß
Domi

Exe0 30.04.2009 11:54:22

AW: Temporäre Daten, mehrseitige Formulare
 
Hallo Domi.

Ui, vielen Dank für die schnelle Antwort!

Das Problem mit einer normalen Tabelle ist, dass eine solche Eingabe auch von mehreren Usern gleichzeitig gemacht werden muss. Habe ich dann eine "normale temporäre Tabelle" und die wird dann von mehreren Usern gleichzeitig gefüttert, fürchte ich wohl Datenchaos bzw. gar zerstörte Daten.

Eventuell war die Struktur meines Vorhabens nicht ganz gut erklärt:

Wenn ich auf der Seite der Texte bin, dann erhalte ich zunächst eine Tabelle mit den bereits eingegebenen Texten. Dort klicke ich dann auf den Knopf "Neu" und füge einen weiteren Texteintrag hinzu. Nachdem ich gespeichert habe, lande ich wieder auf der Übersichtstabelle der Texte. Diesen Lauf kann ich sooft wiederholen, wie ich will, bis ich eben auf "Weiter" klicke und erst dann gelange ich zur Seite der Dateien.

Für die Darstellung der mehrspaltigen Daten möchte ich dem Benutzer die Möglichkeit geben nach verschiedene Spalten zu sortieren (Freigabe, Erstellungsdatum, Text, etc.). Das bedeutet, ich müßte die gesamten Daten für die Texte in einem mehrdimensionalen Array halten. Und von dort aus dann die Daten dann sortieren und ausgeben.

Wichtig ist auch noch, dass die gleichen Seiten auch für das Ändern eines bestehenden Kunden zum Tragen kommen sollen. Das heißt, ich habe einen bestehenden Datenbestand in einer Tabelle und "neue temporäre Datensätze", die ich bis zum Zeitpunkt des Speichers irgendwo halten muss. Mit einer temporären Tabelle könnte ich einfach per SELECT und JOIN eine gemeinsame Liste der normalen und temporären Tabelle erstellen und auch bequem per ORDER BY sortieren.

Würde ich das gleiche mit ARRAYs über die Session-Möglichkeit machen, dann müßte ich für das Anzeigen der Übersichtsliste eine Mischung aus den temporären Daten und den bereits existierenden Daten der Tabelle machen und das war genau der Punkt, der mir sehr aufwendig erschien.

Vielleicht ist mein Ansatz aber auch einfach nur zu kompliziert?

Grüße,
Axel.

Domi 30.04.2009 12:21:15

AW: Temporäre Daten, mehrseitige Formulare
 
Zitat:

Zitat von Exe0 (Beitrag 127277)
Das Problem mit einer normalen Tabelle ist, dass eine solche Eingabe auch von mehreren Usern gleichzeitig gemacht werden muss. Habe ich dann eine "normale temporäre Tabelle" und die wird dann von mehreren Usern gleichzeitig gefüttert, fürchte ich wohl Datenchaos bzw. gar zerstörte Daten.

speicher die user_id aus der SESSION dazu, dann klappt das, dazu ein timestamp oder die SESSEION-ID um die alten Datenmsätze zu löschen.

Zitat:

Zitat von Exe0 (Beitrag 127277)
Eventuell war die Struktur meines Vorhabens nicht ganz gut erklärt:

Wenn ich auf der Seite der Texte bin, dann erhalte ich zunächst eine Tabelle mit den bereits eingegebenen Texten. Dort klicke ich dann auf den Knopf "Neu" und füge einen weiteren Texteintrag hinzu. Nachdem ich gespeichert habe, lande ich wieder auf der Übersichtstabelle der Texte. Diesen Lauf kann ich sooft wiederholen, wie ich will, bis ich eben auf "Weiter" klicke und erst dann gelange ich zur Seite der Dateien.

Für die Darstellung der mehrspaltigen Daten möchte ich dem Benutzer die Möglichkeit geben nach verschiedene Spalten zu sortieren (Freigabe, Erstellungsdatum, Text, etc.). Das bedeutet, ich müßte die gesamten Daten für die Texte in einem mehrdimensionalen Array halten. Und von dort aus dann die Daten dann sortieren und ausgeben.

Wichtig ist auch noch, dass die gleichen Seiten auch für das Ändern eines bestehenden Kunden zum Tragen kommen sollen. Das heißt, ich habe einen bestehenden Datenbestand in einer Tabelle und "neue temporäre Datensätze", die ich bis zum Zeitpunkt des Speichers irgendwo halten muss. Mit einer temporären Tabelle könnte ich einfach per SELECT und JOIN eine gemeinsame Liste der normalen und temporären Tabelle erstellen und auch bequem per ORDER BY sortieren.

Würde ich das gleiche mit ARRAYs über die Session-Möglichkeit machen, dann müßte ich für das Anzeigen der Übersichtsliste eine Mischung aus den temporären Daten und den bereits existierenden Daten der Tabelle machen und das war genau der Punkt, der mir sehr aufwendig erschien.

Vielleicht ist mein Ansatz aber auch einfach nur zu kompliziert?

Grüße,
Axel.

Wie gesagt, würde das mit einer richtigen Tabelle dann machen.

Wie das mit den temporären Tabellen bei der MySQL ist kann ich dir nicht sagen wie lange die halten, kenne das nur von ORACLE.

Domi

//EDIT: du könntest es auch in die richtige DB speichern, dazu ein weiteres Feld mit der BenutzerID: "0" ist dann für alle sichbar, ID > 0 bedeutet nur für den Benutzer dessen ID drin steht.

Exe0 30.04.2009 14:30:17

AW: Temporäre Daten, mehrseitige Formulare
 
Hallo Domi.

Zitat:

Zitat von Domi (Beitrag 127280)
speicher die user_id aus der SESSION dazu, dann klappt das, dazu ein timestamp oder die SESSEION-ID um die alten Datenmsätze zu löschen.

Ok. Mal angenommen ich würde das so machen, dann würde ich z.b. einen Tabellennamen wie "Kunden_1234" rausbekommen. Ich kann aber vom CMS (Joomla) her nicht verhindern, dass ein User mehrfach eingeloggt wäre. In diesem Falle würde der dopplet eingeloggte User dann auch die Daten des anderen Users "zu Gesicht bekommen" und umgekehrt.

Der logische nächste Weg wäre dann die Session-ID mit dazuzunehmen. Dabei habe ich aber dann das Problem, dass ich im Falle eines Sessionverlustes nicht mehr weiß, welche der Tabellen noch in Gebrauch sind und welche nicht.

Zitat:

Zitat von Domi (Beitrag 127280)
Wie gesagt, würde das mit einer richtigen Tabelle dann machen.

Wie das mit den temporären Tabellen bei der MySQL ist kann ich dir nicht sagen wie lange die halten, kenne das nur von ORACLE.

Domi

//EDIT: du könntest es auch in die richtige DB speichern, dazu ein weiteres Feld mit der BenutzerID: "0" ist dann für alle sichbar, ID > 0 bedeutet nur für den Benutzer dessen ID drin steht.

Diese Idee kam mir auch schon, hier hätte ich aber auch das gleiche Eindeutigkeitsproblem wie bei dem Ansatz mit dem temporären Tabellennamen.

Wie funktionieren denn temporäre Tabellen in ORACLE?

Danke und grüße,
Axel

CeBe 26.05.2009 22:37:25

AW: Temporäre Daten, mehrseitige Formulare
 
Zitat:

Zitat von Exe0 (Beitrag 127281)
Ok. Mal angenommen ich würde das so machen, dann würde ich z.b. einen Tabellennamen wie "Kunden_1234" rausbekommen. Ich kann aber vom CMS (Joomla) her nicht verhindern, dass ein User mehrfach eingeloggt wäre. In diesem Falle würde der dopplet eingeloggte User dann auch die Daten des anderen Users "zu Gesicht bekommen" und umgekehrt.

Eine UserId sollte eigentlich immer eindeutig sein und selbst, wenn der User mit zwei Browsern eingeloggt ist, ist es trotzdem die selbe Person, sofern nicht jemand bösartig versucht hat sich als jemand anders einzuloggen.
Du solltest die ID übrigens nicht an den Tabellennamen anhängen, sondern eine Spalte in der Tabelle für die ID anlegen, anhand der du dann die Daten wieder selektierst.

Zitat:

Zitat von Exe0 (Beitrag 127281)
Der logische nächste Weg wäre dann die Session-ID mit dazuzunehmen. Dabei habe ich aber dann das Problem, dass ich im Falle eines Sessionverlustes nicht mehr weiß, welche der Tabellen noch in Gebrauch sind und welche nicht.

Wie schon gesagt, du benutzt eine Tabelle mit der ID und/oder der Session in einer zusätzlichen Spalte. Bei Sessionverlust sind logischerweise die Daten nicht mehr brauchbar, du kannst aber feststellen, welche Sessions noch existieren und dann alte Daten löschen.

Zitat:

Zitat von Exe0 (Beitrag 127281)
Wie funktionieren denn temporäre Tabellen in ORACLE?

Temporäre Tabellen sind hier definitv der falsche Ansatz, da diese dazu gedacht sind Daten in EINEM Aufruf zu verarbeiten. Zum Beispiel Sortierungen vorzunehmen, die nicht mit einem SELECT zu bewältigen sind.

MfG
Carsten


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:13:59 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.