-2

如您所见,我正在尝试创建一个在 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.
4

5 回答 5

3

这是错误的:

$vresult = $result * 20%

%字符是模运算符,因为您没有使用第二个参数,也没有使用;导致各种错误的终止,因为 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,您在计算价格计算。

于 2013-03-12T22:10:19.827 回答
1

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

$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.
于 2013-03-12T22:11:06.410 回答
1

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

$vresult = $result * 20%

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

$vresult = $result * 0.2;
于 2013-03-12T22:12:04.380 回答
0

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

您的表单方法也是POST如此,您需要使用$_POST['booking']

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

于 2013-03-12T22:09:38.977 回答
-2

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

于 2013-03-12T22:11:08.130 回答