Arrays als input namen in formulieren

Toelichting

In formulieren bepalen de namen van de input velden hoe de gegevens uiteindelijk verstuurd worden. Bij een reeks inputvelden die allemaal eenzelfde element bevatten, is het handig om gebruik te maken van een array als naam voor deze velden:
Code
1
<input type="text" name="veldnaam[]" />

Het grote voordeel is dat je de verschillende velden geen verschillende naam hoeft te geven (je hoeft dus niet te gaan nummeren) en het resultaat van dit formulier is met een foreach loop erg eenvoudig uit te lezen.

Voorbeeld

Klik hier voor een voorbeeld

Script

Code
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?php
ini_set
('display_errors'1);
error_reporting(E_ALL);

if(
$_SERVER['REQUEST_METHOD'] == 'POST')
{
    
$content[] = '<p><b>De $_POST array ziet er als volgt uit:</b></p>';
    
$content[] = '<pre>';
    
$content[] = print_r($_POSTtrue);
    
$content[] = '</pre>';
    
    
$content[] = '<p><b>Je hebt de volgende gegevens ingevuld:</b></p>';
    foreach(
$_POST as $key => $waarden)
    {
        
$content[] = '<p><i>'.$key.'</i></p>';
        
$content[] = '<ol>';
        foreach(
$waarden as $key => $waarde)
        {
            
$content[] = '<li>'.$waarde.'</li>';
        }
        
$content[] = '</ol>';
    }
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>

<head>

    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Jorendewit.nl - PHP Scripts - Formulier met array als inputnaam</title>
    
    <link rel="stylesheet" href="../styles/default.css" type="text/css" media="screen" />
    
</head>

<body>

    <div id="wrap">
        <p class="none small align-right"><a href="/view/13/">&lt;-- Terug naar Scripts</a></p>
        <h1>Formulier met array als inputnaam</h1>
        <div id="info">
            <p>PHP versie: &gt;= 4.1.0</p>
        </div>
        
        <p>Verzend onderstaand formulier en kijk naar de uitkomst</p>
        <form action="#" method="post" id="form_array">
            <p>
                <label class="field" for="dagen" class="naast">Dagen:</label>
                <select name="dagen[]" id="dagen" multiple="multiple" size="7" class="none">
                    
                    <?php
                        $dagen 
= array('maandag''dinsdag''woensdag''donderdag''vrijdag''zaterdag''zondag');
                        
                        foreach(
$dagen as $dag)
                        {
                            echo 
'<option value="'.$dag.'">'.$dag.'</option>'.PHP_EOL;
                        }
                    
?>
                    
                </select>
            </p>
            <p>
                <label class="field" for="rood">rood</label>
                <input type="checkbox" name="kleuren[]" id="rood" value="rood" class="none" />
            </p>
            <p>
                <label class="field" for="blauw">blauw</label>
                <input type="checkbox" name="kleuren[]" value="blauw" class="none" />
            </p>
            <p>
                <label class="field" for="groen">groen</label>
                <input type="checkbox" name="kleuren[]" value="groen" class="none" />
            </p>
            <?php
                
for($i 1$i <= 3$i++)
                {
                    echo 
'<p><label class="field" for="tekst'.$i.'">Tekst '.$i.'</label><input type="text" id="tekst'.$i.'" name="teksten[]" /></p>'.PHP_EOL;
                }
            
?>
            
            <p>
                <input type="submit" value="Verzenden" class="lijnuit" />
            </p>
        </form>
        
        <?php
        
// Weergeven van meldingen uit het phpscript.
        
if(isset($errors))
        {
            echo 
'<ul>';
            foreach(
$errors as $error);
            {
                echo 
'<li>'.$error.'</li>';
            }
            echo 
'</ul>';
        }
        elseif(isset(
$content))
        {
            foreach(
$content as $line)
            {
                echo 
$line;
            }
        }
        
?>
            
    </div>
    
</body>
</html>

Reacties