0

我有一个表单,它使用 PHP 根据用户所做的选择来计算总数。共有13个选项。我坚持两个部分,“蓝色”和“橙色”:

如果用户选择“蓝色”,则价格增加 250.00 美元

如果用户选择“橙色”,则价格增加 150.00 美元

我想弄清楚的事情:我想这样做,如果用户选择蓝色,然后继续选择橙色 - 橙色的费用不会添加到总数中。另一方面,如果他们没有选择蓝色,而是继续选择橙色,我希望将 150.00 美元添加到总数中。

我能想到的唯一解释方法是,如果您购买蓝色,则包括橙色。

这是我的 HTML:

蓝色的

是 否

是的

这是我的PHP:

<?php
$one = $_POST ['one'];
$two = $_POST ['two'];
$three = $_POST ['three'];
$four = $_POST ['four'];
$five = $_POST ['five'];
$six = $_POST ['six'];
$seven = $_POST ['seven'];
$eight = $_POST ['eight'];
$nine = $_POST ['nine'];
$ten = $_POST ['ten'];
$eleven = $_POST ['eleven'];
$twelve = $_POST ['twelve'];
$thirteen = $_POST ['thirteen'];
$total = ($_POST['one'] + $_POST['two'] + $_POST['three'] + $_POST['four'] 
+   $_POST['five'] + $_POST['six'] + $_POST['seven'] + $_POST['eight']+ 
$_POST['nine'] + $_POST['ten']+ $_POST['eleven'] + 
$_POST['twelve']+ $_POST['thirteen']);

有人告诉我,我应该这样做:

$four = $_POST ['four']- $_POST ['six'];

并且工作正常,除了即使未选择蓝色(四)而选择橙色(六),橙色的值也不会添加到总数中。我应该使用 if/else 语句还是什么?此外,这种形式不需要是安全的。提前感谢您的任何想法。

4

3 回答 3

0

如果在获得蓝色时包含橙色,那么它可能不应该是 2 个不同的是/否选择。

相反,它更可能是一个问题:


你想要哪个计划?橙色 (150) 蓝色 (250)

于 2009-08-12T18:13:14.027 回答
0

是的,if/else 是要走的路。您可以使用三元运算符在线完成此操作。

改变这个:

$total = ($_POST['one'] + $_POST['two'] + $_POST['three'] + $_POST['four'] 
+   $_POST['five'] + $_POST['six'] + $_POST['seven'] + $_POST['eight']+ 
$_POST['nine'] + $_POST['ten']+ $_POST['eleven'] + 
$_POST['twelve']+ $_POST['thirteen']);

对此:

$total = ($_POST['one'] + $_POST['two'] + $_POST['three'] + $_POST['four'] 
+   $_POST['five'] + (($_POST['four'] > 0) ? 0 : $_POST['six']) + $_POST['seven'] + $_POST['eight']+ 
$_POST['nine'] + $_POST['ten']+ $_POST['eleven'] + 
$_POST['twelve']+ $_POST['thirteen']);

这假设您的 $_POST 值是整数。

于 2009-08-12T18:13:43.603 回答
0

是的,你需要一些 if/else 逻辑

if( empty($_POST['blue'] ) && !empty($_POST['orange'] ) )
{
    $_POST['total'] += $_POST['orange'];
}

如果为 false,则仅在蓝色时添加橙色。(注意我使用 empty() 来避免关于未定义变量的警告)

出于好奇,你为什么用数字命名 post 变量?当您将来必须修改它时,按名称命名可能会减少混乱。

于 2009-08-12T18:13:55.333 回答