PHP与下拉列表的问题


PHP issue with Dropdown list

我用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 => PriceNetwork => 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;

通过这种方式,您可以更改的下拉量