在数据库中,我有一个“语言”列,分别有英语、阿拉伯语和乌尔都语的值。现在,我将获取这些值并在复选框中显示这些值以进行更新。如果该值与数据库值匹配,则必须选中该复选框,否则将选中该复选框。但我得到了错误的结果。。下面的代码只适用于从数据库返回的第一个值(在我的示例中为“English”),它将检查是否与数据库值匹配,但代码不适用于其他值,并且它将保持未选中状态,即使它与数据库值匹配。。请帮帮我。。
下面是我的代码和图像。。。
菲律宾比索:-
$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,make被选中,但对于其他值,即使语句匹配,它也保持未选中状态。它总是会对其他值执行else语句。。请告诉我问题出在哪里。提前谢谢。。
最佳答案
试试这个:
$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>
?>
虽然我还没有测试过上面的代码,但是我认为这个应该对你有用。
关于php - 在PHP中显示数据库中的复选框值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37131718/