2017-08-17 112 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>"; 
    } 
}