我是php的新手,所以我很难完成此作业的每一步。最后一步,我碰壁了。我仅使用PHP(按照说明)构建了一个简单的购物车。 index.php页面包含所有项目以及一个重定向到checkout.php页面的checkout按钮。如果用户在将商品添加到购物车之前单击此“结帐”按钮,则我需要在结帐页面上显示“您的购物车为空”消息。我假设我需要对checkout.php文件进行检查。我已经尝试了十多次,但没有运气。感谢帮助。
我在checkout.php文件中包含了我尝试的代码
<?php
require_once('session_util.php');
if(isset($_SESSION[SHOPPING_CART]) && empty($_SESSION[SHOPPING_CART])) {
echo 'Your shopping cart is empty.';
}
?>
<!doctype html>
<html lang="en">
<head>
<title>Form 1</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<main>
<h2>Checkout</h2>
<table id="cart">
<?php
// This is where session starts
$itemArray = $_SESSION[SHOPPING_CART]->getItemArray();
foreach ($itemArray as $item) {
$name = $item->getName();
$price = number_format($item->getPrice(), 2);
echo "<tr>
<th>$name</th>
<th>$$price</th>
</tr>";
}
// you will get these from the shopping cart, not a specifc item
$subTotal = number_format($_SESSION[SHOPPING_CART]->subTotal(), 2);
$tax = number_format($_SESSION[SHOPPING_CART]->addTax(), 2);
$total = number_format($_SESSION[SHOPPING_CART]->getTotal(), 2);
// Display calculated subtotal, tax, and total.
?>
<?php
echo "
<table id='total'>
<tr><td>SubTotal   $$subTotal</td></tr>
<tr><td>Tax           $$tax</td></tr>
<tr><td>Total         $$total</tr></td>
</table>
";
?>
</table>
<form id="keep_shopping" method="post" action="index.php">
<input id="submit" type="submit" class="keep_shopping" name="keep_shopping" value="Keep Shopping">
</form>
<form id="empty_cart" method="post" action="clear_cart.php">
<input id="submit" type="submit" class="empty_cart" name="empty_cart" value="Empty Cart">
</form>
</main>
</body>
</html>
注释中要求的编辑和信息:
enter code here
session_start()位于单独的文件session_util.php中,该文件在所有其他分配文件的顶部都是必需的。
另外,当我在$_SESSION[SHOPPING_CART]
上执行var_dump时;我得到以下信息:
object(ShoppingCart)#11(1){[“” itemArray“:” ShoppingCart“:private] => array(0){}}
答案 0 :(得分:0)
首先必须有
session_start()
在访问会话变量的php页面上。
然后是语法错误,而不是
$_SESSION[SHOPPING_CART]
应该在整个代码中的任何地方$_SESSION["SHOPPING_CART"]
。