In SESSION optionsdaten speichern

gruebel-gruebel

Erfahrenes Mitglied
Suche immer noch ne Antwort:
Kunde (eine Frau) gibt seine Daten in ein Kundenformular ein.
Kunde will noch etwas dazu bestellen geht zurück auf die Bestellseite
Kunde will Bestellung abschließen. Und siehe da Kunde ist ein HERR
Warum :
$arr_anreden = array('Herr', 'Frau', 'Firma', 'ohne'); weil Herr als erstes im array steht.
Frage:
Wie kann ich in einer $_SESSION die Frau behalten. Habe schon einiges ausprobiert
Gruß
grübel grübel

PHP:
echo "
<tr>
     <td width=\"25%\">Anrede:</td>
     <td width=\"*%\">
         <select name=\"anrede\">";

                 $arr_anreden = array('Herr', 'Frau', 'Firma', 'ohne');
                      foreach($arr_anreden as $str_anrede){
                 echo "<option value=\"".$str_anrede."\"";
                      if (isset($_SESSION["str_anrede"]) and $_SESSION["str_anrede"] == $str_anrede){
                         echo " selected";
                 }
                         echo ">".$str_anrede."</option>";

                 }
 echo "</select>
     </td>
 </tr>";
 
Also wenn die Person über den Browserbutton zurück geht, dann hast du natürlich nicht die Möglichkeit, das Ganze abzuspeichern.
Entweder, du nutzt javascript oder du musst manuell einen Button zum Zurück-Gehen anbieten und hoffen, dass die Leute diesen auch benutzen und in dem Fall den Wert speichern.
 
Also mal kurz zum Code:

Für's If reicht das hier aus:
PHP:
 if ($_SESSION["str_anrede"] == $str_anrede)

Dann solltest du die Session NIE wie eine normale Variable benennen, damit es keine Verwechslungen gibt, da ja alle Variablen automatisch in der Session landen.

Das Grundproblem ist vermutlich das, weil ich sonst nichts falsches auf den ersten Blick sehe:

Du musst die Session im PHP-Code starten.

PHP:
session_start();
if ($_POST['anrede']) $_SESSION['str_anrede'] = $_POST['anrede'];

Ansonsten müsst ich mal den kompletten Quellcode sehen
 
Danke für die schnelle Antwort.
Ich habe ein zurückbutton. Jetzt hab ich es so geschrieben nur es geht nicht.

PHP:
if (isset($_POST['zurueck_w'])){
      $_SESSION['str_anrede'];
      }

echo "<div class=\"zurueck_warenkorb\">";
echo "<form action=\"warenkorb.php\" name=\"senden\" method=\"POST\">
      <input type=\"submit\" name=\"zurueck_w\" value=\"zurück zum Warenkorb\"></input>
      </form>";
echo "</div>";
 
Also wenn die Person über den Browserbutton zurück geht, dann hast du natürlich nicht die Möglichkeit, das Ganze abzuspeichern.
Entweder, du nutzt javascript oder du musst manuell einen Button zum Zurück-Gehen anbieten und hoffen, dass die Leute diesen auch benutzen und in dem Fall den Wert speichern.

Ich hab das jetzt so verstanden, dass das Formular bereits abgesendet wurde.
Sonst geht das mit der Session nicht auf diese Weise. Dann müsste das mittel Ajax beim Ausfüllen bereits an den Server gesendet werden.
 
Danke für die schnelle Antwort.
Ich habe ein zurückbutton. Jetzt hab ich es so geschrieben nur es geht nicht.

PHP:
if (isset($_POST['zurueck_w'])){
      $_SESSION['str_anrede'];
      }

echo "<div class=\"zurueck_warenkorb\">";
echo "<form action=\"warenkorb.php\" name=\"senden\" method=\"POST\">
      <input type=\"submit\" name=\"zurueck_w\" value=\"zurück zum Warenkorb\"></input>
      </form>";
echo "</div>";

Wenn du Benutzer an die warenkorb.php schickst, dann musst du auch dort die Session starten und die Anrede dort in die Session speichern.
 
Also innerhalb der form-Tags müssen die Werte übergeben werden, die du bearbeiten willst und deine if-Abfrage tut gar nichts. Sie setzt keine Variable und gibt auch keine aus.
Dein ganzes Formular muss also innerhlab der form-Tags und du kannst dann mehere Buttons anlegen, zum Beispiel einen zurück- und einen weiter-Button.

Beispiel für Wert eintragen:
$_SESSION['anrede'] = $_POST['anr];
 
Ein Formular lässt sich, wie Berdine es bereits angedeutet hat, normalerweise nur nur an eine Seite senden.

D.h.: Knopf1 => Bestellen.php, Knopf2 => Warenkorb.php geht nicht auf reguläre Art und Weise.

Als einfache Lösung fallen mir 2 Wege ein:
Entweder du machst einen der beiden Buttons via Javascript
oder du lässt direkt nach der Auswahl ein kleines Popupaufgehen, speicherst da die Anrede in die Session und lässt das Popup sofort wieder schließen. (das wäre ist die Ajax Version ohne Ajax)

Aber mal unter uns: Das ist den Aufwand nicht Wert.
Speichere dir die Daten NACH DEM SENDEN des Adressformulars in eine Session oder Datenbank und wenn der Kunde dann nochmal zum Warenkorb geht, dann braucht er das Adressformular gar nicht mehr ausfüllen
 
Hallo MiNiMaG,

ich habe am Anfang von der Datei folgendes stehen.

PHP:
<?php
session_start();
if(strlen($_POST["anrede"]) !=0) $_SESSION["str_anrede"] = $_POST["anrede"];

Dann für die Eingabe

PHP:
echo "
<tr>
     <td width=\"25%\">Anrede:</td>
     <td width=\"*%\">
         <select name=\"anrede\">";

                 $arr_anreden = array('Herr', 'Frau', 'Firma', 'ohne');
                      foreach($arr_anreden as $anrede1){
                 echo "<option value=\"".$anrede1."\"";
                      if (isset($_SESSION["str_anrede"]) and $_SESSION["str_anrede"] == $anrede1){
                         echo " selected";
                 }
                         echo ">".$anrede1."</option>";

                 }
 echo "</select>
     </td>
 </tr>";

Nur es funktioniert nicht.
Wenn die Daten gesendet sind kann der Kunde nicht mehr zurück und die DAten sind in der DB gespeichert.
Gruß
grübel grübel
 
Stell bitte mal die komplette Adresseingabe-Seite hier rein.
Du hast einen kleinen Denkfehler drin und den würde ich dir gerne an deinem Quellcode zeigen.
 
Zurück