2011-12-03 13 views
0

私は現在フォーラムソフトウェアで作業しており、管理パネルを使っています。私はすべての現在のフォーラムのドロップダウンボックスに参加しています。それは動作しますが、表の最初のフォーラムは表示されません。HTMLドロップダウンリストに表の1番目の項目が表示されていません

これはまた、私は、私はリストから選択されたどのような項目取得することができますどのように不思議に思った私のコード

$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は、私はあなたの$row['id]はおそらくneedinない整数であることを理解

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

(XSS攻撃など)の属性を適切としてそれらをエスケープエスケープすることができますが、入るのは良い習慣です。

+0

ありがとう、私はそのhtmlentities()とhtmlspecialchars()も使用しました。 – Darren

2

最初の$row = mysql_fetch_array($run_select_forums, MYSQL_ASSOC);は、テーブルの最初の行をプルします。 whileループを開始すると、mysql_fetch_arrayは次の行でピックアップします。この問題を解決する最も簡単な方法は、最初の呼び出しを行わないことです。

、選択された要素を取得し、あなたのselectタグのname属性を与え、そしてそれは、クライアントからの投稿を受け付けていますサーバースクリプトでの$ _POST配列に表示されますするには - この場合、index.phpの中で、thusly:

PHPで

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

ようなHTMLで

$_POST['forum']は、選択された項目の​​3210タグ間の値を含むであろう。

関連する問題