<?php
$collection= array('appels', 'peren', 'bananen', 'koekjes', 'sap');
if(isset($_POST['submit']))
{   $fruit = $_POST['fruit'];
   $values = array($collection);
    foreach($collection as $selection )
    {     if(array($selection, $fruit))
            { $values[ $selection ] = 1;  }
        else
            { $values[ $selection ] = 0;  }
   }
?>


Waar of wat is hier boven fout? Als ik het insert in de database zijn alle antwoorden 1.
Maar ik heb een vraag over hoe het komt dat data in mijn database krijg dat alleen maar 1 is en niet 0 terwijl niet alles is aangevinkt..
$_POST['fruit'] is een array (of een niet-bestaand formulier-element als geen enkele checkbox is aangevinkt).

Je vergelijkt op regel 21 van je laatste fragment een waarde ($selection) met een array ($_POST['fruit']). Dit levert nooit iets zinnigs op.

Wat je dus zou moeten doen is controleren of $_POST['fruit'] bestaat en een array is, en deze dan doorlopen en controleren aan de hand van de lijst van toegestane waarden (ook wel "whitelist" genoemd, de $collection) welke (geldige) items waren geselecteerd.
Het is toch gewoon simpel?

Als het geselecteerd is wordt de value 1 en als het niet geselecteerd is wordt het 0.
Nu heb ik dit geprobeerd, en wat dus niet werkt.. Maar hoe zou ik het dan wel goed moeten doen.
(Graag laten zien hoe of iets van enige tutorial laten zien.)
Met isset() eerst kijken of $_POST['fruit'] bestaat
Dan met is_array() controleren of $_POST['fruit'] een array is.
En dan met in_array() controleren of de gekozen $selection voorkomt in de Scollection.
[/code]<?php
if(isset($_POST['submit']))
{ is_array(($_POST['fruit']);
in_array($collection);
$values = array(fruit);
foreach($collection as $selection )
{ if($selection === $fruit)
{ $values[ $selection ] = 1; }
else
{ $values[ $selection ] = 0; }
}
?>
[/code]

Dus dan krijg je zoiets?
Korte vraag. Begrijp je eigenlijk wel wat de code die je typt aan het doen is? En wat er verwacht wordt dat de code gaat doen? Dus wat de input van de code is, en wat het uiteindelijke resultaat moet zijn? Ik ben er namelijk voorstander van dat je zoveel mogelijk zelf doet, dus is het handig als duidelijk is in hoeverre we je aan de hand moeten vasthouden.
Misschien is het handig op eens op de linkjes van de PHP-functies in je codeblok te klikken.
Want ik durf te wedden dat je er nog vrijwel niks van gelezen hebt.
Ik had het wel opgezocht.. Misschien niet zorgvuldig genoeg om zeker te weten dat het dat was, maar ik snap het nog steeds niet 100%
Controleer met een if-else op is_array en in_array.

Reageren