2016-05-10 6 views
1

В базе данных у меня есть столбец «язык», которые имеют значение Английских, арабского, урду соответственно. Теперь я получаю эти значения и показываю эти значения в флажках для целей обновления. Я должен проверить флажок, если он соответствует значению с значением базы данных, а затем сделать его проверенным, иначе не установленным. Но я получаю неправильные результаты. Ниже код работает нормально только для 1-го значения, возвращаемого из базы данных, которое «Английский» в моем случае и проверяется, соответствует ли оно значению базы данных, но код не работает для других значений и она остается бесконтрольно, даже если он соответствует значению базы данных .. Пожалуйста, помогите мне ..Показать Флажок значения из базы данных в PHP

Ниже мой код и изображение ...

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; } ?> 

Теперь у меня есть английского, хинди, в массиве арабского. Но мой код работает только для 1-го элемента массива, который равен . и make проверяется, но для остальных значений он остается непроверенным, даже если инструкция сопоставлена. Это всегда будет else заявление для отдыха ценностей .. Пожалуйста, скажите мне, где проблема. Спасибо заранее.

+0

как вы создали язык флажок в передней части при добавлении пользователей? – Mujahidh

+0

@mujas Простым HTML () и т. Д. –

+0

попробуйте иметь его в одном цикле foreach – user3284463

ответ

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> 

>

Хотя я не проверял выше код, но я думаю, что это один должен работать для вас?.

+0

Неправильно. Он будет учитывать всегда значение последней строки в $ checkedEng, $ checkedHindi. – RJParikh

+0

@RuchishParikh, не могли бы вы объяснить это как? – prava

+0

Если у $ lang_spoken есть несколько записей, то он рассмотрит последний. – RJParikh

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> 
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> 
+0

вы попробовали этот метод? – Mujahidh

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>