Problem mit unset() und SESSION

C22

Mitglied
Liebes Forum, ich brauche mal wieder deine Hilfe. :)

ich habe eine Datenbank Tabelle mit ca. 30 Spalten. Es gibt eine Übersichtsseite mit allen vorhandenen Datensätzen auf der ca 10 Spalten pro Datensatz angezeigt werden. Klickt man auf die "Beschreibung" erhält man eine detaillierte Ansicht des Datensatzes, auf 5 Unterseiten verteilt kann man sich alle 30 Eigenschaften des Datensatzes ansehen. Damit man zwischen den 5 Unterseiten hin und herwechseln kann lese ich den kompletten Datensatz in Session Variablen aus.
In den Formularen zum Anzeigen steht dann jeweils so etwas:
PHP:
<?php if (isset($_SESSION['fr_bemerkung2'])){ echo($_SESSION['fr_bemerkung2']);} ?>

beim laden eines Datensatzes gehe ich folgendermaßen vor:
es gibt 'loaditem.php' dem eine id übergeben wird. Da werden zunächst alle Session variablen zurückgesetzt.
PHP:
unset($_SESSION['fr_bemerkung2']);
danach der Datensatz der id aus der Datenbank geholt und die Sessionvariable neu gesetzt
PHP:
$_SESSION['fr_bemerkung2'] = $results['FR_Bemerkung'];

danach wird per header Location auf die erste Darstellungsseite geleitet.

das Problem ist folgendes: Wenn ich einen Datensatz öffne bei dem im Feld 'FR_Bemerkung' nichts steht, also NULL, wird der Inhalt des letzten Datensatzes angezeigt, obwohl ja eigentlich bei jeden neuen laden alle Sessionvariablen mit unset() zurückgesetzt werden...

hat das jemand verstanden? :rolleyes:
mfg
 
Zuletzt bearbeitet:
Verstanden hab ichs, aber ich hab keine Ahnung warum das nicht funktioniert. Aber du kannst das Problem übergehen indem du die Sessions "leer" machst!

PHP:
$_SESSION['fr_bemerkung2']="";
 
danke nero, das geht. Aber mich würde auch interessieren warum das andere nicht geht. Sobald im Datenbankfeld NULL steht bleibt der alte Stand in der Session.
 
Das wäre auch ne Idee! Dann würde nämlich die Session sowieso mit einem Leer-String gefüllt. Dann brauchst du das nicht mehr "zu Fuß" machen!!
 
Ja daran scheints zu liegen! Wies ausschaut kann man eine $_SESSION-Variable nicht mit unset(); löschen, wenn register_globals auf 'on' sind. :rolleyes: Wieder was dazugelernt! :-)
 
Zurück