php关联数组和开关

时间:2009-12-02 12:03:27

标签: php forms post

我的关联数组。

$money = array("Nickels" => $_POST["nickels"], "Dimes" => $_POST["dimes"], "Quarters" =>$_POST["quarters"]);

我的html表单设置为处理Quarters, 在这种情况下,为简洁起见,未显示尺寸和镍。

<label><b>Quarters:</b></label>
<select name="quarters" >
<option value=".25">25c</option>
<option value=".50">50c</option>
<option value=".75">75c</option>
<option value="1">$1.00</option>
</select>

用户只能选择“仅限四分之一”,“仅限尺寸”或“仅限镍”。 如果用户选择选项值为.25的Quarters,则会将此值发送给 php脚本。

所以我只是想根据用户可以选择的事实进行计算 四分之一只有一个值,Dimes只有一个值,而Nickels只有一个 价值,而不是面额的组合,

如何设置不同的测试用例,例如,如果用户选择  $money["Quarters"]; //使用来自html表单的不同值为.25,。50,.75或1,并且根据用户选择的内容,只有一个选定值将通过php脚本。

我可以这样做:

switch($selection)
{
        case “Quarters”:
            echo “ You chose  $money[‘Quarters’];   .<br />”;
            break;
        case “Nickels”:
            echo “You chose $money[‘Nickels’]; .<br />”;
                break;
        case “Dimes”:
            echo “You chose  $money[‘Dimes’]; . <br />”;
                    break;
default: print  “Please select a Denomination”;
}

感谢您没有点燃newb,我仍然在学习,对于"的混合搭配感到抱歉。

2 个答案:

答案 0 :(得分:2)

表单中的选定值提交为$_POST['quarters']

据我所知,您想检查一下,如果用户选择了多个<select> s(正确吗?)

所以,我会创建一个这样的支票:

$selected = 0;

if ($_POST['quarters'] != "DEFAULT_VALUE_OF_YOU_SELECT_QUARTERS")
{
 $selected++;
}

if ($_POST['nickels'] != "DEFAULT_VALUE_OF_YOU_SELECT_NICKELS")
{
 $selected++;
}

if ($_POST['dimes'] != "DEFAULT_VALUE_OF_YOU_SELECT_DIMES")
{
 $selected++;
}

if ($selected > 1)
{
 // The user has selected more than one
}

答案 1 :(得分:0)

这里有几点需要注意。

因此,首先,您的$money数组会捕获用户提交的每个值。

接下来,设置HTML <select>语句的方式,没有默认值。 $_POST["quarters"]中的第一个选项将是.25,即使用户从未接触过该下拉菜单。为避免这种情况,您需要添加到Quarters <select>

<option value="0">-- Select Quarters --</option> 

但是这仍然不允许你使用switch / case语句。您仍然要为每个HTML <select>标记提交值。 Florian Peschka的解决方案更好,因为它会检查每个下拉菜单,确保它们只使用一个下拉菜单,如果不这样做,可能会显示一条消息。

最后......我不知道你的例子中$selection指的是什么。您正在填充$money数组,因此$selection变量不存在。

如果你澄清你的问题,我可以提供进一步的帮助。