PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Neueintrag in MySQL ohne den alten Eintrag zu überschreiben


alaska
06.08.2003, 11:15:26
Hallo liebe Listenteilnehmer,

ich möchte einem bereits vorhandenen Eintrag in einer MySQL-Tabelle einen Eintrag hinzufügen, ohne daß die alten Werte überschrieben werden.

Derzeit:
Der User kann seine Beiträge bearbeiten. Er bekommt durch einen Link seine bisherigen Einträge auf den Bildschirm und kann an dieser Stelle Änderungen und Ergänzungen machen. Die bisherigen Werte werden nun überschrieben, die alten Einträge sind natürlich verschwunden.

Wunsch:
Die alten Werte sollen auch weiterhin erhalten bleiben, die Neueinträge also in einer neuen Zeile direkt darunter angezeigt werden.


Kann mir jemand weiterhelfen? Ich habe schon gegoogelt ohne Ende - leider ohne Erfolg.

Frohes Schwitzen noch!

diver-network
06.08.2003, 11:32:11
Hi,

wenn ich Dich richtig verstanden habe versuchst Du folgendes:

alte Anzeige: Beitrag1: asdf
neue Anzeige: Beitrag1: asdf
Beitrag2: asdfghi

Falls dem so ist geht es mit einem einfachen UPDATE auf die Spalte nicht, da ansonsten der Beitrag1 verloren ginge.
Die Lösung liegt hier im Datenbankdesign (vereinfacht):
Tabelle 1: Userdaten
Tabelle 2: Beiträge, u.a. mit Spalten beitrags_id, user_id, beitrag und ursprungsbeitrags_id.

Obige Einträge würden also DB technisch so aussehen (in Tabelle 2):

beitrags_id = 1
user_id = 1
beitrag = asdf
ursprungsbeitrags_id = NULL (KEIN Eintrag)
beitrags_id = 2
user_id = 1
beitrag = asdfghi
ursprungsbeitrags_id = 1 (von oben)



Solltest Du nur Beitrag 2 anzeigen wollen, den Beitrag 1 aber in der DB behalten müssen/wollen bietet sich eine Lösung mit einem Schalter an. Hänge hierzu in Deine Tabelle mit den Beiträgen einfach noch ein Feld "freigegeben" mit INT(1) und einem Default- Wert von 1 an. Wenn der Wert 0 beträgt wird der Beitrag nicht angezeigt, bei 1 kommt er. Dies kannst Du natürlich schon in der SQL- Abfrage eingrenzen.



Fürs erste hoffe ich mal, Dir geholfen zu haben. Ansonsten melde Dich wieder hier im Forum,

Andy Maurer, der in einem gut gekühlten Büro sitzt ;-)

alaska
07.08.2003, 08:59:04
Hi Andy
vielen Dank für Deine prompte Hilfe. Ich werde mal probieren, Deinen Vorschlag mit den zwei Tabellen umzusetzen.

In der Zwischenzeit habe ich eine (zugegeben etwas halbherzige) Lösung gefunden.
Ich überschreibe nun den alten Eintrag nicht mehr per UPDATE sondern lasse einen ganz neuen Eintrag per INSERT INTO mit neuer ID erzeugen.

Jetzt muß ich aber noch bei der SELECT Abfrage die zusammengehörigen Beiträge untereinander auflisten - ein neues Problem, daß ich in einem extra Thread schildern werde.

Vielen Dank nochmal!
Schicke Dir ein großes kühles Bierchen rüber ;-)

Stefan

diver-network
07.08.2003, 11:31:28
Hi Stefan,

danke für das Bier. Werd' ich gleich austrinken ;-)

Nochmal zu Deinem Ursprungsproblem:
Eventuell solltest Du Dir das gesamte DB Design noch mal überdenken, bevor Du weiter programmierst. Lieber ein paar Tage an der DB rum"basteln", als hinterher wenn Daten drin sind noch mal alles verändern müssen, weil man etwas vergessen bzw. nicht beachtet hat.

Wie auch immer, ich mach jetzt Mittag und trink Dein Bier.

Andy Maurer

P.S.: Werd nachher mal Deine andere Frage anschauen

alaska
07.08.2003, 11:45:48
Hi Andy,

da kann ich ein Lied von singen - wenn man hinterher noch etwas verändern muß, kann alles noch viel komplizierter werden. Genau an dem Punkt bin ich nämlich gerade angelangt. Das Projekt ist eigentlich schon fix und fertig und läuft auch prima, da hat der Auftraggeber Änderungswünsche, die den bisherigen Aufbau über den Haufen werfen. Dabei habe ich klipp und klar gesagt, wann welche Entscheidungen stehen müssen. Da könnte man kotzen ...

Ja und jetzt muß ich schauen, wie ich vorgehe, denn Zeit gibt man mir eigentlich keine mehr. Prima. Also suche ich nach einer schnellstmöglichen Lösung.

Wenn ich meine SELECT Abfrage lösen kann, werde ich es für dieses Projekt erst einmal so belassen - zur Verbesserung des ganzen kann ich dann nochmal alles neu aufziehen.

Grüße und Thanks!
Stefan