在 PHP 中显示数据库中的复选框值
Posted
技术标签:
【中文标题】在 PHP 中显示数据库中的复选框值【英文标题】:Show checkbox values from database in PHP 【发布时间】:2016-09-05 00:42:50 【问题描述】:在数据库中,我有一列 'language',其值分别为 English、Arabic、Urdu。现在,我正在获取这些值并在复选框中显示这些值以进行更新。如果复选框的值与数据库值匹配,我必须选中复选框,然后将其选中,否则未选中。但是我得到了错误的结果。下面的代码仅适用于从数据库返回的第一个值,在我的情况下是 '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; ?>
现在,我的数组中有 English、Hindi、Arabic。但是我的代码仅适用于数组的第一个元素,即 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 中显示数据库中的复选框值的主要内容,如果未能解决你的问题,请参考以下文章