简体   繁体   中英

How to get individual values from multiple checkbox dynamically using php?

I am trying to get the individual values from the checkbox , $mail_aspects['active'] and $mail_aspects['aspect_id'] .

But using the below code, I am only able to get the values whose $mail_aspects['active']=1 . But I need to get both checked and unchecked values to update in DB.

Can anyone help on this issue?

<form method='post' style='display: inline-block;'>
    <div class="col-md-12">
        <?foreach ($customer['mail_aspects'] as $mail_aspects)
        { ?>
            <table>
                <tr>
                    <td>
                        <label> 
                            <input type="checkbox" name="mail_aspects[]" <?=($mail_aspects['active'] == '1') ? 'checked' : ''?>
                            value="<?=$mail_aspects['active']?>,<?=$mail_aspects['aspects_id']?>">
                            <?=$mail_aspects['aspects_name']?>
                        </label>
                    </td>
                </tr>
            </table> 
        <? }?>
    </div>
    <button type='submit' name='submit' value='Submit'>Save Aspects</button>
</form>

Using PHP

if(isset($_POST['submit'])){
    $mail_aspectsdet=$_POST['mail_aspects'];
    for($i=0;$i<count($mail_aspectsdet);$i++)
    {
        $exp=explode(',',$mail_aspectsdet[$i]);//Explode id and name
        $stmt=$db->exec("UPDATE customer_preferences set active=$exp[0] where customer_id=$customerID and aspects_id=$exp[1]");
    }   
}

To receive unchecked checkbox values in $_POST you have to add a hidden input field with same name and null value before adding the checkbox. If a checkbox is unchecked the null value of hidden input will be submitted otherwise the value of the checkbox.

In your case it should look like:

<form method='post' style='display: inline-block;'>
<div class="col-md-12">
    <?foreach ($customer['mail_aspects'] as $mail_aspects)
    { ?>
        <table>
            <tr>
                <td>
                    <label> 
                        <input type="hidden" name="mail_aspects[<?=$mail_aspects['aspects_id']?>]" value="0" />
                        <input type="checkbox" name="mail_aspects[<?=$mail_aspects['aspects_id']?>]" <?=($mail_aspects['active'] == '1') ? 'checked' : ''?>
                        value="1">
                        <?=$mail_aspects['aspects_name']?>
                    </label>
                </td>
            </tr>
        </table> 
    <? }?>
</div>
<button type='submit' name='submit' value='Submit'>Save Aspects</button>
</form>

Important is that the names of the hidden and the checkbox input are identically.

Your PHP code should work properly.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM