从数组添加项目到购物车

时间:2013-06-11 22:53:55

标签: php html

我正在创建一个php驱动的购物车作为任务的一部分。 所有产品目前都存储在一个数组中(我知道它们实际上存储在一个数据库中,但是对于这个任务,它不是必需的)

我想知道是否可以通过点击链接将项目添加到购物车中,点击继续后,将用户带到摘要屏幕,显示每个项目的成本(从数组中显示的值)和所有项目的总费用。

我也希望包含一个促销代码输入框,是否可以计算并显示按钮点击的折扣,E.G“更新”

到目前为止,我只将产品显示在一张表中,这是好的,购物车部分现在让我感到困惑,还有折扣部分。

<?php
$Item1 = array('SKU'=>test1, 'name'=>ProductTest1, 'Price'=>10.00);
$Item2 = array('SKU'=>test2, 'name'=>ProductTest2, 'Price'=>11.00);
$Item3 = array('SKU'=>test3, 'name'=>ProductTest3, 'Price'=>12.00);

?>

<html>
<head>
<link rel="stylesheet" type="text/css" href="Style.css">
</head>
<body>
<div id="container">
<div id="main">
<table>
<tr>
<th>SKU</th>
<th>Name</th>
<th>Price</th>
<th>Action</th>
</tr>
<tr>
<td><?php echo $Item1[SKU]; ?></td>
<td><?php echo $Item1[name]; ?></td>
<td><?php echo '£'. number_format($Item1[Price],2); ?></td>
<td><a href=#>Add To Cart</a></td>
</tr>
<tr>
<td><?php echo $Item2[SKU]; ?></td>
<td><?php echo $Item2[name]; ?></td>
<td><?php echo '£'. number_format($Item2[Price],2); ?></td>
<td><a href=#>Add To Cart</a></td>
</tr>
<tr>
<td><?php echo $Item3[SKU]; ?></td>
<td><?php echo $Item3[name]; ?></td>
<td><?php echo '£'. number_format($Item3[Price],2); ?></td>
<td><a href=#>Add To Cart</a></td>
</tr>
</table>
<input id="Proceed" type="Submit" value="Proceed">
</div>
</div>
</body>
</html>

2 个答案:

答案 0 :(得分:1)

您的第一个停靠点是查看会话(http://www.w3schools.com/php/php_sessions.asp

您的添加到购物车链接将转到另一个PHP页面,因此它可能是addtocart.php

每个“添加到购物车”链接都将通过SKU /产品ID,因此每个链接都将具有唯一的GET参数 - I.E. addtocart.php?sku = test1 - 这样您就知道要添加到购物车中的产品。

我已经阅读了Google的一些教程,例如http://jameshamilton.eu/content/simple-php-shopping-cart-tutorial?PHPSESSID=99d373741727e3010a32319f1ebed001

如果您仍遇到问题,请将问题细分为具体问题,我相信有人会帮忙解决问题。

有关创建没有数据库的购物车,请参阅Simple PHP Shopping Cart without SQL

答案 1 :(得分:0)

首先,这不是像这样使用数组的好方法。试试这个:

<?php
$products = array(
    array('SKU'=>test1, 'name'=>ProductTest1, 'Price'=>10.00),
    array('SKU'=>test2, 'name'=>ProductTest2, 'Price'=>11.00),
    array('SKU'=>test3, 'name'=>ProductTest3, 'Price'=>12.00),
);

?>

<html>
<head>
<link rel="stylesheet" type="text/css" href="Style.css">
</head>
<body>
<div id="container">
<div id="main">
<table>
<tr>
<th>SKU</th>
<th>Name</th>
<th>Price</th>
<th>Action</th>
</tr>
<?php foreach ($products as $key => $product): ?>
<tr>
<td><?php echo $product['SKU']; ?></td>
<td><?php echo $product['name']; ?></td>
<td><?php echo '£'. number_format($product['Price'],2); ?></td>
<td><a href="#">Add To Cart</a></td>
</tr>
<?php endif; ?>
</table>
<input id="Proceed" type="Submit" value="Proceed">
</div>
</div>
</body>
</html>

现在如何解决购物车问题。你必须使用持久性的东西。会议将是最简单的:

<?php
session_start();
$products = array(
    array('SKU'=>test1, 'name'=>ProductTest1, 'Price'=>10.00),
    array('SKU'=>test2, 'name'=>ProductTest2, 'Price'=>11.00),
    array('SKU'=>test3, 'name'=>ProductTest3, 'Price'=>12.00),
);

if (isset($_GET['action'] && $_GET['action'] === 'addToCart') {
   if (!isset($_SESSION['cart']) $_SESSION['cart'] = array();
   $_SESSION['cart'][] = $_GET['product'];
}

?>

<html>
<head>
<link rel="stylesheet" type="text/css" href="Style.css">
</head>
<body>
<div id="container">
<div id="main">
<?php if (isset($_SESSION['cart']) && !empty($_SESSION['cart'])): ?>
<ul id="cart">
<?php foreach($_SESSION['cart'] as $product): ?>
   <li><?= $products[$product]['name'] ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>

<table>
<tr>
<th>SKU</th>
<th>Name</th>
<th>Price</th>
<th>Action</th>
</tr>
<?php foreach ($products as $key => $product): ?>
<tr>
<td><?php echo $product['SKU']; ?></td>
<td><?php echo $product['name']; ?></td>
<td><?php echo '£'. number_format($product['Price'],2); ?></td>
<td><a href="?action=addToCart&product=<?php echo $key ?>">Add To Cart</a></td>
</tr>
<?php endif; ?>
</table>
<input id="Proceed" type="Submit" value="Proceed">
</div>
</div>
</body>
</html>

它应该工作。只需调整代码即可。