A.L. A.L. - 1 year ago 44
PHP Question

Inserting ids of checkboxes in database with php

I have two input fields:

<input type='hidden' name='amenId[]' value='$amen[amenId]'>
<input type="checkbox" name='amentities[]' id='check'>$amen[amenBG]

These two input fields are in
tag which loops through an array($amen). After the form is submitted I have php file that loops through the array and insert the id of the checked input and the value. Now the problem comes from the fact that my input fields are checkboxes. I have used this technic for different array where the input type was text and I didn't have problems. Here I have around 30 choices to choose from and when I check the first one and the fifth one in the database where the ids of the choicse should be 1 and 5 but instead of that are 1 and 2. I'm not sure why is that but I'm thinking that it has to do with getting the values only from the checked boxes.

My php code:

$checkedAmen = '';
foreach ($_POST['amentities'] as $key => $amen) {

$checkedAmen = $amen;
$checkedId = $_POST['amenId'][$key];

if ($checkedAmen == "on") {
$checkedAmen = "Yes";
}elseif($checkedAmen == "") $checkedAmen ="No";

$sqlAmen = "INSERT INTO ObjectAmen(ProductId, AmenId, AmenData) VALUES(?, ?, ?)";
if ($stmtAmen = $db -> prepare($sqlAmen)) {
$stmtAmen -> bind_param('iis', $last, $checkedId, $checkedAmen);
echo "Error: " . $db->error;
$stmtAmen -> execute();

Can someone help me? I would like to have the correct ids correspoding to the checked choices in the database.

Answer Source

There's nothing currently tying both of your inputs together. You can have a value on a checkbox though, so if it's checked you have the id

<input type="checkbox" name='amentities[]' value='$amen[amenBG]'>

Also you want to take id's off the input if it's in a foreach, because you'll be rebinding the id every time.