php+bootstrap+jquery+mysql实现购物车项目案例

获取源码

一键三连后,评论区留下邮箱安排发送:)

介绍

使用php,bootstrap,jquery,mysql实现的简易购物车案例。
在这里插入图片描述
在这里插入图片描述

通过本案例,你将学习到以下知识点:

  • php 操作 mysql 实现增删改查
  • 掌握 php 常用数组函数
  • 掌握 php $_session 对象使用
  • 掌握 php 基本的面向对象编程知识
  • 掌握 bootstrap 基本的布局和样式组件使用

技术栈

  • php7.0+
  • bootstrap4.0+
  • jquery
  • mysql5.7

开发步骤

只展示核心代码,完整项目请按文章开头说明获取。

项目概览

在这里插入图片描述

创建表结构

CREATE TABLE `products` (
	  `id` int(11) NOT NULL,
	  `name` varchar(255) NOT NULL,
	  `sku` varchar(255) NOT NULL,
	  `image` text NOT NULL,
	  `price` double(10,2) NOT NULL
	) 

php连接mysql

class DBConnection {
    private $_dbHostname = "localhost";
    private $_dbName = "demo_DB";
    private $_dbUsername = "root";
    private $_dbPassword = "";
    private $_con;

    public function __construct() {
    	try {
        	$this->_con = new PDO("mysql:host=$this->_dbHostname;dbname=$this->_dbName", $this->_dbUsername, $this->_dbPassword);    
        	$this->_con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
	    } catch(PDOException $e) {
			echo "Connection failed: " . $e->getMessage();
		}

    }
    // return Connection
    public function returnConnection() {
        return $this->_con;
    }
}
?>

创建购物车类

class Cart 
	{

	    protected $db;
	    private $_sku;
	    public function setSKU($sku) {
	        $this->_sku = $sku;
	    }

	    public function __construct() {
	        $this->db = new DBConnection();
	        $this->db = $this->db->returnConnection();
	    }

	    // getAll Product
	    public function getAllProduct() {
	    	try {
	    		$sql = "SELECT * FROM products";
			    $stmt = $this->db->prepare($sql);

			    $stmt->execute();
			    $result = $stmt->fetchAll(\PDO::FETCH_ASSOC);
	            return $result;
			} catch (Exception $e) {
			    die("Oh noes! There's an error in the query!");
			}
	    }

	    // get Student
	    public function getProduct() {
	    	try {
	    		$sql = "SELECT * FROM products WHERE sku=:sku";
			    $stmt = $this->db->prepare($sql);
			    $data = [
			    	'sku' => $this->_sku
				];
			    $stmt->execute($data);
			    $result = $stmt->fetch(\PDO::FETCH_ASSOC);
	            return $result;
			} catch (Exception $e) {
			    die("Oh noes! There's an error in the query!");
			}
	    }

	}

创建首页

<?php
session_start();
include('class/Cart.php');
$cart = new Cart();
$product_array = $cart->getAllProduct();

include('templates/header.php');
if(!empty($_SESSION["cart_item"])){
	$count = count($_SESSION["cart_item"]);
} else {
	$count = 0;
}
?>  	
<section class="showcase">
  <div class="container">
    <div class="pb-2 mt-4 mb-2 border-bottom">
      <h2>Build Simple Shopping Cart using PHP <a style="float: right;" href="cart.php" class="btn btn-primary text-right">  Cart <i class="fa fa-shopping-cart" aria-hidden="true"></i> <span class="badge badge-light" id="cart-count"><?php print $count; ?></span></a></h2>

    </div>
	<div class="row">
	<div class="col" id="add-item-bag" style="width:100%;"></div>

<div id="product-grid">
	<?php
	if (!empty($product_array)) { 
		foreach($product_array as $key=>$value){
	?>
		<div class="product-item">
			<div class="product-image"><img src="<?php echo $product_array[$key]["image"]; ?>"></div>
			<div class="product-tile-footer">
			<div class="product-title"><?php echo $product_array[$key]["name"]; ?></div>
			<div class="product-price"><?php echo "$".$product_array[$key]["price"]; ?></div>
			<div class="cart-action">
			<input type="text" class="product-quantity" id="qty-<?php echo $product_array[$key]["id"]; ?>" name="quantity" value="1" size="2" />
			<button type="button" class="btnAddAction" data-itemid="<?php echo $product_array[$key]["id"]; ?>" id="product-<?php echo $product_array[$key]["id"]; ?>" data-action="action" data-sku="<?php echo $product_array[$key]["sku"]; ?>" data-proname="<?php echo $product_array[$key]["sku"]; ?>"> Add to Cart</button>
		</div>
			</div>
		</div>
	<?php
		}
	}
	?>
</div>

    </div>

</div>
</section>
<?php include('templates/footer.php');?> 

添加购物车逻辑

<?php
	session_start();
	$json = array();
	include('class/Cart.php');
	$cart = new Cart();
	$cart->setSKU($_POST["sku"]);
	$productByCode = $cart->getProduct();

	if(!empty($_POST["quantity"])) {
		$itemArray = array($productByCode["sku"]=>array('name'=>$productByCode["name"], 'sku'=>$productByCode["sku"], 'quantity'=>$_POST["quantity"], 'price'=>$productByCode["price"], 'image'=>$productByCode["image"]));
		
		if(!empty($_SESSION["cart_item"])) {
			if(in_array($productByCode["sku"],array_keys($_SESSION["cart_item"]))) {
				foreach($_SESSION["cart_item"] as $k => $v) {
						if($productByCode["sku"] == $k) {
							if(empty($_SESSION["cart_item"][$k]["quantity"])) {
								$_SESSION["cart_item"][$k]["quantity"] = 0;
							}
							$_SESSION["cart_item"][$k]["quantity"] += $_POST["quantity"];
						}
				}
			} else {
				$_SESSION["cart_item"] = array_merge($_SESSION["cart_item"],$itemArray);
			}
		} else {
			$_SESSION["cart_item"] = $itemArray;
		}
		$json['count'] = count($_SESSION["cart_item"]);
	}
	header('Content-Type: application/json');
	echo json_encode($json);		
	?>

删除购物车商品逻辑

	<?php
	session_start();
	$json = array();
	$total_quantity = 0;
	$total_price = 0;
	$count = 0;
	if(!empty($_SESSION["cart_item"]) && count($_SESSION["cart_item"])>0) {
		if(!empty($_SESSION["cart_item"])) {
			foreach($_SESSION["cart_item"] as $k => $v) {
					if($_POST["sku"] == $k)
						unset($_SESSION["cart_item"][$k]);				
					if(empty($_SESSION["cart_item"]))
						unset($_SESSION["cart_item"]);
			}
		}
		$bindHTML = '';
		foreach ($_SESSION["cart_item"] as $item){
			$total_quantity += $item["quantity"];
			$total_price += ($item["price"]*$item["quantity"]);
		}
		$count = count($_SESSION["cart_item"]);
		$json['total_quantity'] = $total_quantity;
		$json['total_price'] = number_format($total_price, 2);
		$json['count'] = $count;
	}
	header('Content-Type: application/json');
	echo json_encode($json);		
	?>

部署方式

  1. 安装 php 运行环境,例如:使用 phpstudy
  2. 将文件夹phpcart复制到 apache 网站运行目录,例如:D:\program\phpstudy_pro\WWW
  3. phpstudy 中配置网站运行目录和端口
  4. 修改文件class\DBConnection.php中数据库信息
  5. 创建数据库phpcart导入 sql 文件sql/phpcart.sql
  6. 打开谷歌浏览器,访问路径:http://localhost:8082/phpcart/cart.php
  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
系统分析: 该蛋糕商城系统是一个基于JSP、CSS、jQueryBootstrapMySQL和Servlet技术开发的前后台分离的电商平台。系统主要包含管理员和普通用户两种角色,分别负责后台管理和前台购物功能。 管理员角色功能分析: 1. 管理员登录:管理员通过登录功能进入系统后台,需要输入正确的用户名和密码进行身份验证。 2. 商品管理:管理员可以对商品进行添加、编辑、删除和上下架等操作,包括商品信息的录入、图片的上传和价格的设置等。 3. 订单管理:管理员可以查看和管理用户的订单,包括订单状态的更新(如确认发货、取消订单等)和订单详情的查看。 4. 客户管理:管理员可以查看和管理用户信息,包括用户注册信息的查看、编辑和删除等操作。 5. 类目管理:管理员可以对商品进行分类管理,包括添加新的商品类别和编辑现有类别等操作。 普通用户角色功能分析: 1. 首页:用户可以浏览商城的首页,展示热销和新品等商品信息,吸引用户的注意。 2. 商品分类:用户可以根据商品类别进行浏览和搜索,方便找到所需商品。 3. 注册新用户:用户可以通过注册功能创建新的账户,需要填写必要的个人信息,并进行账户验证。 4. 用户登录:已注册的用户可以通过登录功能进入个人账户,输入正确的用户名和密码进行身份验证。 5. 查看个人中心:用户可以查看和编辑个人资料,包括修改个人信息、密码和头像等。 6. 购买商品:用户可以将商品加入购物车,并进行结算,包括选择商品数量、收货地址和支付方式等。 7. 查看购物车:用户可以查看购物车中的商品列表,包括商品数量、小计金额和删除商品等操作。 8. 提交订单:用户可以确认购物车中的商品,并提交订单,生成订单号。 9. 模拟支付成功:用户可以模拟支付成功的操作,以完成订单的支付流程。 10. 查看订单:用户可以查看自己的订单详情,包括订单状态、商品列表和配送信息等。 该系统采用JSP作为前端展示页面,CSS和Bootstrap用于美化页面样式,jQuery用于交互操作。MySQL用于存储用户信息、商品数据和订单信息等,Servlet作为后端处理逻辑的控制器,实现了前后台数据的交互和业务逻辑的处理。整体系统架构清晰,功能完善,满足蛋糕商城的基本需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值