【问题标题】:Show checkbox values from database in PHP在 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 循环中
  • 你能把你的数组粘贴到下面吗?

标签: php mysql checkbox


【解决方案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>
    

    【讨论】:

      猜你喜欢
      • 2019-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-24
      • 1970-01-01
      • 2019-05-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多