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