Hi,
ich habe ein etwas kompliziertes Problem.
Ich habe eine kleine Benutzerverwaltung. Diese läuft über eine DB. Ich kann neue Benutzer eintragen und bereits vorhandene ändern.
Die DB besteht aus 3 Tabellen:
---------------------
Benutzer
BenutzerID
Name
Vorname
AnschriftenID
KommentarID
----------------------
----------------------
Anschriften
AnschriftenID
Strasse
PLZ
----------------------
----------------------
Kommentar
KommentarID
Kommentar
----------------------
Das Eintragen neuer Benutzer erfolgt über ein Formular. Dafür wird erst die Anschrift eingetragen und per mysql_insert_id() die AnschriftID zurückgegeben. Wurde ein Kommentar eingefügt, dann wird dieses wie bei der Anschrift zuerst in die Tabelle Kommentar eingefügt und die KommentarID mit mysql_insert_id() zurückgegeben. Ein Kommentar ist aber kein Pflichtfeld, das heisst, wird kein Kommentar eingegeben, dann steht in der Tabelle Benutzer einfach nur der Wert 0 in der Spalte KommentarID.
Das klappt auch alles wunderbar, doch nun zum Problem.
Es besteht ja auch die Möglichkeit, Benutzerdaten zu ändern. Dafür erscheint dann wieder das Formular, mit den ausgelesenen Werten. Ändere ich nun einen Wert, dann benutze ich natürlich den update Befehl.
Das Problem besteht nun mit dem Kommentarfeld.
Ich habe das so gelöst:
Wenn es bisher keinen Kommentareintrag gab, ich nun aber das Feld ausgefüllt habe, erfolgt ein INSERT in ....
Nun brauche ich natürlich die KommentarID als Rückgabewert, um diese nun in die Tabelle Benutzer einzufügen. (Vorher stand da ja 0 drinn)
Es passiert aber folgendes. Das Formular mit den Werten erscheint. Kommentarfeld ist leer. Nun fülle ich das aus und schicke das Formular ab. In der Datenbank erfolgt der Eintrag des Kommentars in die Tabelle Kommentar, aber die zurückgegebene KommentarID wird nicht in die Tabelle Benutzer eingetragen. Dies geschieht erst, wenn ich das Formular ein zweites Mal abschicke.
Nach dem "Insert in Kommentar..." und dem $KommentarID=mysql_insert_id()
habe ich einen:
Warum wird dies erst ausgeführt, wenn ich das Formular ein zweites Mal abschicke. Was mache ich falsch und wie wäre es richtig?? Bin echt am Verzweifeln und suche nun schon seit Stunden nach einer Lösung. Ich hoffe jemand hat eine Idee.
ich habe ein etwas kompliziertes Problem.
Ich habe eine kleine Benutzerverwaltung. Diese läuft über eine DB. Ich kann neue Benutzer eintragen und bereits vorhandene ändern.
Die DB besteht aus 3 Tabellen:
---------------------
Benutzer
BenutzerID
Name
Vorname
AnschriftenID
KommentarID
----------------------
----------------------
Anschriften
AnschriftenID
Strasse
PLZ
----------------------
----------------------
Kommentar
KommentarID
Kommentar
----------------------
Das Eintragen neuer Benutzer erfolgt über ein Formular. Dafür wird erst die Anschrift eingetragen und per mysql_insert_id() die AnschriftID zurückgegeben. Wurde ein Kommentar eingefügt, dann wird dieses wie bei der Anschrift zuerst in die Tabelle Kommentar eingefügt und die KommentarID mit mysql_insert_id() zurückgegeben. Ein Kommentar ist aber kein Pflichtfeld, das heisst, wird kein Kommentar eingegeben, dann steht in der Tabelle Benutzer einfach nur der Wert 0 in der Spalte KommentarID.
Das klappt auch alles wunderbar, doch nun zum Problem.
Es besteht ja auch die Möglichkeit, Benutzerdaten zu ändern. Dafür erscheint dann wieder das Formular, mit den ausgelesenen Werten. Ändere ich nun einen Wert, dann benutze ich natürlich den update Befehl.
Das Problem besteht nun mit dem Kommentarfeld.
Ich habe das so gelöst:
Wenn es bisher keinen Kommentareintrag gab, ich nun aber das Feld ausgefüllt habe, erfolgt ein INSERT in ....
Nun brauche ich natürlich die KommentarID als Rückgabewert, um diese nun in die Tabelle Benutzer einzufügen. (Vorher stand da ja 0 drinn)
Es passiert aber folgendes. Das Formular mit den Werten erscheint. Kommentarfeld ist leer. Nun fülle ich das aus und schicke das Formular ab. In der Datenbank erfolgt der Eintrag des Kommentars in die Tabelle Kommentar, aber die zurückgegebene KommentarID wird nicht in die Tabelle Benutzer eingetragen. Dies geschieht erst, wenn ich das Formular ein zweites Mal abschicke.
Nach dem "Insert in Kommentar..." und dem $KommentarID=mysql_insert_id()
habe ich einen:
PHP-Code:
Update Benutzer SET KommentarID='$KommentarID' WHERE BenutzerID='$BenutzerID'
Kommentar