在数据库中,我有一列&#39; ,其值为英语,阿拉伯语,乌尔都语< / strong>分别。现在,我将获取这些值并在复选框中显示这些值以进行更新。我必须选中复选框,如果它与值与数据库值匹配,然后检查否则未选中。但是我得到了错误的结果..下面的代码工作正常,因为在我的情况下从数据库返回的第一个值是&#39;英语&#39; ,并检查它是否与数据库匹配值,但代码不适用于其他值,即使它与数据库值匹配,它仍然是未选中的。请帮帮我..
以下是我的代码和图片......
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; } ?>
现在,我在Array中有英语,印地语,阿拉伯语。但是我的代码只适用于英语的数组的第一个元素,并且make被检查但是对于其余的值,即使匹配语句,它仍然是未选中的。对于其余的值,它总是会声明其他声明..请告诉我问题出在哪里。提前谢谢..
答案 0 :(得分:3)
尝试以下代码。
<?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>
答案 1 :(得分: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>
答案 2 :(得分:2)
您可以使用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>
答案 3 :(得分:1)
试试这个:
$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>
&GT;
虽然我没有测试过上面的代码,但我认为这个代码应该适合你。