2011-12-03 134 views
0

我正在研究論壇軟件,我正在做管理面板。我有一個與所有當前論壇下拉框的一部分。它可以工作,但不會顯示錶格中的第一個論壇。HTML下拉列表不顯示錶中的第一項

這是我的代碼

$select_forums = "SELECT id,name FROM forums"; 
$run_select_forums = mysql_query("$select_forums"); 
$row = mysql_fetch_array($run_select_forums, MYSQL_ASSOC); 

<form action='index.php' method='post'> 
<select> 
<?php while ($row = mysql_fetch_array($run_select_forums, MYSQL_ASSOC)) { ?> 
<option value="<?php echo $row["id"] ?>" name="selected"><?php echo $row["name"] ?>  
</option> 
<?php } ?> 
</select><br/> 
<input type='submit' name='submitdelete' value='Delete' /> 
</form> 

而且我不知道從列表中選擇的項目,我可以怎麼找回?

回答

5

,因爲你是你的while循環之前調用mysql_fetch_array()一旦它不顯示的第一個開始:

$select_forums = "SELECT id,name FROM forums"; 
$run_select_forums = mysql_query("$select_forums"); 
// Don't call mysql_fetch_array() here... 
$row = mysql_fetch_array($run_select_forums, MYSQL_ASSOC); 

此外,您應在屬性htmlentities()htmlspecialchars()包的屬性外,這些值逃脫他們正確的HTML屬性(以及對XSS攻擊)

<option value="<?php echo htmlentities($row["id"], ENT_QUOTES) ?>" name="selected"><?php echo htmlspecialchars($row["name"]) ?>  
</option> 

我理解你$row['id]很可能不是needin整數逃避,但這是一個很好的習慣。

+0

非常感謝,工作,我也使用htmlentities()和htmlspecialchars()。 – Darren

2

您的第一個$row = mysql_fetch_array($run_select_forums, MYSQL_ASSOC);從表中拉出第一行。當你開始你的while循環時,mysql_fetch_array接下來一行。解決這個問題的最簡單的方法就是不打第一個電話。

要檢索選定的元素,讓你的選擇標籤的name屬性,它會出現在該公司的意見,從客戶端提交服務器腳本中的$ _POST數組中 - 在這種情況下的index.php,正是如此:

與HTML一樣

<select name="forum"> 
<option>...</option> 
... 
</select> 

在PHP中,$_POST['forum']將包含所選項目的​​3210標籤之間的值。

相關問題