PHP在提交后保留下拉列表值
下面是一个简单计算器的代码。代码运行良好,但我希望在提交后下拉列表中的值保持不变。我该怎么做? 基本上,我希望操作符在计算完成后保持选中状态。现在,它只显示一个“+”,即使总和是25/5PHP在提交后保留下拉列表值,php,forms,operators,dropdown,Php,Forms,Operators,Dropdown,下面是一个简单计算器的代码。代码运行良好,但我希望在提交后下拉列表中的值保持不变。我该怎么做? 基本上,我希望操作符在计算完成后保持选中状态。现在,它只显示一个“+”,即使总和是25/5 <?php $number1 = $_POST['number1']; $number2 = $_POST['number2']; $operation = $_POST['operator']; Switch ($operation) { case 'add': $answer = $numbe
<?php
$number1 = $_POST['number1'];
$number2 = $_POST['number2'];
$operation = $_POST['operator'];
Switch ($operation) {
case 'add': $answer = $number1 + $number2;
break;
case 'minus': $answer = $number1 - $number2;
break;
case 'divide': $answer = $number1 / $number2;
break;
case 'multiply': $answer = $number1 * $number2;
break;
}
?>
<form name='calculator' method='post' action=''>
<table>
<tr>
<td>
<input name="number1" type="text" value="<?php i if(isset($_POST['number1'])) { echo htmlentities($_POST['number1']);}?>" />
</td>
<td>
<select name="operator">
<option value="add">+</option>
<option value="minus">-</option>
<option value="divide">/</option>
<option value="multiply">x</option>
</select>
</td>
<td>
<input name="number2" type="text" value="<?php if(isset($_POST['number2'])) { echo htmlentities($_POST['number2']);}?>" />
</td>
<td>
<input name="submit" type="submit" value="=" />
</td>
<td>
<input name="" type="text" value="<?php echo $answer ?>" />
</td>
</tr>
</table>
您必须为提交的选项设置selected
属性。因此,您必须检查每个选项的提交值。在我的解决方案中,我使用三元运算符仅为正确的运算符回显所选的属性
<select name="operator">
<option value="add" <?php echo (isset($_POST['operator']) && $_POST['operator'] == 'add') ? 'selected' : ''; ?>>+</option>
<option value="minus" <?php echo (isset($_POST['operator']) && $_POST['operator'] == 'minus') ? 'selected' : ''; ?>>-</option>
<option value="divide" <?php echo (isset($_POST['operator']) && $_POST['operator'] == 'divide') ? 'selected' : ''; ?>>/</option>
<option value="multiply" <?php echo (isset($_POST['operator']) && $_POST['operator'] == 'multiply') ? 'selected' : ''; ?>>x</option>
</select>
>-
>x
上面的代码有些重复。它不断重复大量代码和html。如果我们能排除重复的东西那就太好了。幸运的是,我们可以创建一个存储选项的数组,并使用foreach循环这些选项,如下所示:
<?php
$options = [
'add' => '+',
'minus' => '-',
'divide' => '/',
'multiply' => 'x'
];
?>
<select name="operator">
<?php foreach ($options as $key => $label) { ?>
<option value="<?= $key ?>" <?= (isset($_POST['operator']) && $_POST['operator'] == $key) ? 'selected' : '' ?>><?= $label ?></option>
<?php } ?>
</select>
明亮的我回家后会试试这个。谢谢。很好的解决方案我必须说,如果我在同一页上提交另一份表格,我应该如何保持相同的价值?例如,从下拉列表1和submit1中选择值。它生成dropdown2,我再次从dropdown2和submit2中选择值,然后生成dropdown3。但是在submit2上我松开了dropdown1。@RaviSharma那么所有3个下拉列表都在同一页上?如果您确保对每个下拉列表使用上述解决方案,则每次提交时都应保留这些值。是的,所有下拉列表都在同一页上。实际上,在提交每个下拉列表时,它也会为该下拉列表值生成一个列表。