Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP在提交后保留下拉列表值_Php_Forms_Operators_Dropdown - Fatal编程技术网

PHP在提交后保留下拉列表值

PHP在提交后保留下拉列表值,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

下面是一个简单计算器的代码。代码运行良好,但我希望在提交后下拉列表中的值保持不变。我该怎么做? 基本上,我希望操作符在计算完成后保持选中状态。现在,它只显示一个“+”,即使总和是25/5

<?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个下拉列表都在同一页上?如果您确保对每个下拉列表使用上述解决方案,则每次提交时都应保留这些值。是的,所有下拉列表都在同一页上。实际上,在提交每个下拉列表时,它也会为该下拉列表值生成一个列表。