1

PHP ページに次のコードがあります。選択リストの値を PHP ページの変数に格納しようとしています。

誰かが親切にこれを手伝ってくれますか?

    $state_list= <<<HTML <select name="state">
    <option value="0"></option>
    <option value="1">ok</option>
    <option value="2">not-ok</option>
    </select>
    HTML;

echo "<table>";
        while($row = mysql_fetch_array($result1))
          {
          echo "<tr>";
          echo "<td>" . $row['task'] . "</td>";
          echo "<td>" . $row['task_desc'] . "</td>";
          echo "<td>";  echo $state_list; echo "</td>";
          echo "</tr>";
          }
 echo "</table>";

        if(isset($_GET['state'])) {
        $stat=$_GET['state'];
        echo $stat;
        }
4

2 に答える 2

1

サンプルコードを使用して、リスト全体を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を削除できます。

于 2012-11-05T14:41:13.313 に答える
1

PHP はサーバー側の言語です。フォームを送信してから、POST または GET を介してデータを取得する必要があります。このようなものです。

<form method="GET">
  <select name="state"> 
    <option value="0"></option> 
    <option value="1">ok</option> 
    <option value="2">not-ok</option> 
  </select>
  <input type="submit" value="Submit">
</form>

そして、データを取り戻すには、関連する $_GET['state']; を使用します。または $_POST['state'];

<?php echo $_GET['state']; ?>

このように、GET または POST 変数を使用する前に存在することを確認することも一般的な方法です。

<?php 

if(isset($_GET['state'])){
  echo $_GET['state'];
}

?>
于 2012-11-05T14:43:19.197 に答える