我用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"
这个例子的目的是最终创建一个简单的电话包系统,通过这组代码将电话价格、网络成本和其他变量相加,得出用户提交时的最终总成本
我遇到的问题是,我想从相应的下拉框(例如"电话"answers"网络")中添加每个变量。对于这样一个简单的脚本来说,我的例子会过于复杂吗?有没有更精细的方法来获得我想要的结果?
谢谢,
JB。
您应该为包含所有价格的每个选择定义数组。
$phone_prices = array("Lumia800" => 10, "iPhone" => 42);
$network_prices = array("Orange" => 5, ...);
然后你可以简单地做一些类似的事情
$price = $phone_prices[$pref] + $network_prices[$pref1];
但这并不是真正安全的,请确保$pref和$pref1是它们各自数组中的现有索引。
它可以工作,但可能很复杂。我建议改用switch语句。
$total = 0
switch ($pref) {
case "Orange":
$total += 5;
break;
case "O2":
$total += 8;
break;
}
$pref1或网络变量也采用相同的交换机结构。
<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'];
?>
在这种情况下可能会简单得多,但这当然取决于您需要的确切情况。
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];
}
如果你的代码不会比我现在看到的更复杂我只想更改:
...
<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;
通过这种方式,您可以更改的下拉量