電子書籍の厳選無料作品が豊富!

現在、PHPとMySQLを使用したプログラムを作成しているのですが、フォームのリストボックスの値にMySQLに登録されている値を使用したいのですがどうしたらよいのでしょうか?

?>
<tr><td><b>作業名</b></td><td>
<select name="inpWorkName">
<?
$Count = 0;
while($row=mysql_fetch_array($rs))
{
for($j=0;$j<$num;$j++)
{
$WorkName[$Count] = $row[0];
}
?>
<option value="<?=$WorkName[$Count]?>"><?=$WorkName[$Count]?>
<?
$Count++;
print("</tr>");
}
?>
</select>
</td></tr>
<?

上記のように書いたのですが、リストボックスに値が表示されません。

お手数かとは思いますが、よろしければ教えてください。
お願いします。

A 回答 (2件)

No.1です。



> MySQLに登録されているデータの個数分のリストボックスは表示されているようなのですが、値だけが表示されていません。

ということは、$WorkName[$Count] の値がきちんと代入されてないかもしれませんね。
切り分けのために、
<select name="inpWorkName">

<!--select name="inpWorkName">
に、
<option value="<?=$WorkName[$Count]?>"><?=$WorkName[$Count]?>

<!--option value="<?=$WorkName[$Count]?>"><!--?=$WorkName[$Count]?>
とコメントアウトし、
$WorkName[$Count] = $row[0];
の直後に
print "DEBUG:";var_dump($WorkName[$Count]);
として値が入っているか調べてみてはいかがでしょうか。

もし値がちゃんと入ってなかったら、$rsを取得しているSQL文に問題があるかもしれません。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
確認したところ、$WorkName[$Count] に値が代入されていなかったようです。

修正した結果、正しく動作しました。

お手数をおかけして申し訳ありませんでした。

お礼日時:2007/01/16 18:10

$Count++;


print("</tr>");
}

ここの print("</tr>"); がいらないのでは?

あと、関係ないですが、
for($j=0;$j<$num;$j++)
{
$WorkName[$Count] = $row[0];
}
同じことをループでまわしてやっているのが少し不思議。(ソースを省略しているのかな?)

この回答への補足

回答ありがとうございます。
print("</tr>"); を削除してみましたがやはり表示されませんでした。

現状をもう少し詳しく説明しますと、MySQLに登録されているデータの個数分のリストボックスは表示されているようなのですが、値だけが表示されていません。

補足日時:2007/01/16 17:13
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!