2017-08-17 6 views
0

私のケースでは、私が登録したEmployeeIdを最新としていますが、データベース内のテーブルのemployeeIdがすべてではありません。すべてのEmployeeIDをmysqlデータベースからドロップダウンリストに取得しますか?

コード:

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

は今、あなたはIDのオプションを印刷するときに、配列を反復処理する必要があります。

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

問題は、クエリから配列のデータを取得し、foreachループを適用して従業員を印刷できることです。

最初に私はのセッション確立を使用することをお勧めしませんのために、そしてあなたのselect入力を取り込むために

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

すべての従業員になりました

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

は、あなたが、オプションフィールドに取得した従業員を印刷し得ます以下のコードは、これをとにかく行う方法です。

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 [ "ID"]変数

変更$_SESSION["id"] = $id;

とする$_SESSION["id"][] = $id;へ印刷

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