Kleine Frage zum Forum in PHP über MySQL

jackie05

Erfahrenes Mitglied
Hallo,
ich habe ein Forum geschrieben, funktioniert alles soweit, jetzt möchte ich das so machen das die neuen Einträge die geschrieben wurden, FETT dargestellt werden.

Ich kann jetzt nicht einfach in jeden Beitrag von der Datenbanktabelle vll eine 1 schreiben für fett und 0 für normal, weil wenn der erste User auf diesen Beitrag geklick hätte, dann würde es für alle User wieder normal angezeigt.

Wie könnte ich das am einfachsten lösen?

Ich wäre euch sehr dankbar für die Hilfe.

MfG
 
Spontan würde ich sagen, logge immer die letzte Aktivität des Benutzers mit.
Und sobald der letzte Eintrag bzw. Thema neuer ist als die letzte Aktivität, stelle es fett dar.
 
Danke.

Noch eine Frage:
Wie kann ich das Thema wieder an erster stelle verschieben wenn dort einer geantwortet hat?

Ich habe mir das so überlegt:
Ich frage per SQL abfrage die letzte antwort ab, die geschrieben wurde und nehme aus dem letzten antwort die Topic ID und setze diesen Topic wieder ganz nach oben.

Nur wie kann ich ein Eintrag über die ID wieder am anfang setzen?

Das müsste doch möglich sein, oder?

Vielen Dank schonmal.

MfG
 
Deine Frage verwirrt mich ein wenig, weil ich den Sinn nicht ganz rauskriege.

Du hast das Problem mit dem Sortieren der Beiträge, da du möchtest das der mit der neuesten Antwort oben steht, richtig?

Lies doch einfach beim Auflisten der Themen den letzten Beitrag aus (über die maximale ID) und benutz deren Zeitstempel zum Sortieren der Beiträge.
 
Via Joins können Datenmengen strukturiert verknüpft werden. Hier eine Beschreibung, wie dein momentanes Anliegen gelöst werden kann:

SQL:
SELECT
	`topic`.`title`
FROM
	`posts` AS `post`
LEFT JOIN
	`topics` AS `topic` ON
	`post`.`topic_id` = `topic`.`id`
ORDER BY
	`post`.`timestamp` DESC
LIMIT
	1

Man wählt also zuerst nur die Beiträge aus, sortiert diese absteigend (hier noch anschließend auf ein Ergebnis beschränkt), und fügt dann die Themen links an, die auf die ON-Klausel zutreffen.

Bezüglich des Speicherns gelesener Beiträge ist es sinnvoll, wie Felix Jacobi bereits sagte, die letzte Aktivität und den letzten Sitzungsbeginn zu loggen. Das markieren gelesener Beiträge würde ich über einen Cookie realisieren, in welchen man ein serialisiertes Array mit den IDs der gelesenen Beiträge packt. Gleich bei der Abfrage, oder anschließend während der Ausgabe muss dann noch überprüft werden, ob eine ID aus dem Cookie mit einer Themen-ID übereinstimmt. Alternativ ließe sich sowas auch über eine Datenbank lösen. Wie du es auch anstellst, solltest du darauf achten, dass Beiträge über einem bestimmten Alter als "gelesen" dargestellt werden, und dass möglichst der Beginn einer neuen Sitzung bedeutet, dass alle Beiträge, die vor dem Beginn der letzten Sitzung verfasst wurden, ebenfalls "alt" sind.
 
Danke für die antworten.

Also, um die Themen zu sortieren, habe ich eine weitere Spalte in der Datenbanktabelle topics hinzugefügt namens last_post, wenn ein neues Thema hinzugefügt wird, dann wird dort das aktuelle Timestamp eingetragen und wenn man bei diesem Thema antwortet, dann wird dieses Thema aktualisiert mit einer neuen aktuellen Timestamp.

Funktioniert sehr gut und danke für die Tips.

MfG
 
Zurück