2013-03-20 3 views
1

Я пытаюсь получить отмеченные флажки, значения которых хранятся в базе данных, но они всегда не отмечены, даже если они существуют в БД. Я попытался это, но он не работает, хотя и тот же код с различной структурой работы, но и для каркасных причин, мне нужно реализовать с помощью этого:Флажки не проверяются

if(isset($sp['Etunimi'])&&isset($sp['Sukunimi'])){ 
     echo "<form method='post' action=''>"; 
     $comp=$this->All_Competences; 
     echo"<br/>select competences for:".$sp['Etunimi']; 
     $id=$sp['Id']; 
     $tmp=array(); 
     if(isset($_POST['select_employee'])){ 
      $cid=$this->cids; 
     } 
     foreach($cid as $test) 
     { 
      array_push($tmp, $test['c_ID']); 
     } 
     for($i=0;$i<count($tmp);$i++){ 
     } 
     echo "<table><th>valid?</th><th>Competence description</th>"; 

     foreach($comp as $compi){ 
      $checked=''; 
      if(in_array($compi['Competence_ID'],$tmp)){ 
       $checked='checked'; 


      } 
      echo "<tr><td><input type='checkbox'".$checked."name='c[]' value='".$compi['Competence_ID']."'></td><td>".$compi['Competence_Description']."</td></tr>"; 

     } 
     echo "</table>"; 
     echo "<input type='hidden' name='action' value='selectchecked'>"; 
     echo "<input type='hidden' name='id' value='".$id."'>"; 
     echo "<input type='submit' value='submit checks'>"; 
     echo "</form>"; 
+0

Поэтому, когда вы делаете свой 'in_array ($ compi ['Competence_ID'], $ tmp)) {' ... вы можете «выходить» ($ checked); »и посмотреть, все ли там установлено? если нет ... в значительной степени знаю, где ваша проблема .. – Ohgodwhy

+0

попробуйте помещать пробелы вокруг ключевого слова 'checked' –

+0

Спасибо Gareth! это сработало! – auicsc

ответ

2

Там должно быть пробелов между именами входных, так что вам нужно добавить некоторые пробелы, потому что HTML не знает, интерпретировать его (выход: checkedname='c[]'):

if(in_array($compi['Competence_ID'],$tmp)){ 
    $checked = ' checked '; 
} 
+0

Отлично! большое спасибо – auicsc

0

Попробуйте это:

echo "<tr><td><input type='checkbox' checked='".$checked."' name='c[]' value='".$compi['Competence_ID']."'></td><td>".$compi['Competence_Description']."</td></tr>"; 

Кажется вы пропустили: checked=".$checked

+0

Нет. Вам просто нужно напечатать 'checked'. Существование атрибута - это предположение в самом себе. – Ohgodwhy

+0

Он эхом «проверял» .. его 'checked =' отсутствует – gaurav

+0

[Еще раз сэр, вы ошибаетесь] (http://jsfiddle.net/GSgCC/). – Ohgodwhy

0

Добавить место beween checked и name.

echo "<tr><td><input type='checkbox' checked='".$checked."' name='c[]' value='".$compi['Competence_ID']."'></td><td>".$compi['Competence_Description']."</td></tr>"; 

ИЛИ

echo "<tr><td><input type='checkbox' ".$checked." name='c[]' value='".$compi['Competence_ID']."'></td><td>".$compi['Competence_Description']."</td></tr>"; 
Смежные вопросы