Seite 1 von 1

Frage: Wie bei $latest_topic keine internen Themen anzeigen?

Verfasst: 22.04.2006 20:13
von maker
Hallo @ all,

ich hab ein kleines Problem.
Und zwar verwende ich bei mehreren Sachen die Anzeige des letzten Themas, sprich, das Thema was als letztes eröffnet wurde, wird angezeigt:

Code: Alles auswählen

$sql = 'SELECT topic_title
FROM ' . TOPICS_TABLE . '
WHERE topic_id = ' . $max_topic_id;

[..]

$latest_topic = $row['topic_title'];

Allerdings gibt es auf dem Forum auch ein internes Moderatorenforum und die Beiträge aus diesem Forum sollen natürlich nicht unter "Letztes Thema: ABC" angezeigt werden.
Wie kann ich denn diese Themen von der Anzeige ausschließen?

Vllt. so?

Code: Alles auswählen

if (topic_id = forum_id moderatorenforum) { 
$latest_topic = topic_id -1 
} else {
$latest_topic  = topic_id
}
echo $latest_topic
Danke, Gruß

maker

Verfasst: 22.04.2006 22:41
von cYbercOsmOnauT
In der TOPICS_TABLE sind auch die ForenID's der Topics gespeichert. Du musst demnach nur Deine SQl ein wenig erweitern um bestimmte Foren auszuschliessen.

Code: Alles auswählen

$sql = 'SELECT topic_title
FROM ' . TOPICS_TABLE . '
WHERE topic_id = ' . $max_topic_id . '
AND forum_id <> 3; 
Anstelle der 3 natürlich die forum_id des auszuschliessenden Forums angeben.

Fertig. :)

Grüße,
Tekin

Verfasst: 23.04.2006 00:16
von maker
danke für die fixe Antwort.

hab jetzt folgendes

Code: Alles auswählen

$max_topic_id = $row['max(topic_id)'];

$sql = 'SELECT topic_title
FROM ' . TOPICS_TABLE . '
WHERE topic_id = ' . $max_topic_id . '
AND forum_id <> 3';
das Problem ist jetzt nur, wenn die id = 3 ist, also das Thema aus dem internen Forum stammt, denn nimmt er nicht den nächsten Eintrag also max(topic_id) -1 sondern er nimmt einfach gar keinen Eintrag, da die Bedingung maximale Topic_id und nicht ausm Forum mit der ID = 3 ja nicht erfüllt wird :/
Muss ich da also doch eine if Abfrage hinhängen?

ginge das z.B so:

Code: Alles auswählen

if ($row['topic_title'] = "") {
$sql = 'SELECT topic_title
FROM ' . TOPICS_TABLE . '
WHERE topic_id = ' . $max_topic_id -1 . '
AND forum_id <> 3';
} else {
echo $row['topic_title'];
}
und das denn nochmal abfragen, ob der 2. Eintrag nicht auch ausm internen Forum kommt...hmm...irgendwie umständlich.
Gibts da denn ne bessere Möglichkeit?

greetz maker

Verfasst: 23.04.2006 01:11
von cYbercOsmOnauT
Entschuldige, ich dachte Du hast ein Script das "die letzten 10" Themen anzeigt z.B. Ich sollte nicht antworten, wenn der Kleine hier in der Wohnung "stresst". :D

Okay, dann nimm folgende SQL, für die Du auch die $max_topic_id nicht benötigst.

Code: Alles auswählen

$sql = 'SELECT topic_title
FROM ' . TOPICS_TABLE . '
WHERE forum_id <> 3
ORDER BY topic_id DESC
LIMIT 1';
Besser wäre m.E. wenn Du auch die topic_id Dir holst und dann auch einen Link anbieten kannst.

Code: Alles auswählen

$sql = 'SELECT topic_title, topic_id
FROM ' . TOPICS_TABLE . '
WHERE forum_id <> 3
ORDER BY topic_id DESC
LIMIT 1';
Viele Grüße,
Tekin

Verfasst: 23.04.2006 12:16
von maker
ja, die Kinnas eben :D
okay danke, cYbercOsmOnauT.
Hat funktioniert, werd jetzt mal versuchen das ganze nachzuvollziehen, damit ich auch noch mal bissl was lern ;)

greetz maker