Einzelnen Beitrag anzeigen
  #1  
Alt 25.07.2004, 01:38:34
CThuy CThuy ist offline
Anfänger
 
Registriert seit: Jun 2004
Ort: Nordbayern
Beiträge: 9
session_encode in DB gespeichert - Daten richtig, auslesen aber falsch

Hi,

die Suche hat mich nicht weiter gebracht..
bin selbst gewiss kein fortgeschrittener PHPler, aber auch kein blutiger Anfänger - hoffe in dieser Rubrik kann mir eher jemand weiterhelfen.

Das Programm wird ein Online-Karten-Verkauf für unsere Theatergruppe.

Der potentielle Zuschauer sieht eine Tabelle, bei der er freie Plätze per Checkbox auswählen kann. Bei submit (action = $PHP_SELF) erscheint ein Eingabeformular, die Daten werden per mail verendet und die Plätze auf reserviert gesetzt,
Die Sessiondaten speichere ich in der Datenbank.
WEnn ich später die Datenbank auslese, kann ich diese reservierten Plätze, dank session_decode auf verkauft setzen. Das funktioniert auch bestens.

Per Zufall fiel mir folgendes auf. An der Stelle wo das Eingabformular erscheint und dem Bestellenden die ausgewählten Karten angezeigt werden, gibt es den Link "Andere Kartenwahl".
Hier wird an den Anfang des Scriptes gesprungen, die Variablen, die mit der Kartenwahl zu tun haben mit session_unset(var) leer gesetzt.

Tut der Bestellende das, entsteht das Problem.
Aber der Hammer ist: die in der DB gespeicherten Sessionvariablen sind 100%tig korrekt:
z.B.
a|a:1:{i:0;s:2:"23";}b|a:1:{i:0;s:2:"23";}c|a:1:{i:0;s:2:"23";}d|N;e|N ;f|N;anz_2|i:3;anz_1|i:0;anz_a|i:1;anz_b|i:1;anz_c|i:1;anz_d|i:0;anz_e |i:0;anz_f|i:0;kartenwahl|a:3:{i:0;s:4:"23 a";i:1;s:4:"23 b";i:2;s:4:"23 c";}anz|i:3;

Lasse ich nun nach session_decode die Werte auslesen sind die integer WErte richtig:
anz_a: 1
anz_b: 1
anz_c: 1
anz_d: 0
anz_e: 0
anz_f: 0

aber die Array WErte falsch!:
a
b
23c

Das hiesse nur Platz 23c würde auf bezahlt gesetzt werden! Wie man oben sieht waren Platz 23a , 23b und 23c gewählt.

Ursprünglich war gewählt 20a, 20b, 20c dann mit Link zurück , neue Kartenwahl eben 23 a,b,c

Wenn man die ursprüngliche Kartenwahl ändert, kommt beim Auslesen immer was falsches raus, entweder andere Reihennummern oder leere Reihennummern wie obiges Beispiel, aber die mit session_encode gespeicherten WErte sind richtig.

Auslesen nach session_decode tue ich so:
for($i=0;$i< $anz_a;$i++)
{
print $a[$i]."a<br>";
}
usw.

Die Seite mit der ich aus der Datenbank auslese, beginnt mit session_start (sonst geht ja session_decode nicht) und endet mit session_unset();

Kann mir das vielleicht bitte jemand erklären? Noch dankbarer wäre ich für nen Tipp, wie das zu korrigieren ist.

Danke!
C.Thuy
Mit Zitat antworten