两种形式,一个PHP页面,没有操作


Two forms, one PHP page and no action

我有一个php页面,其中包含两种形式。我正在使用第一个窗体来保存组合框选择。下面是一个示例代码:

<form method="post" action="">
    <select onchange="form.submit()" name="selectionControl">
      <option value="volvo">Volvo</option>
      <option value="saab">Saab</option>
      <option value="mercedes">Mercedes</option>
      <option value="audi">Audi</option>
    </select>
</form>
<form method="post" action="">
  First name:<br>
  <input type="text" name="firstname" value="Mickey"><br>
  Last name:<br>
  <input type="text" name="lastname" value="Mouse"><br><br>
  <input type="submit" value="Submit">
</form>
<?php
$userSelection = $_POST['selectionControl'];
echo "<br>".$userSelection;
?>

如果我提交第二个表单,页面将重新加载。现在我想知道最后的$userSelection.但变量为空。我该如何解决这个问题?

我认为您的变量是空的,因为使用了两次表单标签。你为什么不只使用一个?

最简单的方法是将其值输出到第二种形式的隐藏字段中。不过,为什么不把它变成一种形式呢?

<form method="post" action="">
    <select onchange="form.submit()" name="selectionControl">
      <option value="volvo">Volvo</option>
      <option value="saab">Saab</option>
      <option value="mercedes">Mercedes</option>
      <option value="audi">Audi</option>
    </select>
</form>
<form method="post" action="">
  <input type="hidden" name="selectionControl" value="<?php echo $_POST["selectionControl"]; ?>">
  First name:<br>
  <input type="text" name="firstname" value="Mickey"><br>
  Last name:<br>
  <input type="text" name="lastname" value="Mouse"><br><br>
  <input type="submit" value="Submit">
</form>
<?php
$userSelection = $_POST['selectionControl'];
echo "<br>".$userSelection;
?>

你有 2 种形式。第一个包含选择框,第二个包含提交按钮。选择框不是提交的表单的帕特里克,因此该值不能用作 POST 变量。

首先,删除第二个<form>标签。这是不必要的,并且会阻止您做您想做的事情(我假设,基于典型的表单用途,因为不完全清楚您的最终目标是什么)。

其次,从<select>标签中删除onchange="form.submit()"。如果您希望他们从下拉列表中选择并提供他们的名字和姓氏,则在他们更改选择时提交表单将阻止您有效地执行此操作(他们需要直观地知道首先输入姓名)。大多数用户在选择车辆制造商时不会期望整个页面刷新(从表单提交),并且没有必要(再次,假设您在提供其名称之前没有对该信息执行其他操作)。