• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

auto_increment Nummer auslesen

Status
Für weitere Antworten geschlossen.

Sn0opy

Neues Mitglied
'auto_increment' Wert auslesen

Heyho,

ich sitze momentan an einem kleien Forum. Mein Problem ist nun. Es gibt ja 2 Tabellen für Posts und Threads (macht eigentlich jedes Forum so). In der Thread-Tabelle trag ich das Topic, den Ersteller, und die ID des ersten Posts ein. Naja, indirekt. Die ID vom Post soll selbst eingetragen werden. (Näheres gleich dazu)

In der Post Tabelle wird somit dann der Rest eingetragen. Topic, Text, Userid, Zeit, Threadid. Hier besteht nun wieder ein Problem, dass die Threadid mit eingetragen muss, damit ich später die Antworten einem Thread zuordnen kann.

Nun das eigentliche Problem. Thread und Post Eintrag passieren zur selben Zeit, was ja auch logisch ist. Es muss allerdings die neuste Threadid mit dem Post übermittelt werden und es muss auch die aktuelle Postid mit dem Thread übermittelt werden, damit eben 1. Post = Thread habe.


So, ich hoffe das ganze war nun verständlich genug :D Was ich nun eben brauche ist ein Befehl, damit ich direkt auslesen kann, welcher Auto-Wert als nächstes kommt. Was natürlich auch möglich wäre, wenn ihr mir einen besseren Weg dafür nennen könntet.
 
Zuletzt bearbeitet:
Nimm für jeden Thread eine neue Threadid und ordne jedem Post diese entsprechend zu.


Als Primary Key kannst du das dann aber nicht mehr verwenden ;)
 
Ja, das is doof. Ich will ja ne fortlaufende Zahl haben und nicht immer eine Random-ID generieren. Es wäre ne Möglichkeit, aber ist ehrlich gesagt nicht ganz das Wahre. Hätte schon gerne fortlaufende Zahlen.

//Edit: Ok, hier ist noma ne Grafik um das ganze noch mal zu verdeutlichen.

testqKAv5L.png

(Die Zahlen stimmen nun nicht. Die Pfeile sollen nur darstellen, was wo rein muss)


threadid und postid sind jeweils die fortlaufenden Zahlen.
 
Zuletzt bearbeitet:
Ich glaub, du hast mich nicht verstanden.


Du nimmst einfach bei Threadid die id als Primary Key mit fortlaufenden Nummern. Bei den Posts sind die Nummern dann nur nciht mehr fortlaufend, da brauchst du eine andere Zeile als Primary Key.
 
Ok, so wie ich das nun verstanden habe, würdest du in beiden Tabellen "threadid" als Primary Key mit fortlaufender Zahl wählen, oder? Dann verstehe ich allerdings nicht mehr, wie ich die beiden Tabellen miteinander verbinden muss :\ Irgendein Beispiel, wo man sich das genauer anschauen könnte, wäre evtl. ganz praktisch :\
 
Also:

Threads:
id -> primary key -> auto_increment

Posts:
id -> primary key -> auto_increment
threadid -> die id des threads, zu der der Post gehört
 
Jahaaa, da is nun das Problem :D Um nun "threadid -> die id des threads, zu der der Post gehört" auszuführen, müsste ich ja abfragen, welche ID der Thread denn nun grad bekommen hat. Gibts da was spezielles, oder muss ich das dann doch mit ner Query machen und eben die id mit anderen Dingen abfragen?

//Edit: Ich schau mir eben erstma die Bilder an, hatte sie erst nach meinem Post gesehen.
 
Wenn du den Thread gerade erstellst musst du 3 Abfragen machen.
PHP:
//Für den Thread
mysql_query("INSERT INTO threads ([..]) VALUES ([..])");
//Dann die Id hohlen
list($threadid) = mysql_fetch_array(mysql_query("SELECT threadid FROM threads ORDER by threadid DESC LIMIT 1"));
//Dann den Post schreiben
mysql_query("INSERT INTO posts (threadid,[..]) VALUES ({$threadid},[..])");

Wenn das Thema schon existiert sollte das ja noch weniger Probleme machen, denn wenn der User das Thema aufruft muss er ja übergeben welches Thema aufgerufen wird. Das kannst du ja dann gleich nehmen als threadid
 
Ich bin jetzt leider erst noma weg, werde das nachehr aber testen und dann mein Feedback hier abgeben. Könnt also spätestens gegen 21 Uhr noma reinschauen :)

Danke schonma
 
Woah super, genau das, was ich gesucht habe! :D Einziges Problem wäre nun nur, dass ich nun bei 3 Querys bin. Die erste trägt das ganze in die Thread-Tabelle ein, die zweite holt sich dann den Wert vom auto_increment, der gerade benutzt wurde und setzt ihn dann bei der 3. als Threadid ein.

Nun müsste ich das ganze aber nochmal machen, damit auch bei den Posts die Threadid mit drin ist. Allerdings hab ich mir ma die beiden Screens von Frank angeschaut und er scheint das ganze nicht zu brauchen. Ich will mir nun nicht die ganze Arbeit abnehmen lassen, aber wie müsste denn dann die Ausgabe sein, wenn ich z.B. die Threadid "5" abfrage, wie genau holt er sich dann die entsprechenden Posts dazu? (Die Frage ist evtl. auch speziell nur an Frank gerichtet)
 
Hallo,

den zweiten Query kannst du dir wie geschrieben sparen. Die Variante von Frank hat möglicherweise auch ein Problem. Wenn das Script durch ein Prozesswechsel unterbrochen wird und währenddessen ein anderes Programm/Script etwas einträgt. Wird das Script dann fortgesetzt kann sich bereits ein weiterer Eintrag in der Thread-Tabelle befinden. Wird wahrscheinlich in der Regel nicht eintreten, aber ausschließen kann man es nicht. Über mysql_insert_id wird sichergestellt, dass nur die INSERT Anfragen von der im Script verwendeten Verbindung mit einbezogen werden.

@auslesen:
Code:
SELECT * FROM posts WHERE threadid = '$id';
Das kannste dann noch nach postid sortieren lassen, damit die Posts in der richtigen Reihenfolge ausgegeben werden.


N43
 
... ihr solltet euch mal alle HeidiSQL angewöhnen :) ;Jump

Naja, das bringt aber nichts, wenn man später in der Schule eher mit phpmyadmin arbeiten wird und die Befehle dann kennen sollte. Genauso isses, wenn man später im Beruf mal damit zu tun haben wird und dann diese Programm braucht, weil man nichts anderes kennt ;)
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben