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.

Code: Alles auswählen

ORDER BY t.topic_type DESC, t.topic_title ASC
dann sollte das eigentlich alphabetisch sortiert werden (sofern ich mich nicht im Namen der Tabellenspalte für den Thementitel geirrt habe :D)

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:

Code: Alles auswählen

if(in_array($forum_id, array(55,56,57,58)))
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 :D
So reicht mir das auch

Ich muss sagen das geht hier richtig schnell wenn man Hilfe braucht :o

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'];
}