Получение всего списка EmployeeID в выпадающем списке из базы данных mysql?

В моем случае я получаю только EmployeeId, который я зарегистрировал последним, а не все employeeId из таблицы в базе данных.

Код:

public function getEmployeeId() { if (!isset($_SESSION["email"]) || !isset($_SESSION["passwrd"])) { header("Location:index.php"); // Cannot Access this page without Login. } if (empty($_POST)) { $query = mysqli_query($this->connection, "SELECT EmployeeId FROM employeeprofile") or die("Query execution failed: " . mysqli_error()); **while ($row = $query->fetch_assoc()) {** $id = $row["EmployeeId"]; $_SESSION["id"] = $id; } } } 

Я использую это значение сеанса в в моей html-форме.

  <select name="EmployeeId" required autofocus class='form-control'> <option value=""> ----Select----</option> <?php if (isset($_SESSION["id"])) { echo "<option value = " . $_SESSION["id"] . ">" . $_SESSION["id"] . "</option>"; } ?> </select> 

Кто-то предложил мне проверить массив, но я смущен.

В настоящее время вы переписываете идентификатор на каждой итерации. Вам нужно сохранить их в массиве, в котором вы добавляете каждый идентификатор:

 // Make this session item an array $_SESSION['id'] = []; $query = mysqli_query($this->connection, "SELECT EmployeeId FROM employeeprofile") or die("Query execution failed: " . mysqli_error()); while ($row = $query->fetch_assoc()) { // Push the id to the array $_SESSION['id'][] = $row["EmployeeId"]; } 

Теперь вам нужно выполнить итерацию по массиву с идентификаторами при печати параметров:

 if (isset($_SESSION["id"])) { foreach ($_SESSION['id'] as $id) { echo "<option value='$id'>$id</option>"; } } 

Это должно работать, если у вас есть session_start() в верхней части ваших скриптов.

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

Проблема заключается в том, что вы должны извлекать данные из массива из запроса, и вы можете применить цикл foreach для печати сотрудника.

сначала получить всех сотрудников

 $query = mysqli_query($this->connection, "SELECT EmployeeId FROM employeeprofile") or die("Query execution failed: " . mysqli_error()); $result = query($query); 

теперь распечатайте извлеченного сотрудника в поле параметра

 if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "<option value=" . $row["id"] . ">" . $row["id"] . "</option>" } } else { echo "<option value="">No result found.</option>" } 

Для меня не рекомендуется использовать сеанс, а затем для заполнения select ввода, вы делаете код ниже, это всего лишь способ сделать это в любом случае

  public function getEmployeeId() { if (!isset($_SESSION["email"]) || !isset($_SESSION["passwrd"])) { header("Location:index.php"); // Cannot Access this page without Login. } $ids = array(); if (empty($_POST)) { $query = mysqli_query($this->connection, "SELECT EmployeeId FROM employeeprofile") or die("Query execution failed: " . mysqli_error()); while($row = mysqli_fetch_array($query)){ $ids[] = $row['EmployeeId']; //we populate our array here } } return $ids; //return the array here } 

из вашего html вы делаете это

 <select> <option value="">Select</option> <?php $ids = getEmployeeId(); for($i=0;$i<count($ids); $i++){ ?> <option value="<?php echo $ids[$i];?>"><?php echo $ids[$i];?></option> <?php }?> </select> 

Это потому, что вы ставите только последнее значение массива в переменной $ _SESSION ["id"]

Изменить $_SESSION["id"] = $id; to $_SESSION["id"][] = $id;

и распечатать

 if (isset($_SESSION["id"])) { foreach($_SESSION["id"] as $v){ echo "<option value ='" . $v . "'>" . $v."</option>"; } }