2016-12-27 81 views
-1

我有這個下拉菜單與員工姓名選擇:選擇以HTML形式的動態選擇的選項

<select class="form-control" id="assignee" name="assignee" style="max-width: 300px;"> 
    <option value="Employee 1">Employee 1</option> 
    <option value="Employee 2">Employee 2</option> 
    <option value="Employee 3">Employee 3</option>        
</select> 

初始值由管理員選擇,並且可以在第二形式使用UPDATE SQL功能改變:

$sql = "UPDATE `jobs_canjobs` SET `job_name`='$job_name',`comments`='{$comments}',`due_date`='$newdate',`assignee`='$assignee',`assign_email`='$assign_email',`AE`='$AE',`Property`='$property' WHERE job_numb = '$job_numb'"; 

然而,每一次他們進行任何更改表格時,最初的選項被選中,從而改變$assignee$assign_email。我試圖使用變量用戶selected,但我認爲這是確保用戶不會不斷變化的錯誤方法。

如何確保在EDIT表單上選擇了員工?

+0

我可以誠實地問downvote是什麼? – scoopzilla

回答

2

第一件事:瞭解PHP Data Objects(簡稱PDO),並立即使用準備好的語句開始 ,以使您的最終產品更安全 。

你對select正確,只是你需要一個額外的步驟:執行 查詢找到您的assignee當前選定的值。如果您已經在編輯表單中檢索到合適的數據庫 行,則可能不需要此 。我想你是這樣做的,來填充表單。如果 沒有,使用查詢檢索該特定列或其他額外的, 像:

SELECT assignee FROM jobs_canjobs WHERE job_numb=? 

現在,你可能有你的員工可能的陣列生成 選項。如果它看起來是這樣的:

$employees = [ 
    'Employee 1', 
    'Employee 2', 
    'Employee 3' 
]; 

$assignee = /* find out who is the current one in DB, as discussed */ 

...那麼你就可以用你的生成選項進行:

<select class="form-control" id="assignee" name="assignee"> 
    <?php foreach ($employees as $e) : ?> 
    <option value="<?= $e ?>" <?php 
     if ($assignee == $e) echo 'selected' 
    ?>><?= $e ?></option> 
    <?php endforeach; ?> 
</select> 
+1

這裏還有其他的話題沒有被討論,比如使用內聯CSS(儘量避免這種情況),以及選項標籤暗示你沒有以關係數據庫的方式存儲這些內容。一般來說,您可以爲員工創建一個表格,並在受讓人列中引用其ID。然後,您可以從數據庫中檢索員工列表,並在「

+0

我聽說這是一個更好的方法(僱員的ID)來選擇受讓人,但是因爲我對PHP更新,所以我不想使兩天內寫入的表單變得複雜。 至於內聯CSS,謝謝。只是懶惰,不想編輯引導程序來添加額外的類。內聯不會傷害,它只是不乾淨。 – scoopzilla

+0

這是一個很好的答案,我認爲它更符合要求。 – scoopzilla

0

最好的答案,現在,我想的是創造另一個<option>場與所選用戶的回聲SQL:

<select class="form-control" id="assignee" name="assignee" style="max-width: 300px;"> 
    <option value="<? echo $assignee;?>" selected><? echo $assignee;?></option> 
    <option value="Employee 1">Employee 1</option> 
    <option value="Employee 2">Employee 2</option> 
    <option value="Employee 3">Employee 3</option>        

,並有可以選擇的,所以如果不採取行動由編輯它不能改變。