Probleem met session en select
Hallo allemaal,
Wie kan me helpen. Ik heb een select. Wanneer je iets selecteert, maar het formulier is nog niet volledig met verzenden, moet de keuze blijven staan. Dat werkt, maar ik zie de rest van het select niet meer.
Dit is het script wat ik gebruik. http://www.phptuts.nl/view/34/
Hun doen het met jaartallen, ik wil met ja en nee en later ook met andere keuzes gaan werken.
Wie o wie ken me helpen?
Wie kan me helpen. Ik heb een select. Wanneer je iets selecteert, maar het formulier is nog niet volledig met verzenden, moet de keuze blijven staan. Dat werkt, maar ik zie de rest van het select niet meer.
Dit is het script wat ik gebruik. http://www.phptuts.nl/view/34/
Hun doen het met jaartallen, ik wil met ja en nee en later ook met andere keuzes gaan werken.
Wie o wie ken me helpen?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<select id="geboortejaar" name="geboortejaar">
<?
if(isset($_SESSION['input']['geboortejaar']) && $_SESSION['input']['geboortejaar'] == $_SESSION['input']['geboortejaar'])
{
echo '<option value="'.$_SESSION['input']['geboortejaar'].'" selected="selected">'.$_SESSION['input']['geboortejaar'].'</option>';
}
else
{
echo '<option value=""></option>';
echo '<option value="Ja">Ja</option>';
echo '<option value="Nee">Nee</option>';
}?></option>
</select
<?
if(isset($_SESSION['input']['geboortejaar']) && $_SESSION['input']['geboortejaar'] == $_SESSION['input']['geboortejaar'])
{
echo '<option value="'.$_SESSION['input']['geboortejaar'].'" selected="selected">'.$_SESSION['input']['geboortejaar'].'</option>';
}
else
{
echo '<option value=""></option>';
echo '<option value="Ja">Ja</option>';
echo '<option value="Nee">Nee</option>';
}?></option>
</select
Wat jij probeert te krijgen is dat het eerdere ingevulde antwoord alvast geselecteerd is. Wat je hier krijgt is alleen de eerder ingevulde waarde. Dat komt door die if statement. Een if-else statement kan maar 1 van de 2 uitvoeren. Het else-gedeelte van een if statement zegt alleen dat als de if-statement niet 'true' terug geeft, dat dan else uitgevoerd moet worden. In dit geval kun je dus beter geen else gebruiken, alleen een if.
Wat je alleen beter kunt doen (vind ik) is met php uitlezen welke waarde eerder gekozen is en die optie dan alvast geselecteerd maken, ipv een nieuwe optie toevoegen met die waarde (beetje dubbelop). Een voorbeeld hiervan is:
Misschien een domme opmerking erbij, maar als iemand mij vraagt of ik een geboortejaar heb of niet, antwoord ik altijd met Ja, nooit met Nee. Ik denk dat iedereen dat doet.
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<select id="geboortejaar" name="geboortejaar">
<?php
if(isset($_SESSION['input']['geboortejaar']) && $_SESSION['input']['geboortejaar'] == $_SESSION['input']['geboortejaar']){
echo '<option value="'.$_SESSION['input']['geboortejaar'].'"selected="selected">'.$_SESSION['input']['geboortejaar'].'</option>';
}
echo '<option value=""></option>';
echo '<option value="Ja">Ja</option>';
echo '<option value="Nee">Nee</option>';
?>
</select>
<?php
if(isset($_SESSION['input']['geboortejaar']) && $_SESSION['input']['geboortejaar'] == $_SESSION['input']['geboortejaar']){
echo '<option value="'.$_SESSION['input']['geboortejaar'].'"selected="selected">'.$_SESSION['input']['geboortejaar'].'</option>';
}
echo '<option value=""></option>';
echo '<option value="Ja">Ja</option>';
echo '<option value="Nee">Nee</option>';
?>
</select>
Wat je alleen beter kunt doen (vind ik) is met php uitlezen welke waarde eerder gekozen is en die optie dan alvast geselecteerd maken, ipv een nieuwe optie toevoegen met die waarde (beetje dubbelop). Een voorbeeld hiervan is:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<select name="geboortejaar">
<?php
$options = array('Ja','Nee');
if (isset($_SESSION['input']['geboortejaar']) && $_SESSION['input']['geboortejaar'] != ''){
$selected_waarde = $_SESSION['input']['geboortejaar'];
}
foreach ($options as $waarde){
if ($waarde == $selected_waarde){
$selected = ' selected ';
}else{
$selected = '';
}
echo '<option value="'.$waarde.'" '.$selected.'>'.$waarde.'</option>';
}
?>
</select>
<?php
$options = array('Ja','Nee');
if (isset($_SESSION['input']['geboortejaar']) && $_SESSION['input']['geboortejaar'] != ''){
$selected_waarde = $_SESSION['input']['geboortejaar'];
}
foreach ($options as $waarde){
if ($waarde == $selected_waarde){
$selected = ' selected ';
}else{
$selected = '';
}
echo '<option value="'.$waarde.'" '.$selected.'>'.$waarde.'</option>';
}
?>
</select>
Misschien een domme opmerking erbij, maar als iemand mij vraagt of ik een geboortejaar heb of niet, antwoord ik altijd met Ja, nooit met Nee. Ik denk dat iedereen dat doet.
Gewijzigd op 25/12/2013 20:30:55 door Albert de Wit
Haha het is niet voor geboortejaar, maar dat had ik nog niet veranderd ;-)
Bedankt voor je hulp, zeker dat laatste kan ik goed gebruiken, ziet er eenvoudiger uit :)
Ga ermee aan de slag, thanks!
Bedankt voor je hulp, zeker dat laatste kan ik goed gebruiken, ziet er eenvoudiger uit :)
Ga ermee aan de slag, thanks!




