2015-05-31 2 views
0

У меня есть продукты в моей базе данных, как это:Как проверяется зацикливание флажок с массивом

1 -> torch 
    2 -> speaker 
    3 -> laptop 
    4 -> handphone 
    5 -> mouse 
    6 -> lcd 

и в форме редактирования, идентификатор продукта (например: 1,3,4,5) были выбраны, но мой форма не выбрала флажок правильно. вот мой код:

$selected = array(1,3,4,5); 

foreach ($selected as $val) 
    $q=mysql_query("Select * from product"); 

while ($r=mysql_fetch_array($q)){ 
    echo "<input type='checkbox' name='product[]'"; 
    if ($r['id'] == $val) echo "checked"; 
    echo"> $r[product]<br>"; 
} 

только идентификатор не 5 выбран результат, он должен быть 4 выбранных продуктов ,,,

ответ

0

Это происходит потому, что последняя итерация над результатом запроса является, когда $ Допустимы 5 , поэтому все остальные не проверяются. Меняйте петлю таким образом:

$selected=array(1,3,4,5); 
$q=mysql_query("Select * from product"); 
while ($r=mysql_fetch_array($q)){ 
    $ch = in_array($r['id'], $selected)?"checked":''; 
    echo "<input type='checkbox' name='product[]' $ch> {$r['product']}<br />"; 
} 

BTW, не используйте mysql_ функции - они являются устаревшими, и будут удалены в будущем. Переключитесь на mysqli или PDO с подготовленными инструкциями для предотвращения инъекций вредоносного кода.

Смежные вопросы