Form input array's volgorde
ik heb een hele korte vraag.
Als ik een formulier heb met array's
bijv. <input type="text" name="my_options[]"> <input type="text" name="my_settings[]">
Als ik dan in php $options = $_POST['my_options']; $settings = $_POST['my_settings[]'];
Kan ik er dan van uit gaan, dat de volgorde van my_options en my_settings hetzelfde is?
Dat $settings[8] ook bij $options[8] hoort?
Gewijzigd op 14/04/2016 12:37:49 door Dennis WhoCares
:)
Maar zijn deze variabel dan? Waarom heb je opties en settings? Wat is het verschil hiertussen? En als er geen verschil is, wat ik een beetje uit het bovenstaande verhaal opmaak, waarom gebruik je dan twee verschillende notaties voor hetzelfde ding?
Thomas, ik merk nu dat ik het verkeerd verwoord heb en onderweg in de trein niet goed nagedacht heb.
Ik heb niet evenveel opties als settings
Ehm, ik zal de settings een nummer geven, setting1[]
Een optie is eigenlijk alleen een naam, en de setting is de daadwerkelijke optie voor hieronder.
Maar de volgorde is wel zoals ik ze invoer dus. Als ik 10 inputs heb van setting[] dan is de laatste invoer daadwerkelijk $_POST['setting'][9]
Ik zie nog steeds niet helemaal het verschil tussen de "options" en "settings".
Een concreet voorbeeld van gebruik zou je vraagstelling (en het beantwoorden ervan) vele malen makkelijker kunnen maken.
Dennis WhoCares op 14/04/2016 12:31:09:
Kan ik er dan van uit gaan, dat de volgorde van my_options en my_settings hetzelfde is?
Dat $settings[8] ook bij $options[8] hoort?
Dat $settings[8] ook bij $options[8] hoort?
De volgorde komt terug zoals ze op het moment van versturen in de HTML DOM staan.
Dat wil zeggen dat een slimmerik de originele HTML kan wijzigen en dan komen ze in de verkeerde volgorde op de server binnen. Dit kan ook doelbewust gedaan worden met bijvoorbeeld jQuery's Sortable.
Mijn aanbeveling zou dus zijn om je $_POST array goed op te bouwen.
Zoiets:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
echo '<pre>' . print_r($_POST, TRUE) . '</pre>';
}
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>een titel</title>
</head>
<body>
<form action="" method="post">
<input type="text" name="users[0][name]" value="Frank" />
<input type="text" name="users[0][email]" value="[email protected]" /><br>
<input type="text" name="users[1][name]" value="Dennis" />
<input type="text" name="users[1][email]" value="[email protected]" /><br>
<button type="submit">Verzenden</button>
</form>
</body>
</html>
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
echo '<pre>' . print_r($_POST, TRUE) . '</pre>';
}
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>een titel</title>
</head>
<body>
<form action="" method="post">
<input type="text" name="users[0][name]" value="Frank" />
<input type="text" name="users[0][email]" value="[email protected]" /><br>
<input type="text" name="users[1][name]" value="Dennis" />
<input type="text" name="users[1][email]" value="[email protected]" /><br>
<button type="submit">Verzenden</button>
</form>
</body>
</html>
Output:
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
Array
(
[users] => Array
(
[0] => Array
(
[name] => Frank
[email] => [email protected]
)
[1] => Array
(
[name] => Dennis
[email] => [email protected]
)
)
)
(
[users] => Array
(
[0] => Array
(
[name] => Frank
[email] => [email protected]
)
[1] => Array
(
[name] => Dennis
[email] => [email protected]
)
)
)
Gewijzigd op 14/04/2016 19:12:12 door Frank Nietbelangrijk