PHP在提交后保持下拉值

时间:2016-03-17 21:43:47

标签: php forms operators dropdown

我有一个简单计算器的代码。代码工作正常,但我希望下拉列表中的值在提交后保留在那里。我该怎么做? 基本上,我希望运算符在计算完成后保持选中状态。目前,即使总和为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>

1 个答案:

答案 0 :(得分:6)

您必须为已提交的选项设置selected属性。因此,您必须检查每个选项的提交值。在我的解决方案中,我使用三元运算符仅为正确的运算符回显selected属性。

<select name="operator">
    <option value="add" <?php echo (isset($_POST['operator']) && $_POST['operator'] == 'add') ? 'selected="selected"' : ''; ?>>+</option>
    <option value="minus" <?php echo (isset($_POST['operator']) && $_POST['operator'] == 'minus') ? 'selected="selected"' : ''; ?>>-</option>
    <option value="divide" <?php echo (isset($_POST['operator']) && $_POST['operator'] == 'divide') ? 'selected="selected"' : ''; ?>>/</option>
    <option value="multiply" <?php echo (isset($_POST['operator']) && $_POST['operator'] == 'multiply') ? 'selected="selected"' : ''; ?>>x</option>
</select>