サンプルコードを使用して、リスト全体をPHPの変数に格納しています(無効に見えるため、次のようにHTMLを2行目に配置する必要があります)。
$state_list= <<<HTML
<select name="state"> <option value="0"></option> <option value="1">ok</option> <option value="2">not-ok</option> </select>
HTML;
選択リストの実際に送信された値を取得しようとしている場合(フォームが送信された後)、フォームが送信する方法に応じて、、$_GET['state']
またはのいずれかを使用してアクセスできます。$_POST['state']
$state = $_POST['state'];
UPDATE(フォームを出力しますか?)
最近の編集から、実際のselect
リストを<form></form>
ブロック内に配置していないようです(実際に値を送信するために行う必要があります)。簡単な例は次のようなものです。
echo '<form method="get">';
echo $state_list;
echo '<input type="submit" value="Submit Form" />';
echo '</form>';
submit
フォーム=Pを送信する方法を提供する-ボタンも含まれています。
select
ただし、結果の行ごとに個別のリストが必要になるため、このメソッドで問題が発生します。このため、実際には、結果の行ごとに個別のフォームが必要になります(または、追加のJavaScriptコードが必要になりますが、雨の日のためにそのフォームを残しておきます)。
また、個々の行ごとに値が必要なため、どの行が選択されたかを示す2番目の(非表示の)フィールドが必要になります。これを実行できるはずのサンプルコードのブロックを次に示します。
while($row = mysql_fetch_array($result1)) {
echo "<tr>";
echo "<td>" . $row['task'] . "</td>";
echo "<td>" . $row['task_desc'] . "</td>";
echo "<td>";
echo '<form method="get"><input type="hidden" name="task" value="' . $row['task'] . '" />';
echo $state_list;
echo '<input type="submit" value="Submit" /></form>';
echo "</td>";
echo "</tr>";
}
この方法の問題はSubmit
、すべての行にボタンがあることです。これは機能し、以前にも多くの場所で見たことがありますが、視覚的にはあまり魅力的ではありません。これがニーズに適していない場合はselect
、値が選択されたときに自動送信するようにリストを更新できます。これを行うには、<select>
タグを次のように更新します<select name="state" onchange="this.form.submit()">
。これを行うと、submit
上記の出力ループから-buttonを削除できます。