在PHP

时间:2016-05-10 07:17:46

标签: php mysql checkbox

在数据库中,我有一列&#39; ,其值为英语阿拉伯语乌尔都语< / strong>分别。现在,我将获取这些值并在复选框中显示这些值以进行更新。我必须选中复选框,如果它与值与数据库值匹配,然后检查否则未选中。但是我得到了错误的结果..下面的代码工作正常,因为在我的情况下从数据库返回的第一个值是&#39;英语&#39; ,并检查它是否与数据库匹配值,但代码不适用于其他值,即使它与数据库值匹配,它仍然是未选中的。请帮帮我..

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

See Image For Error

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被检查但是对于其余的值,即使匹配语句,它仍然是未选中的。对于其余的值,它总是会声明其他声明..请告诉我问题出在哪里。提前谢谢..

4 个答案:

答案 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;

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