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 放在第二行,如下所示):

$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'];

更新(输出表单?)
从您最近的编辑来看,您似乎没有将实际select列表放入<form></form>块中(您需要这样做才能实际提交值)。一个简单的例子是这样的:

echo '<form method="get">';
echo $state_list;
echo '<input type="submit" value="Submit Form" />';
echo '</form>';

我还添加了一个submit- 按钮,让您可以提交表单 =P。

但是,您将遇到使用此方法的问题,因为您需要select为结果中的每一行提供一个单独的 -list。因此,您实际上需要为结果中的每一行提供一个单独的表单(或一些额外的 javascript 代码,但我们会留着以备不时之需)。

此外,由于您需要为每个单独的行设置一个值,因此您需要第二个(隐藏的)字段来告诉您选择了哪一行。这是一个应该能够为您执行此操作的示例代码块:

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从上面的输出循环中删除 - 按钮。

于 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 回答