• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

"Letzte Antwort von..." ausgeben

moneymeyer

New member
Hallo,

ich habe ein einfaches Forum.

Dieses besteht u. a. aus den zwei Tabellen:
Threads (mit den Spalten ID, Titel, Username, Datum, Zeit, Mitteilung, Klicks, Antworten und BoardID) und
Replys (mit den Spalten, ID, Username, Datum, Zeit, Mitteilung, BoardID und ThreadID)

Mit einer Schleife lasse ich mir wie ihr sicherlich sehen könnt die verschiedenen Themen, inkl. Titel, Autor und Erstelldatum und -zeit ausgeben.

Nun möchte ich, zusätzlich auch noch "Letzte Antwort von... am..." ausgeben. Leider weiß ich nicht, wie man dies anstellen könnte und ihr würdet mir sehr helfen, wenn ihr mir die SQL Anweisung inkl. der Schleife schreiben könntet.

Danke!!

Ach ja. Natürlich möchte ich die Themen dann nach "letzte Antwort nach oben" sortieren, nicht mehr wie bisher nach dem Erstelldatum bzw. nach der ID.

Hier ist die Schleife:

PHP:
<?php

...

$query="Select * from forum_threads where thread_boardid='".$_GET['boardid']."' order by thread_id DESC";
$result=mysql_query($query);

...

while($row = mysql_fetch_array($result)) {
echo"<tr><td ><a href=\"replys.php?boardid=".$_GET['boardid']."&threadid=".$row['thread_id']."\">".$row['thread_title']."</a></td>";
echo"<td >".$row['thread_date']."<br>".$row['thread_time']." Uhr</td>";
echo"<td ><div align=\"center\">".$row['thread_username']."</div></td>";
echo"<td ><div align=\"center\">".$row['thread_clicks']."</div></td>";
echo"<td ><div align=\"center\">".$row['thread_replys']."</div></td></tr>";
}

...

?>


Mal noch ne Idee am Rande: Ist es vielleicht sinvoll, eine Spalte für diese Informationen (letzer Autor, Datum, Uhrzeit) in die Tabelle Threads einzufügen? Dieser müsste dann bei jedem neuen Post "überschrieben" werden. Geht das vielleicht einfacher? Wenn ja wie?
 
SQL
Code:
SELECT ...
(SELECT `datum` 
            FROM `reply`
            WHERE `thread`.`ID` = `reply`.`ThreadID` 
            ORDER BY `datum` ASC LIMIT 1) 
            as  last_post
FROM thread
ORDER BY last_post DESC

Für den usernamen musst du genauso vorgehen.
 
Mal noch ne Idee am Rande: Ist es vielleicht sinvoll, eine Spalte für diese Informationen (letzer Autor, Datum, Uhrzeit) in die Tabelle Threads einzufügen? Dieser müsste dann bei jedem neuen Post "überschrieben" werden. Geht das vielleicht einfacher? Wenn ja wie?
Ich würde diese Idee in meine Überlegung mit einbeziehen.

Ein neuer Eintrag dürfte vermutlich wesentlich seltener vorkommen, als die Abfrage mit dem subselect. D.h. du musst hier genau schauen was mehr an Performance bringt (ich hab' keine Erfahrung mit subselects, ich kann daher dazu nichts konkretes sagen)

EDFIT: und ich hoffe du hast nicht wirklich zwei Felder für das Datum und die Uhrzeit.
 
Stimmt.

Ich würde zusätzliche Felder in den Threads einführen und diese Updaten. Wenn du irgendwann auch noch die Anzahl der Replies mit dazu nehmen willst wird die SQL-Anfrage sehr lang und unübersichtlich. Performanter ist die redundante Version sicherlich. Ich habe es bei meinem Forum nicht gemacht und bereue es.
 
Zurück
Oben