$_SESSION
Michael
- php
'Nabend allerseits ;)
Ich hab da ein Problem und wieß nicht mehr was ich machen soll ...
Ich belege Variablen in einer Session durch Daten aus einem mehrseitigen Formular. Das Problem dabei ist dann, dass ich die Variablen nur genau einmal belegen kann. Wenn ich dann zu einer Seite wechsle, die ich schon ausgefüllt hatte und die Daten ändern will, klappt das nicht.
Ich bin mir auch nicht sicher, ob ich beim Umgang mit den Session-Variablen nicht etwas falsch mache. Ich erzeuge diese mithilfe eines Arrays ... Hier mal der Quellcode:
---8<------
// Dies ist das Array, das u.a. die Variablen für die Session und für
// die Formularfelder enthält:
$PP_Fields = array(array("",""),array ("PP_ContactName","<b>Contact Name</b>"),array ("PP_ZipCode","<b>Zip Code</b>"), usw);
// Hier sind die Arrays, die die Felder für die einzelnen Seiten
// definieren (aus dem obigen Array):
$STEPContent = array(array(),array(1,2,3,4,5,6,7,8), array(9,10,11,12,13,14,15,16,17),array(18,19,20,21,22),array(23), usw');
);
// Und so werden die ausgefüllten Felder an die Sesion übergeben:
for ($x=0; $x<=(count($STEPContent[$STEPold])-1); $x++) {
$FieldNumber = $STEPContent[$STEPold][$x];
$FieldName = $PP_Fields[$FieldNumber][0];
$_SESSION["$FieldName"] = $$FieldName;
}
---8<------
So, ich hoffe es ist soweit komplett, um die Problematik zu verstehen.
Ich hoffe auf Hilfe, weil ich einfach nicht weiterkomme.
Vielen Dank schonmal!
Gruß,
Michael.
Hello,
for ($x=0; $x <= (count($STEPContent[$STEPold])-1); $x++ )
{
$FieldNumber = $STEPContent[$STEPold][$x];
$FieldName = $PP_Fields[$FieldNumber][0];
$_SESSION["$FieldName"] = $$FieldName;
}
wieso wird das nicht vor der Schliefe berechnet?
(count($STEPContent[$STEPold])-1)
Ich habe allerdings nicht verstanden, was Deine Frage ist.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Ich habe allerdings nicht verstanden, was Deine Frage ist.
Tom
Oh,
also meine Frage ist, wieso kann ich die Variablen in der Session nur einmal mit belegen?? Oder mache ich vielleicht mit der Art und Weise der Belegung einen Fehler???
Die Variable STEPold beinhltet die Seite, von der aus dieses Script aufgerufen wurde (man kann im Formular vor- und zurückspringen -- nur so zur Information).
'Nabend allerseits ;)
Moin
Also das mit den Arrays schnalle ich nicht....
Rein theorethisch sollte es kein Problem sein die Session Variablen zu überschreiten.
Du kannst ja mal versuchen die variable die du aktuell neu setzen willst vorher mit unset() zu löschen und dann neu zu setzen.
Ich habe schon auf ähnliche art und weise agiert und hatte dein Problem nicht.
Mfg entropie
Also das mit den Arrays schnalle ich nicht....
Also, durch die Arrays habe ich die Möglichkaiet den Inhalt der Seiten eines Formulars schnell und unkompliziert zu verändern. Wenn ein Feld z.B. von Seite 1 auf Seite 4 gestellt werden soll, dann entferne ich die entsprechende Zahl aus dem einen Array und füge sie dem anderen Array hinzu.
Die Feldnamen dienen dann dazu die Felder mit Variablen zu belegen (logisch). Das zweite Feld im Array beinhaltet die Bezeichnung vor dem Formularfeld.
Die Formularseite wird nun folgendermaßen aufgebaut:
1.) Die Zahl STEPold legt fest, welches Seite des Formulars gerade gesendet wurde.
2.) Anhand diesr Zahl kann können dann die Variablennamen aus dem anderen Array (in dem festgelahten ist, welche Seite welche Felder enthält) ausgelesen werden.
3.) Diese Informationen werden dann verwendet, um die $_SESSION mit Leben zu füllen.
Ich hoffe es ist jetzt einigermaßen klar. Das alles dient der Flexibilität, da ich leider das Formular oft umstellen muss. Ich muss dann also nicht mehr den QUelltext verschieben, kopieren, etc. sondern nur die Zahlen in dem Array $STEPContent austauschen. Eine geniale Lösung, wie ich finde ;) Vielleicht geht's auch einfacher, aber so hab ich mir das nunmal ausgedacht und zusammengebastelt ....
Rein theorethisch sollte es kein Problem sein die Session Variablen zu überschreiten.
Der Meinung bin ich auch!
Du kannst ja mal versuchen die variable die du aktuell neu setzen willst vorher mit unset() zu löschen und dann neu zu setzen.
Hab ich schon, hat leider auch nix genutzt. Eine andere Vermutung ist, dass es cvielleicht an dem JavaScript-Befehl liegt, dass evtl. die Daten nicht richtig übertragen werden:
Nächste Seite:
<a href="javascript:document.PartyPlanner.method='POST'; document.PartyPlanner.STEP.value=".($STEP+1)."; document.PartyPlanner.submit();">continue to step".($STEP+1)." <img src='images/nextstep.gif' width='21' height='16' border='0' alt='next step' /></a>
Vorige Seite:
<a href="javascript:document.PartyPlanner.method='POST'; document.PartyPlanner.STEP.value=".($STEP-1)."; document.PartyPlanner.submit();"><img src='images/stepback.gif' width='21' height='16' border='0' alt='previous step' /> back to step".($STEP-1)."</a>
Ich habe schon auf ähnliche art und weise agiert und hatte dein Problem nicht.
Das freut mich für Dich, bringt mich aber nicht wirklih weiter ;)
Gruß,
Michael
Nächste Seite:
<a href="javascript:document.PartyPlanner.method='POST'; document.PartyPlanner.STEP.value=".($STEP+1)."; document.PartyPlanner.submit();">continue to step".($STEP+1)." <img src='images/nextstep.gif' width='21' height='16' border='0' alt='next step' /></a>Vorige Seite:
<a href="javascript:document.PartyPlanner.method='POST'; document.PartyPlanner.STEP.value=".($STEP-1)."; document.PartyPlanner.submit();"><img src='images/stepback.gif' width='21' height='16' border='0' alt='previous step' /> back to step".($STEP-1)."</a>
das sieht mir sehr nach der ursache des fehlers aus.
Benütz einfach mal nen normalen submit button, wenn es dann geht liegts am js...
BTW: Bei mir zuhaus ist JS per default DEaktiviert, kann ich nichts senden?
Mfg entropie
das sieht mir sehr nach der ursache des fehlers aus.
Benütz einfach mal nen normalen submit button, wenn es dann geht liegts am js...
Nee, leider liegt's nicht daran :( hab's auch mit konventionellen Button probiert. Das Problem ist, dass die eingetragenen Daten beim Klick auf den Button nicht richtig gesendet werden. Ich habe zur Probe, die Daten ausgeben lassen, nachdem der Button gedrückt wurde. Leider standen da immer noch die Daten VOR der Änderung drin. Das ist mir ein Rätsel!!!
Wie kann das sein? Die Daten werden mittels POST gesendet. Das ist doch OK, oder !?
Gruß,
Michal.