Globale Variablen für Menu?

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Benutzeravatar
football
Mitglied
Beiträge: 862
Registriert: 03.05.2009 10:37
Kontaktdaten:

Globale Variablen für Menu?

Beitrag von football »

Ich habe für meine Tipprunden-Seite (selbst erstellt, nicht der Tippspiel-Mod) ein Dropdown-Menu mit CSS gestaltet.
Für meine hinzugefügten Seiten funktioniert das Menu soweit.
Jetzt möchte ich in diesem Menu auch den Link zur Forenübersicht und einigen einstellbaren Foren (als Dropdown) hinterlegen.
Das klappt auch soweit schon, nur habe ich folgendes Problem: Wenn ich zu den Foren wechsel, gehen mir die
Parameter für die Tipprunden-Links (Saison, Liga, Spieltag usw.) verloren, da ich diese nur in meinen Seiten
entsprechend setzte.

Wie kann ich die zuletzt gewählten Werte dieser Parameter im Forum erhalten, sodass ich aus dem Forum wieder direkt in
meinen zu letzt ausgewählten Spieltag zurückspringe?

Ich habe mir schon ein Array in der Session Class erstellt, in der ich meine Parameter ablege. Nur wird dieses Array bei jedem Seitenaufruf
neu initialisiert. An welcher Stelle kann ich globale Variablen zur Speicherung meiner Parameter einbauen? Oder muss ich die Session-Tabelle
um diese Parameter erweitern und entsprechend abspeichern? Wie geht das genau?

Ich hoffe, das war verständlich. Sonst hier ein Bild zur Veranschaulichung:
[ externes Bild ]
Kein Support per PN oder E-Mail. Support-Anfragen beantworte ich nur über diese Community.
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5390
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Globale Variablen für Menu?

Beitrag von oxpus »

Hallo,

alle Variablen werden bei einem neuen Seitenaufruf neu initialisiert.
Daher solltest Du solche Angaben über POST- oder GET-Daten dem Script mitgeben, wenn ein Benutzer aus dem Tippspiel heraus eine Aktion aufruft.
Also entweder als Parameter in einen Link oder als "hidden-field" in ein Formular packen.
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
Benutzeravatar
football
Mitglied
Beiträge: 862
Registriert: 03.05.2009 10:37
Kontaktdaten:

Re: Globale Variablen für Menu?

Beitrag von football »

Ja, das mache ich auch innerhalb meiner Seiten, bzw. habe ich eine Hauptseite in der ich dann je nach Auswahl
von Unterseite (Tippen, tabelle usw.), Saison, Liga und Spieltag entsprechende Blöcke mit den dazugehörigen Daten anzeige.

Deinem Vorschlag nach, müsste ich meine Parameter jeder phpBB-Seite übergeben, damit das Menü aktuell bleibt.
Das erscheint mir nicht sinnvoll. Daher suche ich nach einer Lösung, in der ich vielleicht meine Parameter in den Session-Daten
ablege.
Oder kann ich das irgendwie über die common.php lösen, da diese ja in jeder Seite vorhanden sein sollte?
Kein Support per PN oder E-Mail. Support-Anfragen beantworte ich nur über diese Community.
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5390
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Globale Variablen für Menu?

Beitrag von oxpus »

Du kannst die Daten auch in der Tabelle phpbb_config ablegen.
Dann werden diese immer auch automatich über die common.php ausgelesen und über das Array $config bereit gestellt.
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
Benutzeravatar
football
Mitglied
Beiträge: 862
Registriert: 03.05.2009 10:37
Kontaktdaten:

Re: Globale Variablen für Menu?

Beitrag von football »

Was passiert aber dann, wenn mehrere User Online sind und
einer z.B. den 31. Spieltag tippt und der andere den 32. Spieltag ausgewählt hat.
Beide sollten natürlich aus dem Forum wieder per Link in dem jeweiligen Spieltag landen.
Über die Config-Tabelle würde nur der letzte Zugriff abgespeichert werden; beide also im gleichen Spieltag landen.

Die Links in dem Menu sind also (für jeden User anders) dynamisch.

Daher meine Idee mit der Session-Tabelle. Aber wie und wann speichere ich dann meien Parameter in dieser Tabelle?
Kein Support per PN oder E-Mail. Support-Anfragen beantworte ich nur über diese Community.
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5390
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Globale Variablen für Menu?

Beitrag von oxpus »

Du kannst die auch in der Usertabelle (phpbb_users) speichern und dazu einfach neue Felder anlegen, die alle Daten aufnehmen sollen.
Die wird auch mit dem Erstellen der Userdaten ausgelesen, sobald sich ein User am Forum anmeldet.
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
Benutzeravatar
football
Mitglied
Beiträge: 862
Registriert: 03.05.2009 10:37
Kontaktdaten:

Re: Globale Variablen für Menu?

Beitrag von football »

Dann habe ich aber das gleiche Problem wie bei der phpbb_config nur auf die Gäste beschränkt.
Sind zwei oder mehr Gäste gleichzeitig auf der Seite, siegen wieder der Parameter des letzten Zugriffs.

Vielleicht sollte ich den Variablen-Teil meines Menus zur Tipprunde nur dann einblenden, wenn ich
mich auf den Tipprunden-Seiten befinde und sonst nur einen einzigen Link zur Tipprunde.
Dann muss der User sich nach Besuch des Forums wieder neu zu seiner (letzten) Seite und Spieltag durchklicken.
Kein Support per PN oder E-Mail. Support-Anfragen beantworte ich nur über diese Community.
Benutzeravatar
football
Mitglied
Beiträge: 862
Registriert: 03.05.2009 10:37
Kontaktdaten:

Re: Globale Variablen für Menu?

Beitrag von football »

Danke, ich habe es jetzt gelöst.
Es hilft halt doch immer, wenn man sich mit anderen austauscht.
Manchmal kommt man dann selbst auf eine Lösung.

Meine Lösung:
Neue Felder in phpbb_session hinzugefügt.

Code: Alles auswählen

ALTER TABLE `phpbb_sessions`  
	ADD `session_season` SMALLINT(4) UNSIGNED NULL DEFAULT NULL,  
	ADD `session_league` TINYINT(2) UNSIGNED NULL DEFAULT NULL,  
	ADD `session_matchday` TINYINT(2) UNSIGNED NULL DEFAULT NULL
Bevor ich meine Seite ausgebe, speichere ich die Parameter in phpbb_session.

Code: Alles auswählen

$sql_ary = array(
	'session_season'	=> (int) $season,
	'session_league'	=> (int) $league,
	'session_matchday' => (int) $matchday,
);

$sql = 'UPDATE ' . SESSIONS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . "
	WHERE session_id = '" . $db->sql_escape($user->session_id) . "'";
$result = $db->sql_query($sql);
In der includes/functions.php setzte ich dann in der Function page_header meine Variablen und nutze
diese dann zum Aufbauen der Links.

Code: Alles auswählen

$season = $user->data['session_season'];
$league = $user->data['session_league'];
$matchday = $user->data['session_matchday'];

...

'U_FOOTBALL'  => append_sid("football.$phpEx?season=$season&league=$league&matchday=$matchday"),
'U_BET' 		=> append_sid("football.$phpEx?side=bet&season=$season&league=$league&matchday=$matchday"),
'U_ALL_BETS'  => append_sid("football.$phpEx?side=all_bets&season=$season&league=$league&matchday=$matchday"),
...
Kein Support per PN oder E-Mail. Support-Anfragen beantworte ich nur über diese Community.
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5390
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Globale Variablen für Menu?

Beitrag von oxpus »

Oder eben die Sessions-Tabelle. Ja.
Du hattest dazu ja nicht geschreiben, wer alles zugreifen soll, daher bot sich zuletzt ja die Usertabelle an.
Und da Du dann auch nur von Usern sprachst...

Egal, Hauptsache es funktioniert wie gewünscht.
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“