下拉列表的PHP问题

时间:2012-03-29 07:57:12

标签: php post drop-down-menu

我在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。

5 个答案:

答案 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 => 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];
}

答案 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;

这样你可以改变下拉量