Überschreiben und Erhalten von Datensätzen
TheFlu
- datenbank
1 Vinzenz Mai0 TheFlu0 Frank (no reg)0 TheFlu
Moin,
ich hab eine kleine Umfrage mit PHP und MySQL geschrieben und sie funktioniert prima.
Die Daten werden allderdings nicht mit einem INSERT-Befehl geschrieben, sondern mit einem UPDATE-Befehl. Das erfordert mein Tabellenlayout und auch wenn das nicht optimal ist ändert das nichts an der Struktur des Problem.
Mir ist das aufgefallen als jemnad bei mir gefragt hat ob er die Umfrage in mehreren Schritten (es geht um Texte die man über seine Mitschüler schrieben soll) machen kann.
Wenn ich man aber mit den normalen Updatebefehl noch mal die selben Datensätze beschreibt dann überschreibt man sie automatisch!
Und auch wenn Eingabenfelder leer gelassen werden, weil sie beispielsweise im Schritt vorher bearbeitet wurden, werden diese leer überschrieben.
Gibt es eine Möglichkeit alte Datensätze zu belassen und nur wenn es eine Änderung gibt, dann den Datensatz zu überschreiben?
Hallo
Wenn ich man aber mit den normalen Updatebefehl noch mal die selben Datensätze beschreibt dann überschreibt man sie automatisch!
Und auch wenn Eingabenfelder leer gelassen werden, weil sie beispielsweise im Schritt vorher bearbeitet wurden, werden diese leer überschrieben.
korrigiere Deine Fehler in Deinem Skript.
Um Dir konkret helfen zu können, wird Quellcode benötigt!
Freundliche Grüße
Vinzenz
Es ist kein Codeproblem, der funktioniert.
http://theflu.th.funpic.de/Bilder/Datenbank.JPG
Es liegt viel mehr in der Art wie die Zugriffsbefehle von PHP auf MySQL wirken. "Update" und "Insert" sind ganz normale Standartbefehle
die auf bestimmte Art die Datenbank verändern.
Speziell geht es um den Updatenbefehl. Man gibt ihm genau an welchen Datensatz er wie ändern soll.
In meinem Fall werden pro Durchlauf mehrere Datensätze geändert.
(Das was auf dem Bild bei Fall A rot markiert ist)
Update Name 3 set Namen auf der Y-Achse = "Einträge aus dem Eingabefeld"
Angenommen ein Benutzter schafft es nicht die Umfrage zu beenden und schreibt nur zu 2 von 4 Leuten etwas (siehe Fall B) und er möchte die Umfrage zu einem anderen Zeipunkt wieder aufnehmen, dann ist der Updatebefehl so konstruiert das er, wenn er leere Eingabefelder an der Stelle "Einträge aus dem Eingabefeld" hat, dass er dann die entsprechenden Stellen in der Datenbank ebenfalls mit "leer" überschreibt (anders ausgedrückt: löscht).
Die Frage ist jetzt ob man dagegen was unternehmen kann, indem man sagt: >>Überschreibe nur da wo du neue Informationen hast<<
Soweit so gut^^
P.S. Ich merke schon wieder wie mir der ungünstige Aufbau der Datenbank Probleme macht, aber das Ding war schon fast fertig als ich bemerkte das ich das im Sinne von Datenbanknormalisierung hätte aufbauen müssen(ID | Schreibender | Beschriebener), dann hätte ich auch das jetztige Problem nicht^^.
http://theflu.th.funpic.de/Bilder/Datenbank.JPG
Hi,
Es ist kein Codeproblem, der funktioniert.
Diese Behauptung ist schon mal das erste Problem. ;) Wenn der Code (so) funktionieren würde (, wie er sollte), dann würdest du hier nicht nach einer Lösung für dein Problem fragen.
Und Vinzenz brauchst du ganz sicher nicht erklären, wie man Updates und Inserts benutzt. ;)
P.S. Ich merke schon wieder wie mir der ungünstige Aufbau der Datenbank Probleme macht, aber das Ding war schon fast fertig als ich bemerkte das ich das im Sinne von Datenbanknormalisierung hätte aufbauen müssen(ID | Schreibender | Beschriebener), dann hätte ich auch das jetztige Problem nicht^^.
Doch, hättest du höchstwarscheinlich genauso. Das Thema Datenbanknormalisierung hat hier überhaupt nix damit zu tun, du hast (auch) den Prozess drumherum verkorkst aufgebaut.
Warum lädst du nicht mit dem Formularscript die bestehenden Daten einfach erstmal in die Formularfelder, dann würdest du (rein spekulativ) dieselben Daten wieder in die DB schreiben.
Und nochmal (im Klartext): Kein Quellcode = Keine Hilfe. Der Umkehrschluss gilt jedoch nicht zwingend.
Ciao,
Frank
Warum lädst du nicht mit dem Formularscript die bestehenden Daten einfach erstmal in die Formularfelder, dann würdest du (rein spekulativ) dieselben Daten wieder in die DB schreiben.
Das ist ne prima Idee! Werd ich ausprobieren. Danke