2017-08-17 109 views
0

在我的情况下,我只获取EmployeeId,我注册了最新的,而不是所有employeeId从数据库中的表中。从mysql数据库获取所有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> 

有人建议我检查数组,但我很困惑。

+1

这里有什么错误? –

+0

你想要做什么,你可以清除这个问题 –

+1

你确实得到了所有的ID,但是你在每次迭代时覆盖了相同的变量'$ id'和$ _SESSION ['id']'。这就是为什么只存储最后一个ID的ID。 –

回答

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

现在,你需要通过数组迭代标识的打印选项时:

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

这应该工作,只要你在脚本的顶部有session_start()即可。

我可能不会使用会话来存储这样的结果,但我不知道您的代码足以为您提供一个好的解决方案。

+0

它工作得很好。 – Rajat

+0

@Rajat - 随时接受它,因为它为你工作 –

+0

@Rajat然后接受这个答案。这让其他人知道这个问题已经得到解答,那些后来可能会发现这个问题的人知道哪个答案可以解决这个问题 – RiggsFolly

0

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

对我不会建议使用sessioning,然后填充你的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> 
0

这是因为,你是把在阵列的只有最后一个值$ _SESSION [ “身份证”]变量

变化$_SESSION["id"] = $id;$_SESSION["id"][] = $id;

,并print

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