2010-04-08 40 views
1

我正在使用一個表單,用戶可以編輯條目。一切都在填充,一切都很好,除了我無法下拉顯示他們已經分配了圖像的項目。從mysql的下拉列表中獲取正確的記錄

$project_qry = "SELECT * from projects ORDER BY title ASC"; 
$project_res = mysql_query($project_qry); 

$project_drop = "<select name=\"project_id\">\n"; 
while ($row = mysql_fetch_array($project_res)) 
    { 
    if ($project_id == $row[title]) 
     { 
      $project_drop .= "<option value=\"$row[id]\" selected>$row[title]</option>\n"; 
     } 
    else 
     { 
      $project_drop .= "<option value=\"$row[id]\">$row[title]</option>\n"; 
     } 
} 
$project_drop .= "</select>\n"; 

我確定這是一件非常簡單的事,但我很難過。

回答

3
{ 
    if ($project_id == $row[id]) 
     { 
      $project_drop .= "<option value=\"$row[id]\" selected=\"selected\">$row[title]</option>\n"; 
     } 
    else 
     { 
      $project_drop .= "<option value=\"$row[id]\">$row[title]</option>\n"; 
     } 
} 

您需要比較值而不是標題。它是獲得發佈的值($ _POST)

selected =「selected」使其符合XHTML標準。

+0

要添加到此答案,您應該始終引用像這樣的關聯索引:$ row ['id']。你也應該使用花括號將數組轉換爲字符串:$ s =「{$ row ['id']}」; – webbiedave 2010-04-08 18:46:38

+0

在雙引號字符串中引用數組鍵不是必需的。 PHP假定它是一個字符串鍵並作相應的處理。只有在輸出多維數組值時,或者絕對必須使用帶引號的鍵語法時,才需要大括號表示法。 – 2010-04-08 19:06:29

+0

真棒添加到答案! – 86Stang 2010-04-08 19:44:28

0

bigstylee正確回答。我也建議分開數組和字符串的值:

$project_drop .= "<option value='". $row['id'] ."'>".$row['title']."</option>"; 

也放下\ n。輸出\ n不會在瀏覽器中產生換行符。這是沒有必要的。

+0

我在我的代碼中也使用\ n。生成的html格式更好,這有助於調試,特別是當您在選擇中有大量選項時。 – webbiedave 2010-04-08 18:52:38

+0

只是一個小小的修復:把價值(撇號')價值... 「

+0

哎呀,謝謝dar7。 @webbiedave:謝謝你的輸入。 DOM樹如何對它做出反應? – Kel 2010-04-08 19:06:11