Skip to content
Advertisement

Show checkbox values from database in PHP

In Database I have a column ‘language’ which have values English, Arabic, Urdu respectively. Now, I am getting these values and show these values in checkboxes for update purposes. I have to check the checkbox if it matches the value with database value and then make it checked otherwise unchecked. But I am getting the wrong results.. Below code is working fine for just 1st value returned from database which is ‘English’ in my case and it is checked if it matches the database value but code is not working for other values and it remains unchecked even if it matches the database value.. Please help me..

Below is my code and image…

See Image For Error

PHP:-

$lang = $pdo->prepare("SELECT `language` FROM admin_panel_languages WHERE user_id=:user_id");
$lang->execute(array(":user_id"=>$user_id));
$lang_spoken=$lang->fetchAll(PDO::FETCH_ASSOC);
print_r($lang_spoken);

foreach($lang_spoken as $lang){

if($lang['language']=="English"){

?>

<label class="col-md-4">
<input type="checkbox" value="English" name="language[]" id='checkboxes' checked/> English </label>

<?php } else{ ?>

<label class="col-md-4">
<input type="checkbox" value="English" name="language[]" id='checkboxes'/> English </label>

<?php } break; } ?>

foreach($lang_spoken as $lang){

if($lang['language']=="Hindi"){

?>

<label class="col-md-4">
<input type="checkbox" value="Hindi" name="language[]" id='checkboxes' checked/> Hindi</label>

<?php } else{ ?>

<label class="col-md-4">
<input type="checkbox" value="Hindi" name="language[]" id='checkboxes'/> Hindi</label>

<?php } break; } ?>

Now, I have English,Hindi,Arabic in Array. But my code is only working for 1st element of array which is English and make is checked but for the rest of values it remain unchecked even if statement is matched. It is always going to else statement for rest of values.. Please tell me where is the problem. Thanks in advance..

Advertisement

Answer

Try this:

$lang = $pdo->prepare("SELECT `language` FROM admin_panel_languages WHERE user_id=:user_id");
$lang->execute(array(":user_id"=>$user_id));
$lang_spoken=$lang->fetchAll(PDO::FETCH_ASSOC);
print_r($lang_spoken);

$checkedEng = '';
$checkedHindi = '';

foreach($lang_spoken as $lang) {
    if (($lang['language'] == "English")) {
        $checkedEng = 'checked';
    } else if ($lang['language'] == "Hindi") {
        $checkedHindi = 'checked';
    }
}

<label class="col-md-4">
<input type="checkbox" value="English" name="language[]" id='checkboxes' <?php echo $checkedEng; ?>/> English </label>

<label class="col-md-4">
<input type="checkbox" value="Hindi" name="language[]" id='checkboxes' <?php echo $checkedHindi; ?>/> Hindi</label>

?>

Though I haven’t tested the above code, but I think this one should work for you.

Advertisement