2013-12-04 4 views
0

У меня возникают трудности с массивом. У меня есть таблица в моей БД со многими отношениями, где у сотрудника может быть несколько навыков, а умение может быть связано с несколькими сотрудниками. Я пытаюсь установить форму, в которой пользователь может использовать флажки, чтобы показать, какие навыки у сотрудника есть.in_array не работает из созданного массива fetch_array

В настоящее время я застрял в показе флажков с проверкой в ​​боксе, если значение возвращается из БД. Я запускаю инструкцию select, чтобы получить данные, а затем сохраняя это в массиве (print_r показывает, что там есть правильные данные) И затем я пытаюсь использовать in_array для определения того, следует ли отмечать флажок или нет, но ничего не происходит. Может ли кто-нибудь увидеть, что я делаю неправильно? Спасибо (установить статический ниже сотрудник 11, это имеет 3 результатов)

<?php 
require_once('db_connect.php'); 

    $array = array(); 
    $qry = "SELECT skill_id FROM skillsets WHERE emp_id = 11"; 

    $stmt = $mysqli->prepare($qry); 

    $stmt->execute(); 
    $result = $stmt->get_result(); 

    while($row = $result->fetch_array(MYSQLI_NUM)) 
    { 
    $array[] = $row; 
    } 

?> 
       <input type="checkbox" name="chk1[]" value="1" <?php if(in_array("1", $array)){echo 'checked="checked"';}?> >skill1 
       <input type="checkbox" name="chk1[]" value="3" <?php if(in_array("3", $array)){echo 'checked="checked"';}?> >skill2 
       <input type="checkbox" name="chk1[]" value="5" <?php if(in_array("5", $array)){echo 'checked="checked"';}?> >skill3 
       <input type="checkbox" name="chk1[]" value="2" <?php if(in_array("2", $array)){echo 'checked="checked"';}?> >skill4 
       <input type="checkbox" name="chk1[]" value="6" <?php if(in_array("6", $array)){echo 'checked="checked"';}?> >skill5 
       <input type="checkbox" name="chk1[]" value="4" <?php if(in_array("4", $array)){echo 'checked="checked"';}?> >skill6 
+0

$ row - это уже массив, поместив его в массив $ array [], вы создаете многомерный массив не нужно просто делать 'in_array (« 1 », $ row);' – Dave

ответ

2
$array[] = $row; 

Это сохраняет массив $row как новый элемент $array. Структура была бы как этот

Array(
    Array(0), 
    Array(1), 
    Array(2), 
    ... 
) 

Вместо этого изменить код на следующее:

while($row = $result->fetch_array(MYSQLI_NUM)) { 
    $array[] = $row[0]; 
} 

это даст вам структуру

Array(
    0, 
    1, 
    2, 
    ... 
) 

и in_array должен работать только штрафом

+0

Thats крушили мою голову часами, спасибо вам большое – Darkside

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