Seite 2 von 2
Verfasst: 05.11.2006 14:04
von Jugger75
Code: Alles auswählen
// All announcement data, this keeps announcements
// on each viewforum page ...
//
global $forum_id;
if(in_array($forum_id, array(12,13,14)))
{
$sql = "SELECT t.*, u.username, u.user_id, u2.username as user2, u2.user_id as id2, p.post_username, p2.post_username AS post_username2, p2.post_time
FROM " . TOPICS_TABLE . " t, " . USERS_TABLE . " u, " . POSTS_TABLE . " p, " . POSTS_TABLE . " p2, " . USERS_TABLE . " u2
WHERE t.forum_id = $forum_id
AND t.topic_poster = u.user_id
AND p.post_id = t.topic_first_post_id
AND p2.post_id = t.topic_last_post_id
AND u2.user_id = p2.poster_id
AND t.topic_type <> " . POST_ANNOUNCE . "
$limit_topics_time
ORDER BY t.topic_type DESC, t.topic_title ASC
LIMIT $start, ".$board_config['topics_per_page'];
}
else
{
$sql = "SELECT t.*, u.username, u.user_id, u2.username as user2, u2.user_id as id2, p.post_username, p2.post_username AS post_username2, p2.post_time
FROM " . TOPICS_TABLE . " t, " . USERS_TABLE . " u, " . POSTS_TABLE . " p, " . POSTS_TABLE . " p2, " . USERS_TABLE . " u2
WHERE t.forum_id = $forum_id
AND t.topic_poster = u.user_id
AND p.post_id = t.topic_first_post_id
AND p2.post_id = t.topic_last_post_id
AND u2.user_id = p2.poster_id
AND t.topic_type <> " . POST_ANNOUNCE . "
$limit_topics_time
ORDER BY t.topic_type DESC, t.topic_last_post_id DESC
LIMIT $start, ".$board_config['topics_per_page'];
}
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not obtain topic information', '', __LINE__, __FILE__, $sql);
}
$topic_rowset = array();
$total_announcements = 0;
while( $row = $db->sql_fetchrow($result) )
{
Verfasst: 05.11.2006 14:13
von Jugger75
und er macht auch alle Ankündigung weg

Verfasst: 05.11.2006 14:23
von gn#36
Das liegt daran, dass du es an der falschen Stelle ersetzt hast. Die Abfrage die du entfernt hast ist sehr ähnlich, holt aber nur die Announcements aus der DB (auf diese Weise werden die immer oberhalb dargestellt). Da du diese nun ersetzt hast werden natürlich jetzt stattdessen die normalen Foren geholt und an der normalen Stelle noch mal, also gibt es die zwei mal und die Announcements gar nicht. Mach diese Ersetzung also rückgängig und suche nach der anderen Stelle, da sollte das hier drüber stehen:
Code: Alles auswählen
//
// Grab all the basic data (all topics except announcements)
// for this forum
//
EDIT: Das global hat da auch nichts zu suchen, der Code ist ja nicht in einer Funktion, oder?
Verfasst: 05.11.2006 14:29
von Jugger75
Es geht wunderbar
Ich danke dir vielmals

Verfasst: 05.11.2006 18:52
von IPB_Flüchtling
gn#36 hat geschrieben:EDIT: Das global hat da auch nichts zu suchen, der Code ist ja nicht in einer Funktion, oder?
Danke für die Klarstellung. Wieder etwas gelernt.

Dein
ist übrigens auch hübsch gelöst. Ich hätte da sicher wieder mit || gearbeitet.
LG, Wolfgang
Verfasst: 06.11.2006 00:07
von gn#36
Hat alles Vor- und Nachteile denke ich. Ich bin mir zwar nicht ganz sicher wann, aber ich glaube es gibt durchaus Fälle, in denen das || schneller ist. Über eine Situation in der das viel ausmacht bin ich noch nicht gestolpert, allerdings bei anderen Dingen (z.B. lange Auswahlfeldlisten die häufiger gebraucht werden. Hier hatte ich zunächst die Liste immer neu erstellt (bei 30 Optionen in fast 20 Auswahlfeldern kommt da schon einiges zusammen) jeweils mit kleinen Änderungen (andere Auswahl), dann bin ich dazu übergegangen, nach den ausgewählten Optionen im fertigen Text zu suchen und dann das 'selected="selected"' einzufügen, hat das ganze um sicherlich mehr als das 10fache beschleunigt.) Manchmal muss man ein wenig rumprobieren

.
Das mit dem Global war wohl etwas kurz angebunden. Was ich damit sagen wollte ist, dass sich die Abfrage in einem Globalen Bereich befindet genau wie die Variable auch. Wäre das ganze in einer Funktion oder sogar in einer Klasse sähe das ganze schon ganz anders aus.
Verfasst: 08.11.2007 15:32
von Egli
Ich weiss ich grabe hier ein Urgestein aus, aber ich will hier nur meinen Dank ausprechen.
Der Code war genau der, den ich gesucht habe, ich verneige mich vor euch.