1

我必须根据用户的输入和选择字段中的选择在 php 中做一个简单的计算器,如下所示:

<?php
$a = $_GET['a'];
$b = $_GET['b'];

$array = array( "option1" => 0.1,
                    "option2" => 0.15,
                    "option3" => 0.3,
                    "option4" => 3,
                    "option5" => 3,
                    "option6" => 16,
                    "option7" => 16,
                    "option8" => 16
                    );

echo "<form action='calc.php' method='get'>";
echo "<input type='text' name='a' value='".$a."'> of ";
echo "<select name='b'>";
foreach ($array as $k => $v) {
    echo "<option value='".$v."'>".$k."</option>";
}
echo "</select> ";
echo "<input type='submit' value='='> ";

$total_volume = $a * $b;

echo $total_volume;

echo "</form>";
?>

好吧,现在一切正常,但想法是,在用户提交表单后,页面会重新加载输入字段中的已发送金额并选择用户实际选择的选项......

第一件事很简单:我只是value="a"输入了我的输入字段,但我不确定如何在<select>字段中选择一个选项???

我从这个开始:

foreach ($array as $k => $v) {
        echo "<option value='".$v."'";
        if ($b == $v) {
            echo " selected ";
        }
        echo ">".$k."</option>";
    }

...但这显然没有按预期工作...请帮我做这个简单的:)

谢谢!

4

3 回答 3

2

您需要回显类似'selected="selected"'. 其余的代码对我来说似乎很好。

再想一想,结构上有问题,因为多个选项返回相同的值,因此在提交表单后无法选择正确的选项。

您将需要$k在循环中的 select 中作为值发送,并且您只需使用$array[$b]而不是$b.

<?php
$a = $_GET['a'];
$b = $_GET['b'];

$array = array( "option1" => 0.1,
                    "option2" => 0.15,
                    "option3" => 0.3,
                    "option4" => 3,
                    "option5" => 3,
                    "option6" => 16,
                    "option7" => 16,
                    "option8" => 16
                    );

echo "<form action='calc.php' method='get'>";
echo "<input type='text' name='a' value='".$a."'> of ";
echo "<select name='b'>";
foreach ($array as $k => $v) {
        echo "<option value='".$k."'";
        if ($b == $k) {
            echo ' selected="selected"';
        }
        echo ">".$k."</option>";     // or $v if you want to show the number
}
echo "</select> ";
echo "<input type='submit' value='='> ";

$total_volume = $a * $array[$b];

echo $total_volume;

echo "</form>";
?>
于 2010-06-02T22:12:46.777 回答
2

试试这个:

foreach ($array as $k => $v) {
   $selected= ($b == $v) ? 'selected="selected"' : '';
   echo "<option value='$v' $selected>$k</option>\n";
}
于 2010-06-02T22:13:51.510 回答
-1

您必须在 $_GET 中捕获数据。尝试

foreach ($_GET as $k => $v) {
        echo "<option value='".$v."'";
        if ($b == $v) {
            echo " selected ";
        }
        echo ">".$k."</option>";
    }

编辑:

在我的电脑上,它在这里工作的是 GET 的转储

        <form action='' method='get'>
    <input type='text' name='a' value='121'> of <select name='b'>
<option value='0.1'>option1</option>
<option value='0.15'>option2</option>
<option value='0.3'>option3</option>
<option value='3'>option4</option>
<option value='3'>option5</option><option value='16'>option6</option><option value='16'>option7</option><option value='16'>option8</option></select> <input type='submit' value='='> 363
    </form> 

网址

http://localhost/test.php?a=121&b=3

和参数

121 b 3 _

于 2010-06-02T22:15:06.550 回答