尝试使用会话在PHP中创建一个简单的购物车

时间:2017-04-18 16:17:48

标签: php session cart

我有一个任务,我们应该创建一个电子商务网站,从数据库中提取产品,列出它们并允许您将它们添加到购物车,但只需要一个数量的项目,但它还必须有其他功能,我想我可以自己解决。

我现在正在努力的是,当用户点击我为从数据库中提取的每件商品创建的“立即购买”按钮时,实际上是在我的购物车中添加商品但是我很丢失。我正在尝试使用购物车的会话,以便在浏览器关闭时删除所有内容。

以下是我列出可用项目的页面的内容:

<?php
    $id = $_GET['id'];
    $sql = "SELECT * FROM products WHERE id=$id";
    $result = mysqli_query($connection, $sql);

    echo '<div id="description">';
    if(mysqli_num_rows($result)>0){
        while($row = mysqli_fetch_array($result)){
            echo '<h2>'.$row['Name'].'</h2>';
            echo '<p>'.$row['Description'].'</p>';
            echo '<a href="cart.php" id="'.$row['id'].'" class="buyNow">Buy Now - $'.$row['Price'].'.00</a>';
        }
    }else{
        echo "There is something wrong.";
    }
    echo '</div>';
?>

以下是我购物车的内容:

<?php 

require('connection.php'); 
session_start();

$cart_content = array(); 

?>

我还没有过去为将成为购物车项目的数组创建骨骼。我不知道我是否有一个早上或者什么,但我似乎无法弄清楚如何使用我创建的按钮添加项目。当我考虑这样做时,它看起来应该很容易但我无法弄明白,无论我看到的教程如何。现在,这是我唯一需要帮助的东西,因为我很确定我可以自己解决剩下的问题。

1 个答案:

答案 0 :(得分:0)

首先,当您使用锚标记启动CART处理时,需要将id添加到查询字符串

<?php
    session_start();
    // show all products in this script
    $sql = "SELECT * FROM products";
    $result = mysqli_query($connection, $sql);

    echo '<div id="description">';
    if(mysqli_num_rows($result)>0){
        while($row = mysqli_fetch_array($result)){
            // stop it showing a product if it has already been selected by user
            if ( ! in_array($row['id'], $_SESSION['cart'] ) {
                echo '<h2>'.$row['Name'].'</h2>';
                echo '<p>'.$row['Description'].'</p>';
                echo '<a href="cart.php?id=' . $row['id'] . '" class="buyNow">Buy Now - $'.$row['Price'].'.00</a>';
            }
        }
    }else{
        echo "There is something wrong.";
    }
    echo '</div>';
?>

现在,当您在购物车处理脚本中查找$_GET['id']时,它应该存在于$_GET['id']中。您需要做的就是将其添加到$_SESSION数组中稍后可以查看的内容中。它可以在$ _SESSION中为该数组提供合理的名称。

<?php 
session_start();
require('connection.php'); 

// add this id to the cart array in the session
$_SESSION['cart'][] = $_GET['id']; 
// re-run the first script
header('Location: xxxx.php');   // sorry dont know what the fist script is called

?>