2015-12-28 3 views
1

Вот мой запрос:Выпадающий список появляется только в первой строке таблицы

$sql = "SELECT * FROM employee"; 
$query = "SELECT * FROM employeerole ORDER BY role_id"; 

$result = mysqli_query($link, $sql); 
$result1 = mysqli_query($link, $query); 
<?php 
    while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { 
    ?> 
    <tr> 
     <td><?php echo $row["id"]; ?></td> 
     <td><?php echo $row["first_name"]; ?></td> 
     <td><?php echo $row["last_name"]; ?></td> 
     <td><?php echo $row["username"]; ?></td> 
     <td><?php echo $row["role"]; ?></td> 
     <td> 

Вот мой код, который включает в себя выпадающий список в ячейке таблицы, однако, данные в раскрывающемся списке только появляется в первой строке таблицы (как показано на скриншоте ниже).

Это что-то связано с петлей?

  <form action ="change.php"> 
       <select id="role" class="" onchange="this.form.submit()"> 
        <?php while ($line = mysqli_fetch_array($result1, MYSQL_ASSOC)) { ?> 
        <option value="<?php echo $line['role_id']; ?>"><?php echo $line['role_name']; ?></option> 
        <?php } ?> 
       </select> 
      </form> 
     </td> 
     <td><input type="button" onclick="ConfirmDelete()" value="Delete account"</td> 
    </tr> 
    <?php } ?> 

Снимок экрана таблицы:

enter image description here

+0

mysqli_fetch_array достигли конца, следующий цикл не будет иметь следующий. Вам нужно сохранить данные в массив, а затем зациклировать их несколько раз. – FirstOne

+0

Возможный дубликат [Как выполнить результат mysql в два раза?] (Http://stackoverflow.com/questions/6439230/how-to-go-through-mysql-result-twice) – FirstOne

+0

@FirstOne они просто используют ' MYSQLI_ASSOC' в 'mysqli_fetch_array ($ result, MYSQLI_ASSOC)' У меня такое чувство, что они используют LIMIT, который они не показывают. Я мог ошибаться. –

ответ

1

Проблема заключается в том, результирующий набор $result1 будет исчерпан в самой первой строке. Вы должны настроить указатель результата, чтобы указать на начало набора результатов, чтобы вы могли повторить его снова. Для этого воспользуйтесь функцией mysqli_data_seek().

Добавить эту строку mysqli_data_seek($result1, 0); сразу после этой строки ..."this.form.submit()"> линия.

Так что ваш код должен быть как:

// your code 

     <form action ="change.php"> 
      <select id="role" class="" onchange="this.form.submit()"> 
       <?php 
        mysqli_data_seek($result1, 0); 
        while ($line = mysqli_fetch_array($result1, MYSQLI_ASSOC)) { 
       ?> 
       <option value="<?php echo $line['role_id']; ?>"><?php echo $line['role_name']; ?></option> 
       <?php } ?> 
      </select> 
     </form> 
    </td> 
    <td><input type="button" onclick="ConfirmDelete()" value="Delete account"</td> 
</tr> 
<?php } ?> 

// your code 
+0

Вы не читали [комментарии] (http://stackoverflow.com/questions/34498160/dropdown-list-only-appears-in-the-first-table-row#comment56738082_34498160), правильно? ^^ – FirstOne

+1

@FirstOne О, это 'MYSQLI_ASSOC' часть. Починил это. –

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