caramba12321
blödefragensteller
Hallo Leute, ich hab mal wieder ein kleines Problemchen:
Also ich arbeite gerade an einem neuen Forum für eine ca 3000. Mann Community, da unser altes Forum schon ziemlich veraltet ist, programmiere ich jetzt eins das auf smarty,css und php basiert. Ich versuche so viel wie möglich oop zu machen.
Also zu meiner Frage:
Ich habe eine tabelle namens stl_forum_posts und eine namens stl_forum_edits.
In der posts steht immer der aktuelle Post zu einem Thread drinne und wenn jetzt z.B. jemand einen Edit macht , wird der alte Post in stl_forum_edits verschoben und der neue in stl_forum_posts geschrieben , was ja auch einwandfrei klappt.
ICh mache das ganze nur, damit ein Moderator später alle edits einsehen kann.
Also wenn ich nun einen Thread öffne werden dazu die Beiträge geladen, ich habe in stl_forum_posts ebenfalls die Anzahl der edits festgehalten und nun wollte ich folgendes machen. Ich speichere in stl_forum_edits die id des editers ( kann ja auch sein das ein Moderator den Post geeditet hat ), übrigens speichere ich immer nur die id von der Person, die als letztes einen Edit gemacht hat. Nun will ich in einem query, den namen des editers aus stl_forum_user laden, wenn ein Edit schon stattgefunden hat, ist das auch kein Problem, wenn nicht, dann liefert er mir aber null; zurück also kein Datensatz und der Query wird nicht weiter ausgeführt. Ich habe gehört mann kann sowas mit Left und Right join machen, weiss aber nicht genau wie das geht. Ich hänge den Query mal in einer sehr vereifnachten version an, vllt kann jemand das ja einfach mal in einer Wortgleichung einbauen oder jemand mir erklären wie das geht.
Es soll also noch rein, editernickname from TABLE_USER , ich hoffe ich konnte mein Problem verständlich erläutern, ihr werdet sehen das ich nur mit Objekten programmiere, z.B. sieht mann das schon daran, dass ich ein fill , ein load und ein save Objekt habe. Ich kann jedem emofehlen mit Objekten zu arbeiten, ist am Anfang zwar mehr Arbeit , spart später aber einiges. Ich z.B. habe Für Threads, Posts, Edit immer ein jeweils eigenes Objekt.
Gruss
Caramba
edit: achja nicht wundern, die ganzen id`s der Posts lese ich vorher aus und die loadfunktion wird dann einfach in eine foreach(); Schleife ausgeführt.
edit2: ich weiss , mit 2 Querys geht das ganz einfach, ist aber nicht professionell
Also ich arbeite gerade an einem neuen Forum für eine ca 3000. Mann Community, da unser altes Forum schon ziemlich veraltet ist, programmiere ich jetzt eins das auf smarty,css und php basiert. Ich versuche so viel wie möglich oop zu machen.
Also zu meiner Frage:
Ich habe eine tabelle namens stl_forum_posts und eine namens stl_forum_edits.
In der posts steht immer der aktuelle Post zu einem Thread drinne und wenn jetzt z.B. jemand einen Edit macht , wird der alte Post in stl_forum_edits verschoben und der neue in stl_forum_posts geschrieben , was ja auch einwandfrei klappt.
ICh mache das ganze nur, damit ein Moderator später alle edits einsehen kann.
Also wenn ich nun einen Thread öffne werden dazu die Beiträge geladen, ich habe in stl_forum_posts ebenfalls die Anzahl der edits festgehalten und nun wollte ich folgendes machen. Ich speichere in stl_forum_edits die id des editers ( kann ja auch sein das ein Moderator den Post geeditet hat ), übrigens speichere ich immer nur die id von der Person, die als letztes einen Edit gemacht hat. Nun will ich in einem query, den namen des editers aus stl_forum_user laden, wenn ein Edit schon stattgefunden hat, ist das auch kein Problem, wenn nicht, dann liefert er mir aber null; zurück also kein Datensatz und der Query wird nicht weiter ausgeführt. Ich habe gehört mann kann sowas mit Left und Right join machen, weiss aber nicht genau wie das geht. Ich hänge den Query mal in einer sehr vereifnachten version an, vllt kann jemand das ja einfach mal in einer Wortgleichung einbauen oder jemand mir erklären wie das geht.
PHP:
function load() {
global $db;
$db->query("
SELECT
p.*,
u.nickname as posternickname
FROM
".TABLE_FORUM_POSTS." AS p,
".TABLE_USER." AS u
WHERE
p.id = ".$db->esc($this->id)."
AND
u.id = p.poster_id
");
$this->fill($db->getFirstObject());
}
Es soll also noch rein, editernickname from TABLE_USER , ich hoffe ich konnte mein Problem verständlich erläutern, ihr werdet sehen das ich nur mit Objekten programmiere, z.B. sieht mann das schon daran, dass ich ein fill , ein load und ein save Objekt habe. Ich kann jedem emofehlen mit Objekten zu arbeiten, ist am Anfang zwar mehr Arbeit , spart später aber einiges. Ich z.B. habe Für Threads, Posts, Edit immer ein jeweils eigenes Objekt.
Gruss
Caramba
edit: achja nicht wundern, die ganzen id`s der Posts lese ich vorher aus und die loadfunktion wird dann einfach in eine foreach(); Schleife ausgeführt.
edit2: ich weiss , mit 2 Querys geht das ganz einfach, ist aber nicht professionell

Zuletzt bearbeitet: