我在HTML中创建了一个填充的下拉列表。当选择了两个下拉列表时,表单会发布到'calculate.php',其中php脚本会从下拉列表中回显选定的值。
<form action="calculate.php" method='POST'>
<select name="Phones">
<option value="Lumia800">Nokia Lumia 800</option>
<option value="iPhone">Apple iPhone 4s</option>
<option value="GalaxyS2">Samsung Galaxy S2</option>
<option value="Bold9900">Blackberry Bold 9900</option>
<option value="SensationXE">HTC Sensation XE</option>
<option value="XperiaS">Sony Ericsson Xperia S</option>
</select>
<select name="Network">
<option value="Orange">Orange</option>
<option value="Vodafone">Vodafone</option>
<option value="O2">O2</option>
<option value="Three">Three</option>
</select>
<input type="submit" />
</form>
在这个例子中,'calculate.php'回显所选的下拉值。
<?php
$pref=$_POST['Phones'];
$pref1=$_POST['Network'];
$Orange="5";
if ($pref1 == "Orange")
{
$total1 = $Orange;
}
$Lumia800="10";
if ($pref == "Lumia800")
{
$total = $Lumia800 + $Orange;
}
echo $total;
?>
此示例输出为'15'
这个例子的目的是最终创建一个简单的电话包系统,这组代码将手机的价格,网络成本和其他变量加在一起,最终总计将花费多少钱。用户提交它。
我遇到的问题是我想从相应的下拉框(例如“电话”和“网络”)中相互添加每个变量。对于这么简单的脚本,我的例子是否过于复杂?是否有更精确的方法来获得我想要的结果?
谢谢,
JB。
答案 0 :(得分:1)
您应该为包含所有价格的每个选择定义数组。
$phone_prices = array("Lumia800" => 10, "iPhone" => 42);
$network_prices = array("Orange" => 5, ...);
然后你只需做一些像
这样的事情$price = $phone_prices[$pref] + $network_prices[$pref1];
但这不是很安全,请确保$ pref和$ pref1是各自数组中的现有索引。
答案 1 :(得分:0)
<form action="calculate.php" method='POST'>
<select name="Phones">
<option value="123">Nokia Lumia 800</option>
<option value="234">Apple iPhone 4s</option>
<option value="12">Samsung Galaxy S2</option>
<option value="32">Blackberry Bold 9900</option>
<option value="432">HTC Sensation XE</option>
<option value="12">Sony Ericsson Xperia S</option>
</select>
<select name="Network">
<option value="42">Orange</option>
<option value="34">Vodafone</option>
<option value="23">O2</option>
<option value="34">Three</option>
</select>
<input type="submit" />
</form>
和
<?php
echo $_POST['Network'] + $_POST['Phones'];
?>
在这种情况下,可能会简单得多,但这当然取决于您需要的确切情况。
答案 2 :(得分:0)
G'day mate。
你可以为一个人创建一个来自Phones => Price
和Network => Price
示例:
<?php
$phones = array(
'Lumia800' => 10,
'iPhone' => 15,
'GalaxyS2' => 30,
// rest of the phones with price
);
$networks = array(
'Orange' => 10,
'Vodafone' => 15,
'Three' => 3,
'O2' => 8
);
然后验证用户输入
if(!empty($phones[$pref])) && !empty($networks[$pref1])) {
echo $phones[$pref] + $networks[$pref1];
}
答案 3 :(得分:0)
它会起作用但可能很复杂。我建议改为改用switch语句。
$total = 0
switch ($pref) {
case "Orange":
$total += 5;
break;
case "O2":
$total += 8;
break;
}
相同的开关结构将用于$ pref1或网络变量。
答案 4 :(得分:0)
如果您的代码不会比我现在看到的更复杂 我只想改变:
...
<option value="iPhone">Apple iPhone 4s</option>
...
<option value="Orange">Orange</option>
...
到
...
<option value="5">Apple iPhone 4s</option>
...
<option value="10">Orange</option>
...
然后循环结束所有值
$total = 0;
foreach ($_POST as $key => $val) {
$total += $val;
}
echo $total;
这样你可以改变下拉量