从mysql数据库获取下拉列表中的所有EmployeeID?

时间:2017-08-17 11:24:27

标签: php

在我的情况下,我只获得了已注册最新的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>

有人建议我检查阵列,但我很困惑。

4 个答案:

答案 0 :(得分:1)

您目前正在每次迭代时覆盖ID。您需要将它们存储在一个数组中,在该数组中添加每个ID:

// 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"];
}

现在,您需要在打印选项时使用ID&#39;来遍历数组:

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

只要您在脚本的顶部有session_start(),这就行了。

我可能不会使用会话来存储这样的结果,但我不太了解您的代码以便能够为您提供良好的解决方案。

答案 1 :(得分:0)

问题是你应该从查询中检索数组中的数据,你可以应用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>"
}

答案 2 :(得分:0)

对于我不建议使用会话,然后填充您的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>

答案 3 :(得分:0)

这是因为,你只在 $ _ SESSION [&#34; id&#34;] 变量中放入数组的最后一个值

$_SESSION["id"] = $id;更改为$_SESSION["id"][] = $id;

并打印

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