Seite 1 von 2
Alphabetische Sortierung
Verfasst: 29.10.2006 12:24
von #Anubis#
gibt es eine Möglichkeit der Voreinstellung, dass in einem Subforum automatisch die Beiträge nicht nach Datum oder so, sondern generell alphabetisch sortiert sind ?
Thx 4 answer
Verfasst: 29.10.2006 13:57
von gn#36
Nur indirekt.
Du könntest in der viewforum.php diese Stelle anpassen:
Code: Alles auswählen
$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'];
Wenn du die Zeile mit ORDER BY ersetzt durch z.B.
dann sollte das eigentlich alphabetisch sortiert werden (sofern ich mich nicht im Namen der Tabellenspalte für den Thementitel geirrt habe

)
Allerdings wird das dann in allen Foren so sortiert.
Rückfrage
Verfasst: 30.10.2006 15:14
von #Anubis#
Geht das nicht nur für einen Teil separat ?
Zur Erläuterung:
Ich möchte, dass ein Teil meines Forums als Nachschlagewerk alphabetisch sortiert zur Verfügung steht. Der Rest soll so wie bisher bleiben.
Verfasst: 30.10.2006 15:25
von IPB_Flüchtling
Ahoi,
man könnte vorher noch die Foren-ID abfragen und dann ggf. alphabetisch sortieren:
Code: Alles auswählen
global $forum_id;
if ($forum_id == 55)
{
$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'];
}
Habe auf dem Code von gn#36 aufgebaut und das Ganze
nicht getestet. Rein theoretisch sollte es aber schon möglich sein, Deine Idee zu verwirklichen.
In der Zeile if {$forum_id == 55} musst Du halt 55 mit der ID des Forums ersetzen, in dem alphabetisch sortiert werden soll.
LG, IPB_Flüchtling
Verfasst: 30.10.2006 21:04
von #Anubis#
Ihr seid super. thx.
Verfasst: 05.11.2006 13:19
von Jugger75
Ist das auch möglich für eine Kategorie?
Verfasst: 05.11.2006 13:35
von gn#36
Du kannst in der IF Abfrage mehrere Foren abfragen:
dann die Nummern 55 bis 58 eben ersetzen durch die gewünschten IDs.
Prinzipiell ginge es zwar auch mit der Kategorie, aber die müsste man dann vor der eigentlichen SQL Abfrage jeweils für das Forum abfragen:
Code: Alles auswählen
$sql = "SELECT cat_id FROM " . FORUMS_TABLE . " WHERE forum_id = $forum_id";
if(!$category_result = $db->sql_query($sql))
{
message_die (GENERAL_ERROR, 'Could not obtain category', '' , __FILE__, __LINE__, $sql);
}
$category_row = $db->sql_fetchrow($category_result);
if($category_row['cat_id'] == 2)
...{Hier dann der Programmcode von oben nach der IF Abfrage}...
Ich hoffe dass sich die Variable $sql nicht mit einer anderen im viewforum.php überschneidet die vorher generiert und danach erst gebraucht wird.
Wichtig: Alle zu ändernden Dateien vorher sichern! Ich habe das nicht getestet und übernehme keine Garantie!
Verfasst: 05.11.2006 13:37
von Jugger75
Danke dir
So reicht mir das auch
Ich muss sagen das geht hier richtig schnell wenn man Hilfe braucht

Verfasst: 05.11.2006 13:52
von Jugger75
Ich hab jetzt drin und es geht auch aber in den anderen Foren hat er alle Themen doppelt gemacht
Hab ihr eine Ahnung was das sein kann?
Hab den Code mal hochgeladen:
http://www.blackcinema.de/forum.doc
Verfasst: 05.11.2006 13:56
von gn#36
Sollte eigentlich nicht. Poste mal den Quelltext an der Stelle wo du ihn eingebaut hast oder verlinke die Datei als Text.
So sollte das aussehen:
Code: Alles auswählen
if (in_array($forum_id, array(55,56,57,58)))
{
$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'];
}