Отображение результата php mysql с двумя значениями с циклом foreach в PHP - PullRequest
0 голосов
/ 26 января 2012

У меня есть результат, который я хочу отобразить в выпадающем меню.Запрос выбирает идентификатор и имя из таблицы.

        $usersQuery = "SELECT id, name
        FROM users";
        $usersResult = mysqli_query ($dbc, $usersQuery);

Я хочу использовать этот результат в виде списка в раскрывающемся меню.Это то, что я имею до сих пор.

      <select id="dropdown" name="dropdown">
        <option value="select" selected="selected">Select</option>
       <?php
        while ($usersRow = mysqli_fetch_array($usersResult, MYSQLI_ASSOC)){
          foreach ($usersRow as $value){
            echo "<option value=\"$value\"";
            echo ">$value</option>\n";
          }
        }
        ?>
      </select>

это будет работать нормально, если бы я просто хотел отобразить имя как значение и отображение для пользователя.Но я хочу использовать выбранный идентификатор в качестве «значения» для опции выбора, и я хочу показать выбранное имя пользователю.Я пробовал это, но это не работает.

  <select id="dropdown" name="dropdown">
    <option value="select" selected="selected">Select</option>
   <?php
    while ($usersRow = mysqli_fetch_array($usersResult, MYSQLI_ASSOC)){
      foreach ($usersRow as $id=>$name){
        echo "<option value=\"$id\"";
        echo ">$name</option>\n";
      }
    }
    ?>
  </select>

Любая помощь будет большой.

Заранее спасибо.

Ответы [ 3 ]

5 голосов
/ 26 января 2012

mysqli_fetch_array() - это функция, которая преобразует результаты вашего запроса в массив.Это означает, что вы можете отображать свои значения, как если бы вы использовали обычное значение массива.

<select id="dropdown" name="dropdown">
    <option value="select" selected="selected">Select</option>
   <?php
    while ($usersRow = mysqli_fetch_array($usersResult, MYSQLI_ASSOC)){


        echo "<option value=\"".$usersRow['id']."\"";
        echo ">".$usersRow['name']."</option>\n";

    }
    ?>
  </select>
1 голос
/ 26 января 2012

Нет необходимости в итерации foreach; mysqli_fetch_array() уже предоставляет ассоциативный массив. После каждой выборки делайте

// Assuming "id" is a numeric value
printf('<option value="%d">%s</option>', $usersRow['id'], $usersRow['name']);
0 голосов
/ 26 января 2012

foreach не требуется - использование цикла while для команды mysqli_fetch_array вернет все результаты с каждой строкой в ​​массиве - вы можете использовать его следующим образом:

while ($usersRow = mysqli_fetch_array($usersResult, MYSQLI_ASSOC)){
    echo "<option value=\"".$usersRow['id']."\"";
    echo ">".$usersRow['name']."</option>\n";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...