Variable variabel abspeichern

Braver Willy

Grünschnabel
Hej,

ich weiß, dass die Überschrift nicht sehr vielsagend ist, aber trotzdem. Ich bin erst seit zwei Wochen am Werkeln mit php und weiß jetzt nicht weiter. Ich hab ein Script, das eine Hockeystatistik (Tore, Vorlagen Strafminuten etc.) ausliest. Das ganze wird mit einer Navigationsleiste angesteuert, wo man gleichzeitig die Variable des Jahres setzt.

Code:
<?php echo "stats.php?PHPSESSID=".session_id()."&statsaison=99"?>

$statsaison ist dann immer das entsprechende Jahr, dessen Statistik ausgelesen werden soll. Das klappt auch alles wunderbar, aber ich hab auch eine Sortierfunktion drin, die man per Selectbefehl vornehmen kann. Wenn man das tut, ist der Wert für $statsaison beim Neuladen der stats.php allerdings wieder weg.
Das hab ich mit "phpsession" zu lösen versucht:

Code:
<?php
@session_start();
include "./fehler.inc";
$statsaison=(isset($statsaison)?$statsaison:88);
session_register("statsaison");
if (!$_POST["statart"]) $statart="punkte";
else $statart=$_POST["statart"];?>

Jetzt merkt er sich zwar den ersten $statsaison Wert und dementsprechend klappt das Sortieren zunächst auch, aber wenn ich per Navigation das gleiche Script für ein anderes Jahr ausführen will (sprich $statsaison einen anderen Wert übermittelt), nimmt er den nicht mehr an, sondern bleibt beim ersten Wert. Ich hab irgend wie jetzt keine Idee wie ich das lösen könnte. Hab wahrscheinlich wieder ein Brett vorm Kopf. Deklarier ich da was falsch? (ich hab gestern auch mit der $_GET rumgespielt...lief aber auch nicht). Hat jemand vielleicht einen Tip?
 
Ich verstehe das so: Das Skript bekommt als Parameter einen Wert, $statsaison. Dieser Wert wird im Skript u.U. verändert und wird in einer Session gespeichert, um bei folgenden Aufrufen zur Verfügung zu stehen. Dann aber kommt es vor, dass man dem Skript wieder eine HTTP-GET-Variable übermittelt, und in diesem Fall soll die Variable aus der Session nicht verwendet werden. Ist das so richtig? (Leute, schreibt mal verständlich, was ihr eigentlich wollt.)

Damit das läuft, muss dein Skript in den GET-Variablen nachsehen, ob "statsaison" übermittelt wurde. Wenn ja, wird eben dieser Wert verwendet. Wenn nicht, wird der Wert aus der Session verwendet. Z.B.: (blinder Code, nicht getestet)

Code:
if( $_GET["statsaison"]!="" ) {
  $statsaison = $_GET["statsaison"] ;
} else {
  $statsaison = $_SESSION["statsaison"] ;
}
Oder kürzer:

Code:
$statsaison = $_GET["statsaison"]!="" ? $_GET["statsaison"] : $_SESSION["statsaison"] ;
Ist es das, was du meinst?

-Gawayn
 
Super danke. Genau das war es. Klappt alles problemlos.

Ich hatte mir auch Mühe gegeben, mein Problem verständlich zu schildern. Aber das scheint ja eine Schwäche von mir zu sein...bisher dachte ich immer, das gilt nur beim parsen :p
 
Zurück