Van checkboxen naar array
Ben net begonnen met PHP, maar hier kom ik even niet uit.
Bij bijv. het volgende script lukt het niet:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
if($_SERVER['REQUEST_METHOD']=="POST"){
$kleur = ($_POST['kleur']);
foreach ($kleur as $key => $value) { echo "$key: $value<br>"; }
}else{
echo("
<form action=\"\" method=\"post\">
<input type=\"checkbox\" name=\"kleur[]\" value=\"blauw\">Blauw
<input type=\"checkbox\" name=\"kleur[]\" value=\"rood\">Rood
<input type=\"checkbox\" name=\"kleur[]\" value=\"geel\">Geel
<input type=\"submit\" value=\"Kies\">
</form>
");
}
?>
if($_SERVER['REQUEST_METHOD']=="POST"){
$kleur = ($_POST['kleur']);
foreach ($kleur as $key => $value) { echo "$key: $value<br>"; }
}else{
echo("
<form action=\"\" method=\"post\">
<input type=\"checkbox\" name=\"kleur[]\" value=\"blauw\">Blauw
<input type=\"checkbox\" name=\"kleur[]\" value=\"rood\">Rood
<input type=\"checkbox\" name=\"kleur[]\" value=\"geel\">Geel
<input type=\"submit\" value=\"Kies\">
</form>
");
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Sjoerd
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
if($_SERVER['REQUEST_METHOD']=="POST"){
$kleur = ($_POST['kleur']);
$kleuren = array();
foreach ($kleur as $key => $value) {
$kleuren[] = $value;
}
}else{
echo("
<form action=\"\" method=\"post\">
<input type=\"checkbox\" name=\"kleur[]\" value=\"blauw\">Blauw
<input type=\"checkbox\" name=\"kleur[]\" value=\"rood\">Rood
<input type=\"checkbox\" name=\"kleur[]\" value=\"geel\">Geel
<input type=\"submit\" value=\"Kies\">
</form>
");
}
?>
if($_SERVER['REQUEST_METHOD']=="POST"){
$kleur = ($_POST['kleur']);
$kleuren = array();
foreach ($kleur as $key => $value) {
$kleuren[] = $value;
}
}else{
echo("
<form action=\"\" method=\"post\">
<input type=\"checkbox\" name=\"kleur[]\" value=\"blauw\">Blauw
<input type=\"checkbox\" name=\"kleur[]\" value=\"rood\">Rood
<input type=\"checkbox\" name=\"kleur[]\" value=\"geel\">Geel
<input type=\"submit\" value=\"Kies\">
</form>
");
}
?>
Nu staan de kleuren in de array $kleuren. JE was al goed op weg.
<input type="checkbox" name="kleur" id="blauw" value="blauw"><label for="blauw"> Blauw</label>
Maakt het net even wat gebruikersvriendelijker, dan kun je ook op de tekst klikken om de checkbox aan te vinken.
Gewijzigd op 01/01/1970 01:00:00 door richard
Edit:
Overigens vind ik het wel goede aanvullende tips van beide PHPhulpers. Vind dat dat ook wel eens gezegd mag worden! :)
Overigens vind ik het wel goede aanvullende tips van beide PHPhulpers. Vind dat dat ook wel eens gezegd mag worden! :)
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
Robert_Deiman schreef op 13.12.2007 11:26:
Misschien dat het wel werkt Richard, maar zoals Arjan Schuurman het aangeeft is het eigenlijk volgens de standaarden. Probeer altijd volgens de standaarden en regeltjes te werken.
Edit:
Overigens vind ik het wel goede aanvullende tips van beide PHPhulpers. Vind dat dat ook wel eens gezegd mag worden! :)
Overigens vind ik het wel goede aanvullende tips van beide PHPhulpers. Vind dat dat ook wel eens gezegd mag worden! :)
Het is volgens de standaarden:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl" lang="nl">
<head>
<title>Test</title>
</head>
<body>
<p><label><input type="checkbox" name="kleur" value="blauw" />Blauw</label></p>
</body>
</html>
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl" lang="nl">
<head>
<title>Test</title>
</head>
<body>
<p><label><input type="checkbox" name="kleur" value="blauw" />Blauw</label></p>
</body>
</html>
Geeft gewoon valid aan hoor (http://validator.w3.org/check)
Gewijzigd op 01/01/1970 01:00:00 door richard
Is blijkbaar wel valid inderdaad. Nadeel is dat je je label niet meer onafhankelijk van je input kunt stylen. Elke style die je op je label toepast wordt ook toegepast op je input, en dat is vaak niet wat je wilt...
edit: ja, daar heb je gelijk in...
Maar volgens mij dwalen we af en had er hier iemand een probleem met zn php code.
Gewijzigd op 01/01/1970 01:00:00 door richard
Ik krijg toch nog een foutmelding "Warning: Invalid argument supplied for foreach()". Dat betekent dan toch dat er geen array $kleuren bestaat?
Hoe wordt deze array toegewezen als er alleen $kleuren = array(); staat?
Dat betekent dus dat $kleur geen array is. Controleer dat eens...
(Dat van die labels is trouwens ook interessant, hoor.)
Dus waarschijnlijk moet je daar even op controleren.
ps. Even een stukje netter:
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
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
<?php
if($_SERVER['REQUEST_METHOD']=="POST")
{
if(isset($_POST['kleur']))
{
foreach ($_POST['kleur'] as $key => $value)
{
echo $key.': '.$value.'<br />';
}
}
else
{
echo 'Geen kleur opgegeven!';
}
}
else
{
echo '
<form action="" method="post">
<input type="checkbox" name="kleur[]" value="blauw">Blauw
<input type="checkbox" name="kleur[]" value="rood">Rood
<input type="checkbox" name="kleur[]" value="geel">Geel
<input type="submit" value="Kies">
</form>
';
}
?>
if($_SERVER['REQUEST_METHOD']=="POST")
{
if(isset($_POST['kleur']))
{
foreach ($_POST['kleur'] as $key => $value)
{
echo $key.': '.$value.'<br />';
}
}
else
{
echo 'Geen kleur opgegeven!';
}
}
else
{
echo '
<form action="" method="post">
<input type="checkbox" name="kleur[]" value="blauw">Blauw
<input type="checkbox" name="kleur[]" value="rood">Rood
<input type="checkbox" name="kleur[]" value="geel">Geel
<input type="submit" value="Kies">
</form>
';
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Top. Werkt als vanouds. Ik kan weer verder.