Seite 1 von 1

Globale Variablen für Menu?

Verfasst: 03.05.2009 11:45
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 ]

Re: Globale Variablen für Menu?

Verfasst: 03.05.2009 12:04
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.

Re: Globale Variablen für Menu?

Verfasst: 03.05.2009 13:22
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?

Re: Globale Variablen für Menu?

Verfasst: 03.05.2009 13:25
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.

Re: Globale Variablen für Menu?

Verfasst: 03.05.2009 13:40
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?

Re: Globale Variablen für Menu?

Verfasst: 03.05.2009 14:10
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.

Re: Globale Variablen für Menu?

Verfasst: 03.05.2009 14:48
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.

Re: Globale Variablen für Menu?

Verfasst: 03.05.2009 15:47
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"),
...

Re: Globale Variablen für Menu?

Verfasst: 03.05.2009 20:57
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.