Meer dan 1 selectbox: automatisch genereren
Als we van dit verhaal een functie kunnen maken, kunnen we het automatiseren. Gelukkig blijkt dat helemaal niet moeilijk:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
// $name is de naam van de selectbox
// $options is de naam van de associatieve array met de waardes er in
function make_select ($name, $options) {
echo '<select name="' . $name . '">';
foreach ($options as $key => $value) {
echo '<option value="' . $key . '"' . $value . '>' . $key . '</option>';
}
echo '</select>';
}
?>
// $name is de naam van de selectbox
// $options is de naam van de associatieve array met de waardes er in
function make_select ($name, $options) {
echo '<select name="' . $name . '">';
foreach ($options as $key => $value) {
echo '<option value="' . $key . '"' . $value . '>' . $key . '</option>';
}
echo '</select>';
}
?>
Hieronder een compleet werkend voorbeeld met twee selectboxen (maanden en jaren). Er zit een kleine extra functie bij die tabs en eventueel een newline plaatst voordat je iets echoot. Zo ziet je broncode er ook nog een beetje netjes uit.
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
error_reporting (E_ALL);
function t($n_tabs, $newline = false) {
if ($newline) echo "\n";
for ($i = 0; $i < $n_tabs; $i++) {
echo "\t";
}
}
function make_select ($name, $options) {
t (3, true);
echo '<select name="' . $name . '">';
foreach ($options as $key => $value) {
t (4, true);
echo '<option value="' . $key . '"' . $value . '>' . $key . '</option>';
}
t (3, true);
echo '</select>';
}
$maanden = array (
'januari' => '', 'februari' => '', 'maart' => '', 'april' => '', 'mei' => '', 'juni' => '',
'juli' => '', 'augustus' => '', 'september' => '', 'oktober' => '', 'november' => '', 'december' => '');
$jaren = array (
'2006' => '', '2007' => '', '2008' => '', '2009' => '', '2010' => '', '2011' => '',
'2012' => '', '2013' => '', '2014' => '', '2015' => '', '2016' => '', '2017' => '');
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset ($_POST['maand']) && isset ($_POST['jaar'])) {
$maanden[$_POST['maand']] = ' selected="selected"';
$jaren[$_POST['jaar']] = ' selected="selected"';
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Selective Memory</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form action="index.php" method="post">
<p>
<?php
make_select ('maand', $maanden);
make_select ('jaar', $jaren);
?>
<input type="submit" value="verzenden">
</p>
</form>
</body>
</html>
« vorige pagina | volgende pagina »
Inhoudsopgave
- Selectief Geheugen
- Waarde opvragen en de juiste optie selecteren
- Een kortere manier zonder notices
- Een mooiere manier met associatieve arrays
- Meer dan 1 selectbox: automatisch genereren
- Eureka: multidimensionale array!