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

时间:2016-03-22 21:51:10

标签: php html forms

我有一个php页面,其中包含两个表单。我使用第一个表单来保存ComboBox选项。以下是示例代码:

<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。但变量是空的。我该如何解决这个问题?

4 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

<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 :(得分:0)

你有2个表格。第一个包含选择框,第二个包含提交按钮。选择框不是提交表单的Patrick,因此该值不可用作POST变量。

答案 3 :(得分:0)

首先,删除第二个svgContainer .selectAll("g.lines") .data(mainMt) .enter().append("g") .attr("class"‌​, "lines") .selectAll("line").data(function(d) { return d; }) .enter() .append("line") ... 标记。这是不必要的,并且阻止你做你想做的事情(我假设,基于典型的形式用途,因为它并不完全清楚你的最终目标是什么)。

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