【问题标题】:php: form pricing error [closed]php:表单定价错误[关闭]
【发布时间】:2013-02-28 16:05:29
【问题描述】:

如您所见,我正在尝试创建一个在 php 部分输出价格的简单表单。但是我得到了这些错误

通知:Undefined variable: result in /var/www/vhosts/numyspace.co.uk/web_users/home/~unn_w12024193/public_html/test/example2.php on line 3

通知:Undefined index: booking in /var/www/vhosts/numyspace.co.uk/web_users/home/~unn_w12024193/public_html/test/example2.php on line 4

警告: Division by zero in /var/www/vhosts/numyspace.co.uk/web_users/home/~unn_w12024193/public_html/test/example2.php on line 4

总费用为: 注意: Undefined variable: result in /var/www/vhosts/numyspace.co.uk/web_users/home/~unn_w12024193/public_html/test/example2.php on line 18 不含增值税。总成本包括增值税。

HTML

<form method="post" action="example2.php">
<select name="booking">
<option value="Double Room">Double Room £50</option>
<option value="Twin Room">Twin Room £70</option>
<option value="Family Room">Family Room £100</option>
</select>

<select name="service">
 <option value="10">Yes £10</option>
 <option value="0">No</option>
</select>

<input type="submit" value="submit" action="example2.php" name="submit"><br />
</form>

PHP

$vresult = $result * 20%
$booking = $_GET["booking"];

if ($booking == "Double Room"){
$result = 50 + $_GET["service"];
}
else if($booking == "Twin Room"){
$result = 50 + $_GET["service"];
}
else if($booking == "Family Room"){
$result = 100 + $_GET["service"];
}
?>
 Total cost is <?php echo $result;?> exculding VAT.

 Total cost is <?php echo $vresult; ?> including VAT.

【问题讨论】:

  • $result 是从哪里来的??
  • 你的method="post",所以检查$_POST而不是$_GET
  • 看来您从第 3 行开始提供 PHP。第 1 行和第 2 行发生了什么? $result 定义在哪里?

标签: php html forms scripting


【解决方案1】:

这是错误的:

$vresult = $result * 20%

% 字符是modulus operator,因为您没有使用第二个参数,也没有使用终止 ;,这会导致各种错误,因为 php 将您的行视为:

$vresult = $result * 20 % $booking = $_GET["booking"];
                                     ^^^^^^^^^^^^^^^^ undefined (see below)
                          ^^^^^^^^ NULL leads to division by zero

你可能想要:

$vresult = $result * 0.2;

您的表单方法是POST,因此您发布的变量将位于$_POST 数组中。

编辑:包含 20% 的价格当然是 1.2 * $result,而您计算价格之后再计算。

【讨论】:

  • 好的,谢谢,我会注意的。
  • 包含增值税的是* 1.2,而不是* 0.2。如果您使用* 0.2,则计算价格的 20%,使用* 1.2,您将计算价格的 20%。
  • @John True,第一行太错误了,我没有通读。为清晰起见进行了编辑。
【解决方案2】:

首先: vresult 应该在你定义 $result 之后,并用 * 1.2 而不是 * 20% 计算 20% 的额外; 第二个:你需要使用$_POST而不是$_GET
第三个: $_POST['service']可以修改,输出前检查一下
/p>

$booking = @$_POST["booking"];
$service = @$_POST["service"] == 10? 10 : 0;

if ($booking == "Double Room"){
   $result = 50 + $service;
}
else if($booking == "Twin Room"){
   $result = 50 + $service;
}
else if($booking == "Family Room"){
   $result = 100 + $service;
}
$vresult = $result * 1.2;
?>
 Total cost is <?php echo $result;?> exculding VAT.

 Total cost is <?php echo $vresult; ?> including VAT.

【讨论】:

  • 你也错过了$result * 20%问题。
  • 一大堆没有解释的代码永远不是一个好的答案。
  • 好的,我注意到了所有的错误,非常感谢大家。
【解决方案3】:

在我看来,您需要移动计算增值税的行

$vresult = $result * 20%

在您实际计算出$result 之后 - 所以就在您关闭 PHP 脚本之前。你需要把它写成

$vresult = $result * 0.2;

【讨论】:

  • 刚刚意识到@Jeroen 有一个几乎相同的答案......他第一个到达那里。
  • 在计算价格之前很好地计算增值税,我什至没有注意到。
【解决方案4】:

当您第一次打开文件时,没有提交任何表单,也没有定义这些变量。 在定义它们之前,您需要使用 isset() 函数。

【讨论】:

    【解决方案5】:

    $result 未定义。我引用 php 的第一行:$vresult = $result * 20%。如果您尝试根据预订类型设置$result,则需要将注释行移到设置$result的代码下方

    另外你的表单方法是POST,所以你需要使用$_POST['booking']

    在 php 的第一行之后,您还缺少一个 ;

    【讨论】:

    • $result 用作一个变量来回显计算的总成本。为此,我需要输入什么代码来定义它?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    • 1970-01-01
    • 1970-01-01
    • 2019-04-14
    相关资源
    最近更新 更多