Wenn man Beiträge schreibt, kommen Nebenbeiträge!

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Richi2
Mitglied
Beiträge: 60
Registriert: 20.01.2007 22:14
Kontaktdaten:

Beitrag von Richi2 »

ok, hier sind sie!

viewtopic

viewtopic_body

ich hoffe du kannst mir damit helfen!


MFG
Richi2
Mitglied
Beiträge: 60
Registriert: 20.01.2007 22:14
Kontaktdaten:

Beitrag von Richi2 »

und hier ist die datei von dem who_is_online thema!

page_header

also manchmal klappt es, da steht dann auch da, 1 mitglied im forum!

aber öfters steht da, 0 mitglieder im forum!

aber kannst dir nochmal die datei anschauen!

MFG

Danke
Zuletzt geändert von Richi2 am 12.02.2007 16:13, insgesamt 2-mal geändert.
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Tja den Fehler habe ich schon mal gefunden, er resultiert aus der Verwendung von gleichen Variablennamen in der page_header.php und in der viewtopic.php. Der Übeltäter heißt $total_posts. Im page_header steht er für die Anzahl der Posts im Forum, während das im viewtopic.php für die Anzahl der darzustellenden Posts steht. Da der page_header allerdings nach der Festlegung des Inhalts von $total_posts in der viewtopic.php aufgerufen wird resultiert daraus, dass die Variable die Anzahl der Posts im gesamten Forum enthält. Dann wird eine Schleife durchlaufen mit $total_posts als Anzahl der Durchläufe wobei jedes mal ein Post ausgegeben wird.(Gut dass ich nicht auf die Idee gekommen bin das Skript in einer Backupversion meines Forums mit 14.000 Beiträgen zu testen...).
Abhilfe:
Da ich nicht weiß, in wie vielen anderen Dateien ein ähnliches Problem auftreten könnte werden wir den neu eingefügten Code ändern und zur Sicherheit (und weil ich das ziemlich einfach finde) alles in eine Funktion packen.
Finde also in der page_header.php

Code: Alles auswählen

//
	// If you don't use these stats on your index you may want to consider
	// removing them
	//
ersetze durch

Code: Alles auswählen

function show_online_box_everywhere()
{
global $lang, $images,$template;
//
	// If you don't use these stats on your index you may want to consider
	// removing them
	//
Finde dann

Code: Alles auswählen

$template->assign_vars(array(
		'TOTAL_POSTS' => sprintf($l_total_post_s, $total_posts),
		'TOTAL_USERS' => sprintf($l_total_user_s, $total_users),
		'NEWEST_USER' => sprintf($lang['Newest_user'], '<a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$newest_uid") . '">', $newest_user, '</a>'), 

		'FORUM_IMG' => $images['forum'],
		'FORUM_NEW_IMG' => $images['forum_new'],
		'FORUM_LOCKED_IMG' => $images['forum_locked'],

		'L_FORUM' => $lang['Forum'],
		'L_TOPICS' => $lang['Topics'],
		'L_REPLIES' => $lang['Replies'],
		'L_VIEWS' => $lang['Views'],
		'L_POSTS' => $lang['Posts'],
		'L_LASTPOST' => $lang['Last_Post'], 
		'L_NO_NEW_POSTS' => $lang['No_new_posts'],
		'L_NEW_POSTS' => $lang['New_posts'],
		'L_NO_NEW_POSTS_LOCKED' => $lang['No_new_posts_locked'], 
		'L_NEW_POSTS_LOCKED' => $lang['New_posts_locked'], 
		'L_ONLINE_EXPLAIN' => $lang['Online_explain'], 

		'L_MODERATOR' => $lang['Moderators'], 
		'L_FORUM_LOCKED' => $lang['Forum_is_locked'],
		'L_MARK_FORUMS_READ' => $lang['Mark_all_forums'], 

		'U_MARK_READ' => append_sid("index.$phpEx?mark=forums"))
	);
und füge dahinter

Code: Alles auswählen

}
show_online_box_everywhere();
ein.
Eigentlich sollte das das Problem beheben.
EDIT: Der andere Fehler mit der falschen Anzahl an Users Online taucht bei mir nicht auf...
Allerdings hast du meine Anweisungen im anderen Thema offenbar nicht 100% exakt befolgt, denn etwas, das vor einer schließenden Klammer ( } ) stehen sollte steht bei deinem Code dahinter. Dass daher der Fehler kommt glaube ich aber nicht, da die Zugehörige IF Abfrage so oder so keinerlei Wirkung mehr hat. Für das zukünftige Modden wäre es aber sehr sinnvoll wenn du die Anweisungen exakter ausführst, denn es kann durchaus einen Unterschied machen ob ein Code konditional oder immer ausgeführt wird.
Zuletzt geändert von gn#36 am 12.02.2007 17:05, insgesamt 1-mal geändert.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Richi2
Mitglied
Beiträge: 60
Registriert: 20.01.2007 22:14
Kontaktdaten:

Beitrag von Richi2 »

wenn ich jetzt das im page_header.php änder kommt dann:

parse error: ...\page_header.php on line 336

was muss da jetzt noch geändert werden?


MFG
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Dann hast du was falsch gemacht beim Einbau... ich vermute mal dass das jetzt an der fehlplatzierten schließenden Klammer liegt...
Zeig mal die Datei her.
Und die Fehlermeldung bitte auch(Zeilennummer)!
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Richi2
Mitglied
Beiträge: 60
Registriert: 20.01.2007 22:14
Kontaktdaten:

Beitrag von Richi2 »

hier

page_header

MFG

Danke für deine ganten bemühungen!
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Entschuldige, in meiner Anweisung fehlte ein Semikolon:

Code: Alles auswählen

show_online_box_everywhere();
statt

Code: Alles auswählen

show_online_box_everywhere()
:oops:
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Richi2
Mitglied
Beiträge: 60
Registriert: 20.01.2007 22:14
Kontaktdaten:

Beitrag von Richi2 »

ist doch überhaupt nicht schlimm!

wir sind doch alle nur Menschen! :wink:

Aber kannst du dir das nochmal wegen dem who_is_online anschauen!

bei mir steht manchmal auch wenn eher selten 1 benutzer ist im forum,

öfters steht immernoch 0 mitglieder im forum!

aber das ganze ist nur wenn ich in einen beitrag reingehe oder halt in eine kategorie! mit der index seite ist soweit alles ok!

was kann hier noch ein fehler sein?

MFG
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

EDIT: Zur besseren Übersicht: Das zugehörige andere Thema findet sich hier
Oha, diese Modifikation hat anscheinend so ihre Tücken...
Dieser Fehler liegt daran, dass der Code für das Viewonline nicht allein für die Anzeige des Viewonlines auf dem Index zuständig ist, sondern ebenfalls für die in den einzelnen Foren. Ob gerade ein Forum aufgerufen ist, wird abgefragt und wenn ja dann die Abfrage auf dieses Forum beschränkt. Somit zeigt die Viewonline Anzeige auch immer nur die Personen an, die im Forum sind. Da das mit der Session zusammenhängt und die nicht ständig aktualisiert wird ergeben sich da wohl mal ab und zu Differenzen. Um das zu beheben sind ein paar andere Veränderungen nötig, Moment.

EDIT:So, schwere Geburt...
Diese Modifikation funktioniert so nur korrekt, wenn du das auch tatsächlich im overall_header.tpl einbaust, es wird NICHT in jeder beliebigen Datei funktionieren. Das liegt daran, dass das eben noch von anderen Dingen verwendet wird.
Als erstes verschieben wir den Start der Funktion ein wenig nach vorne:
finde

Code: Alles auswählen

if (defined('SHOW_ONLINE'))
{
direkt dahinter kommt

Code: Alles auswählen

function show_online_box_everywhere($forum_id=0,$display_forum=false)
{
	if(!$display_forum)
	{
		unset($forum_id);
	}
global $lang, $images,$template,$theme,$userdata,$board_config,$db;
global $logged_visible_online,$logged_hidden_online,$guests_online,$online_userlist,$l_online_users; 
Als nächstes den alten Funktionsstart löschen.
Also weg mit

Code: Alles auswählen

function show_online_box_everywhere()
{
global $lang, $images,$template; 
Dann muss noch eine kleine Modifikation im Code her:
Finde

Code: Alles auswählen

//
		// If you don't use these stats on your index you may want to consider
		// removing them
		//
DAVOR einfügen:

Code: Alles auswählen

if(!$forum_id)
	{
finde

Code: Alles auswählen

show_online_box_everywhere();
DAVOR einfügen finde DAVOR einfügen

Code: Alles auswählen

if(isset($forum_id)&& defined('SHOW_ONLINE') && $forum_id)
{
	$logged_visible_online = 0;
	$logged_hidden_online = 0;
	$guests_online = 0;
	$online_userlist = '';
	$l_online_users = '';
	show_online_box_everywhere($forum_id,true);
	$template->assign_vars(array(
		'TOTAL_USERS_ONLINE' => $l_online_users,
		'LOGGED_IN_USER_LIST' => $online_userlist,
		));
}
So, wie man sieht etwas komplizierter, ich hoffe ich habe jetzt keine Änderungen, die ich vorgenommen hatte vergessen. Wenn doch wirst du das vermutlich merken...
Zuletzt geändert von gn#36 am 30.03.2007 00:09, insgesamt 1-mal geändert.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Richi2
Mitglied
Beiträge: 60
Registriert: 20.01.2007 22:14
Kontaktdaten:

Beitrag von Richi2 »

jo, also vielen dank!

ich hoffe das ist nun endgültig alles und das es keine Probleme mehr gibt!

also vielen dank für deine bemühungen!


MFG
Antworten

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“