<select> keuze onthouden
Hoe kan ik in een $_GET form de <select> keuzes laten onthouden?
Ik heb het volgende geprobeerd met PHP maar dat lijkt mij een enorme omweg.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<select name='provincie'>
<option <?php if ($_GET['provincie']=='' ){echo 'selected="selected"'; } ?> value='' >Kies... </option>
<option <?php if ($_GET['provincie']=='Drenthe' ){echo 'selected="selected"'; } ?> value='Drenthe' >Drenthe </option>
<option <?php if ($_GET['provincie']=='Flevoland' ){echo 'selected="selected"'; } ?> value='Flevoland' >Flevoland </option>
<option <?php if ($_GET['provincie']=='Friesland' ){echo 'selected="selected"'; } ?> value='Friesland' >Friesland </option>
<option <?php if ($_GET['provincie']=='Gelderland' ){echo 'selected="selected"'; } ?> value='Gelderland' >Gelderland </option>
<option <?php if ($_GET['provincie']=='Groningen' ){echo 'selected="selected"'; } ?> value='Groningen' >Groningen </option>
<option <?php if ($_GET['provincie']=='Limburg' ){echo 'selected="selected"'; } ?> value='Limburg' >Limburg </option>
<option <?php if ($_GET['provincie']=='Noord Brabant' ){echo 'selected="selected"'; } ?> value='Noord Brabant' >Noord Brabant </option>
<option <?php if ($_GET['provincie']=='Noord Holland' ){echo 'selected="selected"'; } ?> value='Noord Holland' >Noord Holland </option>
<option <?php if ($_GET['provincie']=='Overijssel' ){echo 'selected="selected"'; } ?> value='Overijssel' >Overijssel </option>
<option <?php if ($_GET['provincie']=='Zuid Holland' ){echo 'selected="selected"'; } ?> value='Zuid Holland' >Zuid Holland </option>
<option <?php if ($_GET['provincie']=='Utrecht' ){echo 'selected="selected"'; } ?> value='Utrecht' >Utrecht </option>
<option <?php if ($_GET['provincie']=='Zeeland' ){echo 'selected="selected"'; } ?> value='Zeeland' >Zeeland </option>
</select>
<option <?php if ($_GET['provincie']=='' ){echo 'selected="selected"'; } ?> value='' >Kies... </option>
<option <?php if ($_GET['provincie']=='Drenthe' ){echo 'selected="selected"'; } ?> value='Drenthe' >Drenthe </option>
<option <?php if ($_GET['provincie']=='Flevoland' ){echo 'selected="selected"'; } ?> value='Flevoland' >Flevoland </option>
<option <?php if ($_GET['provincie']=='Friesland' ){echo 'selected="selected"'; } ?> value='Friesland' >Friesland </option>
<option <?php if ($_GET['provincie']=='Gelderland' ){echo 'selected="selected"'; } ?> value='Gelderland' >Gelderland </option>
<option <?php if ($_GET['provincie']=='Groningen' ){echo 'selected="selected"'; } ?> value='Groningen' >Groningen </option>
<option <?php if ($_GET['provincie']=='Limburg' ){echo 'selected="selected"'; } ?> value='Limburg' >Limburg </option>
<option <?php if ($_GET['provincie']=='Noord Brabant' ){echo 'selected="selected"'; } ?> value='Noord Brabant' >Noord Brabant </option>
<option <?php if ($_GET['provincie']=='Noord Holland' ){echo 'selected="selected"'; } ?> value='Noord Holland' >Noord Holland </option>
<option <?php if ($_GET['provincie']=='Overijssel' ){echo 'selected="selected"'; } ?> value='Overijssel' >Overijssel </option>
<option <?php if ($_GET['provincie']=='Zuid Holland' ){echo 'selected="selected"'; } ?> value='Zuid Holland' >Zuid Holland </option>
<option <?php if ($_GET['provincie']=='Utrecht' ){echo 'selected="selected"'; } ?> value='Utrecht' >Utrecht </option>
<option <?php if ($_GET['provincie']=='Zeeland' ){echo 'selected="selected"'; } ?> value='Zeeland' >Zeeland </option>
</select>
Kan dit makkelijker?
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
Sowieso raad ik je aan om arrays te gebruiken.
<select name="provincies">
<?php foreach(array('Drenthe', 'Flevoland', 'Friesland') as $provincie) { ?>
<option value="<?=$provincie;?>" <?php if($provincie == $_GET['provincie']) echo 'selected="selected"'; ?>><?=$provincie;?></option>
<?php } ?>
?>
</select>
<select name="provincies">
<?php foreach(array('Drenthe', 'Flevoland', 'Friesland') as $provincie) { ?>
<option value="<?=$provincie;?>" <?php if($provincie == $_GET['provincie']) echo 'selected="selected"'; ?>><?=$provincie;?></option>
<?php } ?>
?>
</select>
Gewijzigd op 28/04/2012 21:00:52 door Mar cel
en dit werkt?
Wat houdt je tegen om het uit te proberen?
Toevoeging op 28/04/2012 21:34:00:
Notice: Undefined index: provincie in C:\xampp\htdocs\zoekmachine.php on line 13
>Drenthe
Je hebt dan geen ?provincie meegegeven in je URL.
thx!
ik ga direct ff kijken hoe dat werkt
Toevoeging op 28/04/2012 21:49:11:
aha! ik heb het foutje gevonden ;)
je had de <select name='provincies'> ipv <select name='provincie'> gebruikt ;)
het werkt nu perfect :D
BEDANKT!!
Toevoeging op 28/04/2012 21:51:53:
ik heb ook nog een kleine wijziging erin gemaakt.
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
if (isset($_GET['provincie']))
{
if ($provincie == $_GET['provincie'])
{
echo 'selected="selected"';
}
}
{
if ($provincie == $_GET['provincie'])
{
echo 'selected="selected"';
}
}
Toevoeging op 28/04/2012 22:00:58:
ik heb de code een beetje gemodificeerd (sorry) want het was lastig voor mij te begrijpen
ik deel hem toch maar even voor degenen die er interesse in hebben
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
<?php
echo "<select name='provincie'>";
foreach (array('Drenthe','Flevoland','Friesland','Gelderland','Groningen','Limburg','Noord Brabant','Noord Holland','Overijssel','Zuid Holland','Utrecht','Zeeland') as $provincie)
{
echo "<option value='".$provincie."' ";
if (isset($_GET['provincie']))
{
if ($provincie == $_GET['provincie'])
{
echo 'selected="selected"';
}
}
echo '>';
echo $provincie.'</option>';
}
echo "</select>";
?>
echo "<select name='provincie'>";
foreach (array('Drenthe','Flevoland','Friesland','Gelderland','Groningen','Limburg','Noord Brabant','Noord Holland','Overijssel','Zuid Holland','Utrecht','Zeeland') as $provincie)
{
echo "<option value='".$provincie."' ";
if (isset($_GET['provincie']))
{
if ($provincie == $_GET['provincie'])
{
echo 'selected="selected"';
}
}
echo '>';
echo $provincie.'</option>';
}
echo "</select>";
?>
Gewijzigd op 28/04/2012 21:46:09 door Albert de Wit
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
echo '<select name="provincie">';
foreach (array('Drenthe','Flevoland','Friesland','Gelderland','Groningen','Limburg','Noord Brabant','Noord Holland','Overijssel','Zuid Holland','Utrecht','Zeeland') as $provincie)
{
$selected = if (isset($_GET['provincie']) AND $provincie == $_GET['provincie']) 'selected="selected" : '';
echo '<option value="'.$provincie.'" '.$selected.'></option>';
}
echo '</select>';
?>
echo '<select name="provincie">';
foreach (array('Drenthe','Flevoland','Friesland','Gelderland','Groningen','Limburg','Noord Brabant','Noord Holland','Overijssel','Zuid Holland','Utrecht','Zeeland') as $provincie)
{
$selected = if (isset($_GET['provincie']) AND $provincie == $_GET['provincie']) 'selected="selected" : '';
echo '<option value="'.$provincie.'" '.$selected.'></option>';
}
echo '</select>';
?>
Kortere code, gebruik van " kan gewoon in html als je in php echoëd met '.
En je if-statements kunnen korter (wellicht iets minder eenvoudig, maar je html-code schrijf je zo makkelijker.
Gewijzigd op 29/04/2012 14:06:48 door Eddy E
Nu gebruik je het door elkaar heen.
Is aangepast!
Ik heb het hele plan nu in OOP proberen te zetten alleen gaat dat minder goed dan gedacht. Heeft iemand een idee hoe ik dit kan oplossen?
Hier even de code:
Code (php)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
function add_branche($keuze)
{
$this->Connect('localhost','root','','test');
$query = mysql_query("SELECT branche FROM sorteeropties");
$this->branche .= "<select name='branche'>";
if ($keuze==1)
{
$this->branche .= "<option value=''>Kies...</option>";
}
while ($row = mysql_fetch_row($query))
{
$this->branche .= "
<option value='".$row[0]."'>".$row[0]."</option>
";
}
$this->branche .= "</select>";
return $this->branche;
}
?>
function add_branche($keuze)
{
$this->Connect('localhost','root','','test');
$query = mysql_query("SELECT branche FROM sorteeropties");
$this->branche .= "<select name='branche'>";
if ($keuze==1)
{
$this->branche .= "<option value=''>Kies...</option>";
}
while ($row = mysql_fetch_row($query))
{
$this->branche .= "
<option value='".$row[0]."'>".$row[0]."</option>
";
}
$this->branche .= "</select>";
return $this->branche;
}
?>
Geef aub zoveel mogelijk commentaar wat ik beter moet doen en wat gewoon verschrikkelijk slordig eruit ziet
Gewijzigd op 08/05/2012 11:55:54 door Albert de Wit
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$options = '';
$provincies = array('Drenthe', 'Flevoland', 'Friesland', 'Gelderland', 'Groningen', 'Limburg', 'Noord Brabant', 'Noord Holland', 'Overijssel', 'Zuid Holland', 'Utrecht', 'Zeeland');
foreach ($provincies as $provincie) {
$options .= sprintf('<option value="%s" %s>%s</option>', $provincie, ((isset($_GET['provincie']) && $provincie == $_GET['provincie']) ? 'selected="selected"' : ''), $provincie);
}
echo sprintf('<select name="provincie">%s</select>', $options);
?>
$options = '';
$provincies = array('Drenthe', 'Flevoland', 'Friesland', 'Gelderland', 'Groningen', 'Limburg', 'Noord Brabant', 'Noord Holland', 'Overijssel', 'Zuid Holland', 'Utrecht', 'Zeeland');
foreach ($provincies as $provincie) {
$options .= sprintf('<option value="%s" %s>%s</option>', $provincie, ((isset($_GET['provincie']) && $provincie == $_GET['provincie']) ? 'selected="selected"' : ''), $provincie);
}
echo sprintf('<select name="provincie">%s</select>', $options);
?>
Een beetje off topic, maar ...
$_POST['zoek'], komt dat van <input type="submit" name="zoek"/> ?
Niet doen. Niet controleren op het al dan niet aanwezig zijn van een klik op de knop.
In verschillende gevallen wordt die knop (nu ja ... de POST data) niet eens meegestuurd naar de server.
Gewijzigd op 08/05/2012 14:15:00 door Kris Peeters