Van checkboxen naar array

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Sjoerd

Sjoerd

13/12/2007 05:54:00
Quote Anchor link
Wanneer een formulier met een aantal aangevinkte checkboxen wordt gepost, hoe krijg je dan de geselecteerde waardes in een array?

Ben net begonnen met PHP, maar hier kom ik even niet uit.

Bij bijv. het volgende script lukt het niet:

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
<?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>
"
);
}

?>
Gewijzigd op 01/01/1970 01:00:00 door Sjoerd
 
PHP hulp

PHP hulp

24/11/2024 00:34:18
 
Robert Deiman

Robert Deiman

13/12/2007 09:00:00
Quote Anchor link
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
<?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>
"
);
}

?>

Nu staan de kleuren in de array $kleuren. JE was al goed op weg.
 
Arjan Schuurman

Arjan Schuurman

13/12/2007 09:29:00
Quote Anchor link
kleine tip, het is misschien handig om een label bij checkboxes te gebruiken, voorbeeld:
<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.
 
Jan Koehoorn

Jan Koehoorn

13/12/2007 09:41:00
Quote Anchor link
Nog een tip: zorg er via je CSS voor dat de muis verandert als je er overheen zweeft. Dan is het meteen duidelijk voor de user dat hij op een label kan klikken om de checkbox aan/uit te vinken.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
label        {cursor: pointer;}
 
Richard

richard

13/12/2007 10:54:00
Quote Anchor link
Je kan labels toch ook zo gebruiken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<label><input type="checkbox" name="kleur"value="blauw">Blauw</label>
Gewijzigd op 01/01/1970 01:00:00 door richard
 
Robert Deiman

Robert Deiman

13/12/2007 11:26:00
Quote Anchor link
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! :)
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
 
Richard

richard

13/12/2007 11:34:00
Quote Anchor link
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! :)


Het is volgens de standaarden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>


Geeft gewoon valid aan hoor (http://validator.w3.org/check)
Gewijzigd op 01/01/1970 01:00:00 door richard
 
Joren de Wit

Joren de Wit

13/12/2007 11:37:00
Quote Anchor link
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...
 
Richard

richard

13/12/2007 11:43:00
Quote Anchor link
Je kan je label toch een class meegeven?
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
 
Sjoerd

Sjoerd

13/12/2007 15:52:00
Quote Anchor link
Bedankt, Robert.

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?
 
Joren de Wit

Joren de Wit

13/12/2007 15:54:00
Quote Anchor link
Je bedoelt in deze code?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
foreach ($kleur as $key => $value) {
   $kleuren[] = $value;    
    }

?>

Dat betekent dus dat $kleur geen array is. Controleer dat eens...
 
Sjoerd

Sjoerd

13/12/2007 16:43:00
Quote Anchor link
Nee, $kleur is leeg. Dat was ook mijn eerste vraag; hoe ik de variabelen uit de checkboxen in de array $kleur krijg.

(Dat van die labels is trouwens ook interessant, hoor.)
 
Gerben Jacobs

Gerben Jacobs

13/12/2007 16:49:00
Quote Anchor link
Checkboxen en radioboxen zijn of leeg of 'ON'.

Dus waarschijnlijk moet je daar even op controleren.
 
Sjoerd

Sjoerd

13/12/2007 17:31:00
Quote Anchor link
De checkboxen hebben een waarde en zijn aangevinkt. Ik heb het bovenste script van Robert gebruikt.
Het script staat hier:
http://www.gettisign.nl/kleur.php
 
Joren de Wit

Joren de Wit

13/12/2007 17:37:00
Quote Anchor link
Script je van Robert werkt bij mij gewoon hoor, als ik maar minimaal 1 checkbox aanvink. Anders krijg je inderdaad een undefined index na het versturen van het formulier...

ps. Even een stukje netter:
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
<?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>
    '
;
}

?>
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
Sjoerd

Sjoerd

13/12/2007 17:59:00
Quote Anchor link
Top. Werkt als vanouds. Ik kan weer verder.
 



Overzicht Reageren

 
 

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.