在 PHP 中显示数据库中的复选框值

Posted

技术标签:

【中文标题】在 PHP 中显示数据库中的复选框值【英文标题】:Show checkbox values from database in PHP 【发布时间】:2016-09-05 00:42:50 【问题描述】:

在数据库中,我有一列 'language',其值分别为 EnglishArabicUrdu。现在,我正在获取这些值并在复选框中显示这些值以进行更新。如果复选框的值与数据库值匹配,我必须选中复选框,然后将其选中,否则未选中。但是我得到了错误的结果。下面的代码仅适用于从数据库返回的第一个值,在我的情况下是 'English' 并检查它是否与数据库值匹配但代码不匹配为其他值工作,即使它与数据库值匹配,它仍然处于未选中状态。请帮助我..

下面是我的代码和图片...

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;  ?>

现在,我的数组中有 EnglishHindiArabic。但是我的代码仅适用于数组的第一个元素,即 English 并且 make 已检查,但对于其余值,即使语句匹配,它仍然未检查。对于其余的值,它总是会使用 else 语句。请告诉我问题出在哪里。提前谢谢..

【问题讨论】:

添加用户时如何在前端创建语言复选框? @mujas 通过简单的 html () 等。 尝试将它放在一个 foreach 循环中 你能把你的数组粘贴到下面吗? 【参考方案1】:

试试下面的代码。

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

【讨论】:

【参考方案2】:

试试这个:

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

?>

虽然我没有测试过上面的代码,但我认为这个应该适合你。

【讨论】:

错了。它将始终考虑 $checkedEng、$checkedHindi 中的最后一行值。 @RuchishParikh,你能解释一下吗? 如果 $lang_spoken 有多个记录,那么它会考虑最后一个。 @Junaidafzal,请立即查看最新的。抱歉,我错过了一个用户可以拥有不止一种口语的情况。【参考方案3】:

您可以使用in_array() 方法。 你有语言数组。

$lang_spoken;

在你的 html 文件中

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

【讨论】:

这个方法你试过了吗?【参考方案4】:
<?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>

【讨论】:

以上是关于在 PHP 中显示数据库中的复选框值的主要内容,如果未能解决你的问题,请参考以下文章

在javascript和PHP中的字符串中获取多个选中的复选框值

如何检查数据库PHP Laravel中存在的复选框数组值?

如何在复选框列表中显示数据库中的值?

当数组mysql查询中的复选框值时检查php表单?

php从数据库中删除值并使其他不变

如何根据复选框更新数据库值? jQuery/php/ajax