Selectfeld mit For-Schleife per Session übergeben

kamstarr

Mitglied
Hallo Leute,

brauche mal wieder Hilfe. Ich habe ein Formular was aus mehreren Seiten besteht. Die Eingabe werden per Session weitergegeben. Dieses hat auch Selectfelder undzwar Anrede (Auswahl: Herr/Frau) und Geb.-Datum (Tag/Monat/Jahr).

Das erste Selectfeld Anrede sieht so aus:

PHP:
<select name="anrede"
                                <?
                                if(isset($_POST['anrede']) && $_POST['anrede'] == "")
                                echo " style='background:yellow;'";
                                ?>>
                                <option value="">Bitte wählen Sie aus</option>
                                <option value="Herr"<?php if ('Herr' == $_SESSION['anrede']){echo 'selected="selected"';}?>>Herr</option>
                                <option value="Frau"<?php if ('Frau' == $_SESSION['anrede']){echo 'selected="selected"';}?>>Frau</option>
                                </select>

Es wird halt überprüft ob ne Eingabe gesetzt ist und freigegeben, ansonsten gelb hinterlegt. So weit so gut. Auch werden die Daten per Session übergeben. Funktioniert!

Das zweite Selectfeld mit dem Geburtsdatum sieht so aus (hier nur der Geburtstag):

PHP:
<select name="geb"
                                <?
                                if(isset($_POST['geb']) && $_POST['geb'] == "")
                                echo " style='background:yellow;'";
                                ?>>
                                <option selected="selected" value="">Tag</option>
                                <? for ($i=1; $i<32; $i++) echo " <option>{$i}</option> "; ?>
                                </select>

Wie kann ich das angehen damit der ausgewählte Wert übergeben wird per Session
 
Na das es nicht klappt du Schlaumeier ;-)

Kleiner Scherz....

Habe es natürlich schon probiert, aber irgendwie will es nicht funktionieren.

Hier der Code:

PHP:
<select name="geb"
                                <?
                                if(isset($_POST['geb']) && $_POST['geb'] == "")
                                echo " style='background:yellow;'";
                                ?>>
                                <option selected="selected" value="Tag"<?php if ('Tag' == $_SESSION['geb']){echo 'selected="selected"';}?>>Tag</option>
                                <? for ($i=1; $i<32; $i++) echo " <option>{$i}</option> "; ?>
                                </select>

Was mach ich da falsch?
 
Hi,

schau doch mal in den Quellcode, was da rauskommt. Der Vergleich mit dem Sessionwert gehört natürlich in die for-Schleife. Warum solltest Du der ersten Option nochmal den Wert "selected" verpassen wollen?
Und ein value-Attribut hast Du auch noch nicht drin.

LG
 
PHP:
<select name="geb"
                                <?
                                if(isset($_POST['geb']) && $_POST['geb'] == "")
                                echo " style='background:yellow;'";
                                ?>>
                                <option value="">Tag</option>
                                <? for ($i=1; $i<32; $i++)   echo " <option value='Tag'>{$i}</option> "; if ('Tag' == $_SESSION['geb']) echo " <option value='Tag'>{$i}</option> "; ?>
                                </select>

So klappts auch nicht, habe irgendwie einen Aussetzer, hillllllllllllllffffffffffeeeeeeeeeee
 
Hi,

überleg Dir doch erstmal, wie die generierte Auswahlliste überhaupt aussehen soll. Kannst Du dann auch gerne mal hier reinposten.
So, wie es jetzt ist, hat ja jede Option den Value "Tag". Das ist nicht das, was Du haben willst, denn dann bräuchtest Du doch keine Selectbox.

LG
 
Mir scheint es als ob du die Funktionsweise eines Selectfeldes noch nicht ganz verstanden hast.

Dein Selectfeld hat den Namen "geb". Wissen willst du welchen Tag der User ausgewählt hat.
Somit macht es keinen Sinn allen options das Value "Tag" zu geben, denn genau dieser Wert beim Absenden des Formulars übertragen.
Demnach müssen in die value-Attribute die Zahlen 1 bis 31 und nichts anderes.

Die Überprüfung, welcher Eintrag ausgewählt wurde, soll auch nicht einfach ein weiteres Option erzeugen, sondern das Jeweilige als ausgewählt markieren (Ich gehe jetzt zumindest davon aus, da mir alles andere keinen Sinn macht.).
PHP:
<select name="geb"
<?
if(isset($_POST['geb']) && $_POST['geb'] == "") {
  echo " style='background:yellow;'";
}
?>
>
<option value="">Tag</option>
<?
for ($i=1; $i<32; $i++)  {
  echo "<option value='$i'";
  if ('Tag' == $_SESSION['geb']) {
    echo " selected"
  }
  echo ">$i</option>";
}
?>
</select>
 
Hi,

danke für die Antwort.

Also, die Auswahlliste soll einfach die Zahlen 1 - 31beinhalten. Hat sie ja auch!
Auswahllisten für Monat und Jahr stehen auch schon mit den entsprechenden Zahlen.
Funktioniert ja auch alles. Es wird auch bei allen drei Listen überprüft ob ausgewählt oder nicht.

Nach dem Ausfüllen des 1. Formulars klickt der User auf den Button "Weiter"!
Dann kommt er auf eine Seite wo alle Daten ausgegeben werden!
Er überprüft alle Daten und bemerkt dass er seinen Namen falsch eingegeben hat!
Er klickt unten auf den Button "Ändern"!
Er gelangt zum 2.Formular, was genauso aussieht wie das 1. Formular!
Unterschied hier sollen alle bereits eingegebenen Daten vorselektiert sein!
Klappt bei allen Textfeldern und Auswahlfeldern! Daten werden per Session übergeben!

Nur bei der Schleife reicht mein logisches Denken oder meine Erfahrung nicht!

Bitte um detaillierte Erklärung, wie ich es anhand obigem Beispiel machen kann oder direkt ein funktionierendes Script.

Bitte nicht sagen, dass ich mich nicht selber bemühe. Hing gestern 3 Stunden an so einem banalen Problem fest!

:confused:
 
Hi,

hatte deinen Beitrag nicht gesehen!!:p

Aber es geht nicht. Die For Schleife funktioniert noch nicht einmal!
Außerdem meint der Browser dass in der 14. Zeile deines Scripts etwas falsch wäre!

Abhilfe?
 
Zurück