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)
PHP script in nieuw venster Selecteer het PHP script
1
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>';
    }

?>

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)
PHP script in nieuw venster Selecteer het PHP script
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

<?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>

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Selectief Geheugen
  2. Waarde opvragen en de juiste optie selecteren
  3. Een kortere manier zonder notices
  4. Een mooiere manier met associatieve arrays
  5. Meer dan 1 selectbox: automatisch genereren
  6. Eureka: multidimensionale array!

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.