Show checkbox values from database in PHP

断了今生、忘了曾经 提交于 2021-02-17 02:39:06

问题


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...

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..


回答1:


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.




回答2:


Try below code.

<?php
$checkedEnglish = $checkedHindi = 0;    
foreach($lang_spoken as $lang){
    if($lang['language']=="English"){
        $checkedEnglish = 1;
    }
    elseif($lang['language']=="Hindi")
    {
        $checkedHindi = 1;
    }
}
?>

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

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



回答3:


<?php 

$lang_spoken = array();
$lang_spoken[0]['language'] = 'English';
$lang_spoken[1]['language'] = 'Hindi';
    $isEnglish = "";
    $isHindi = "";
foreach($lang_spoken as $lang){


    if($lang['language']=="English"){
        $isEnglish = "checked=checked";
    }

    if($lang['language']=="Hindi"){
        $isHindi = "checked=checked";
    }
}
?>

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

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



回答4:


You can use in_array() method. you have languages array with you.

$lang_spoken;

in your html file

<label class="col-md-4">
<input type="checkbox" value="English" name="language[]" id='checkboxes' <?php if (in_array("English", $lang_spoken))
{?> checked <?php } ?>/> English </label>


来源:https://stackoverflow.com/questions/37131718/show-checkbox-values-from-database-in-php

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!