Seite 1 von 5

Anzeigen aller Beiträge, die nicht geschlossen sind

Verfasst: 19.10.2004 11:14
von Angel1980
Hallo,

gibt es eine Funktion, mit der ich mir alle Beiträge anzeigen lassen kann, die noch nicht geschlossen sind, praktisch alle noch offenen Punkte. Mein Forum wird immer größer und die Leute verlieren den Überblick.

Da es ein Serviceforum ist, wäre es nciht schlecht, wenn sich die Leute über einen Punkt die noch nicht geschlossenen und damit noch nicht erledigten Beiträge anzeigen lassen können.

Gibt es sowas schon, was ich einbinden kann, oder muss ich selber etwas neues dafür programmieren in PHP?

Für eine schnelle Antwort von Euch wäre ich sehr dankbar.

Gruß
Angel1980

Verfasst: 19.10.2004 15:25
von StormX
Nein das geht nicht.

Verfasst: 19.10.2004 15:27
von musashi
Doch das geht, da geschlossene und offene Threads eine andere Flag haben.

Müsstest halt eine dememtsprechende Datenbankabfrage machen.

In phpmyadmin einfach mal das eingeben:

Code: Alles auswählen

SELECT topic_id, topic_title, topic_poster FROM phpbb_topics WHERE topic_status LIKE '0'; 
(Glaube 0 sind offene) 1 Geschlossene und 2 Infotopics oder so.

klappt

Verfasst: 19.10.2004 15:53
von Angel1980
Das klappt auf jeden Fall schonmal,

habe ich jetzt die Möglichkeit das irgendwie in meinem Forum zu verankern, z.b. rechts oben bei den Sätzen, dass da noch einer zukommt. Noch nicht geschlossene Beiträge????

Verfasst: 19.10.2004 16:26
von musashi
Müsste schon funzen, habe mal schnell was hingeklatscht, ohne templates etc.:
http://www.legoquake.de/forum/closed.php

Code: Alles auswählen

<?php

	$link = mysql_connect("XXX", "XXX", "XXX"); // "server", "loginname", "passwort"
    if (!$link)
    	die("Kann den Server nicht erreichen.");
    if (!mysql_select_db("XXX", $link)) //auszuwählende DB
    	die("Kann die Datenbank nicht anwählen.");

   $query = 'SELECT topic_id, topic_title FROM phpbb_topics WHERE topic_status LIKE "1" LIMIT 0, 250';
    $result = mysql_query($query, $link);
    if (!$result)
    {
        print mysql_error();
        die("Query $sql ist ungültiges SQL.");
    }

   while($row = mysql_fetch_assoc($result)) {
   		$id = $row['topic_id'];
   		$title = $row['topic_title'];
		echo "<a href=\"http://legoquake.de/forum/viewtopic.php?t=$id\" name=\"\">$title</a><br />"; //URL ändern
		   }
	mysql_free_result($result);
	mysql_close($link);
?>
Derzeit werden da halt auch noch Threads angezeigt, die in privaten Bereichen sind, daher würde ich das nicht unbedingt public anbieten.
Wenn ich Zeit habe erweiter ich das noch bissle.

Verfasst: 19.10.2004 16:59
von Leuchte
StormX hat geschrieben:Nein das geht nicht.
Warum sollte das nicht gehen? Wenn man etwas nicht weiß oder keine Ahnung hat, sollte man sich seinen Kommentar verkneifen.

viewforum.php
Finde

Code: Alles auswählen

//
// Grab all the basic data (all topics except announcements)
// for this forum
Füge davor ein

Code: Alles auswählen

$mode = ( isset($HTTP_POST_VARS['mode']) ) ? $HTTP_POST_VARS['mode'] : $HTTP_GET_VARS['mode'];
$status = ( (!empty($mode)) ? ( ($mode == 'lock') ? ("AND t.topic_status = " . TOPIC_LOCKED) : ("AND t.topic_status = " . TOPIC_UNLOCKED) ) : '');
$lock_url = append_sid("viewforum.$phpEx?f=$forum_id&mode=lock");
$unlock_url = append_sid("viewforum.$phpEx?f=$forum_id&mode=unlock");
Finde

Code: Alles auswählen

	$limit_topics_time
	ORDER BY t.topic_type DESC, t.topic_last_post_id DESC 
	LIMIT $start, ".$board_config['topics_per_page'];
Füge direkt davor ein

Code: Alles auswählen

	$status
Finde

Code: Alles auswählen

$template->assign_vars(array(
	'FORUM_ID' => $forum_id,
Ersetze mit

Code: Alles auswählen

$template->assign_vars(array(
	'U_UNLOCK' => $unlock_url,
	'L_UNLOCK' => $lang['Forum_unlock'],
	'U_LOCK' => $lock_url,
	'L_LOCK' => $lang['Forum_lock'],
	'FORUM_ID' => $forum_id,
viewforum_body.tpl
Finde

Code: Alles auswählen

	  <td align="right" valign="bottom" class="nav" nowrap="nowrap"><span class="gensmall"><a href="{U_MARK_READ}">{L_MARK_TOPICS_READ}</a>
Füge direkt danach ein

Code: Alles auswählen

<br /><a href="{U_LOCK}">{L_LOCK}</a> :: <a href="{U_UNLOCK}">{L_UNLOCK}</a>
language/lang_german/lang_main.php
FindeFüge davor ein

Code: Alles auswählen

$lang['Forum_unlock'] = 'Nur offene Themen zeigen';
$lang['Forum_lock'] = 'Nur geschlossene Themen zeigen';

funzt nicht ganz

Verfasst: 20.10.2004 10:17
von Angel1980
Hallo,

also bis zu einem gewissen Punkt habe ich es geschafft die Sachen einzubauen. Mir fehlt nur der Eintrag, den ich suchen soll in der viewtopic_body.tpl. Den habe ich nicht drinnen. Den Rest schon, er zeigt aber ncihts an.

Hier mal meine viewtopic_body.tpl:

Code entfernt; Wenn Dateien zeigen, dann nur verlinken; Leuchte

Was kann ich jetzt noch tun?? Bitte nochmal einen Geniestreich :D

Verfasst: 20.10.2004 12:07
von Leuchte
Natürlich nicht viewtopic_body.tpl sondern viewforum_body.tpl
Denkt denn hier keiner mit? *fg* :wink:

Noch ne Frage

Verfasst: 20.10.2004 13:56
von Angel1980
Hallo Leuchte,

das mit dem kompletten Code werde ich mir merken, daher jetzt nur noch ein paar Auszüge und nochmal danke für Deine Antwort.
Mitdenken, tue ich dann, wenn ich mehr Ahnung von der Materie bekommen haben PHP ist nicht gerade mein Fachgebiet :D . Übrigens hattest Du das schon richtig geschrieben, sehe ich gerade, tja wer lesen kann.... :oops:

Nur jetzt nochmal ne Frage. Ich habe alles eingebaut, wie Du es gesagt hast:

viewforum.php:

Code: Alles auswählen

$mode = ( isset($HTTP_POST_VARS['mode']) ) ? $HTTP_POST_VARS['mode'] : $HTTP_GET_VARS['mode'];
$status = ( (!empty($mode)) ? ( ($mode == 'lock') ? ("AND t.topic_status = " . TOPIC_LOCKED) : ("AND t.topic_status = " . TOPIC_UNLOCKED) ) : '');
$lock_url = append_sid("viewforum.$phpEx?f=$forum_id&mode=lock");
$unlock_url = append_sid("viewforum.$phpEx?f=$forum_id&mode=unlock");

//
// Grab all the basic data (all topics except announcements)
// for this forum
//

Code: Alles auswählen

$status
$limit_topics_time

Code: Alles auswählen

$template->assign_vars(array(
   'U_UNLOCK' => $unlock_url,
   'L_UNLOCK' => $lang['Forum_unlock'],
   'U_LOCK' => $lock_url,
   'L_LOCK' => $lang['Forum_lock'],
   'FORUM_ID' => $forum_id,
	'FORUM_NAME' => $forum_row['forum_name'],
	'MODERATORS' => $forum_moderators,
	'POST_IMG' => ( $forum_row['forum_status'] == FORUM_LOCKED ) ? $images['post_locked'] : $images['post_new'],
viewforum_body.tpl

Code: Alles auswählen

<td align="right" valign="bottom" class="nav" nowrap="nowrap"><span class="gensmall"><a href="{U_MARK_READ}">{L_MARK_TOPICS_READ}</a><br /><a href="{U_LOCK}">{L_LOCK}</a> :: <a href="{U_UNLOCK}">{L_UNLOCK}</a></span></td>
lang_main.php

Code: Alles auswählen

$lang['Search_new'] = "Beiträge seit dem letzten Besuch anzeigen";
$lang['Search_your_posts'] = "Eigene Beiträge anzeigen";
$lang['Search_unanswered'] = "Unbeantwortete Beiträge anzeigen";
$lang['Forum_unlock'] = "Nur offene Themen anzeigen";
$lang['Forum_lock'] = "Nur geschlossene Themen anzeigen.";
Was hab ich denn falsch gemacht???

Verfasst: 20.10.2004 17:00
von Leuchte
Übrigens hattest Du das schon richtig geschrieben, sehe ich gerade, tja wer lesen kann....
Nein, ich hab den Text oben ausgebessert.
Was hab ich denn falsch gemacht???
Keine Ahnung. Was geht denn nicht?
Eventuell an dieser Stelle

Code: Alles auswählen

$status 
$limit_topics_time
Komplett sollte das so aussehen

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 . "
		$status 
		$limit_topics_time
	ORDER BY t.topic_type DESC, t.topic_last_post_id DESC 
	LIMIT $start, ".$board_config['topics_per_page'];
Das findet sich übrigens direkt unter dem Kommentar

Code: Alles auswählen

// 
// Grab all the basic data (all topics except announcements) 
// for this forum 
//