问题
In Database I have a column 'language' which have values English, Arabic, Urdu respectively. Now, I am getting these values and show these values in checkboxes for update purposes. I have to check the checkbox if it matches the value with database value and then make it checked otherwise unchecked. But I am getting the wrong results.. Below code is working fine for just 1st value returned from database which is 'English' in my case and it is checked if it matches the database value but code is not working for other values and it remains unchecked even if it matches the database value.. Please help me..
Below is my code and image...
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; } ?>
Now, I have English,Hindi,Arabic in Array. But my code is only working for 1st element of array which is English and make is checked but for the rest of values it remain unchecked even if statement is matched. It is always going to else statement for rest of values.. Please tell me where is the problem. Thanks in advance..
回答1:
Try this:
$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>
?>
Though I haven't tested the above code, but I think this one should work for you.
回答2:
Try below code.
<?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>
回答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>
回答4:
You can use in_array() method. you have languages array with you.
$lang_spoken;
in your html file
<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>
来源:https://stackoverflow.com/questions/37131718/show-checkbox-values-from-database-in-php