> 백엔드 개발 > PHP 튜토리얼 > php+pdo로 구현된 장바구니 클래스의 완전한 예

php+pdo로 구현된 장바구니 클래스의 완전한 예

coldplay.xixi
풀어 주다: 2023-04-09 10:38:02
앞으로
2865명이 탐색했습니다.

php+pdo로 구현된 장바구니 클래스의 완전한 예

이 기사의 예에서는 php+pdo로 구현된 장바구니 클래스를 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다:

<?php
session_start();
class Cart
{
  public $pdo = null;
  public function __construct($config)
  {
    $host = $config[&#39;host&#39;];
    $user = $config[&#39;user&#39;];
    $db = $config[&#39;db&#39;];
    $pwd = $config[&#39;pwd&#39;];
    if (empty($_SESSION[&#39;user_id&#39;])) {
      return show(0, &#39;请先登录&#39;);
    }
    try {
      $this->pdo = new PDO("mysql:host=$host;dbname=$db", "$user", "$pwd", array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
      $this->pdo->query("set names utf8");
    } catch (PDOException $e) {
      echo $e->getMessage();
    }
  }
  //添加商品到购物车
  public function add_cart($productid, $num)
  {
    $sql = "select price from shop_product where id=?";
    $stmt = $this->pdo->prepare($sql);
    $stmt->execute(array($productid));
    $data = $stmt->fetch(PDO::FETCH_ASSOC);
    $price = $data[&#39;price&#39;];
    $createtime = time();
    $sql = "select * from shop_cart where productid=? and userid=?";
    $stmt = $this->pdo->prepare($sql);
    $stmt->execute(array($productid, $_SESSION[&#39;user_id&#39;]));
    $data = $stmt->fetch(PDO::FETCH_ASSOC);
    if ($data) {
      $sql = "update shop_cart set num=num+? where userid=? and productid=?";
      $params = array($num, $_SESSION[&#39;user_id&#39;], $productid);
    } else {
      $sql = "insert into shop_cart(productid,num,userid,price,createtime) values(?,?,?,?,?)";
      $params = array($productid, $num, $_SESSION[&#39;user_id&#39;], $price, $createtime);
    }
    $stmt = $this->pdo->prepare($sql);
    $stmt->execute($params);
    $rows = $stmt->rowCount();
    return $rows ?
      show(1, &#39;ok&#39;, $rows) :
      show(0, &#39;fail&#39;);
  }
  //修改购买数量
  public function change_num($productid, $num)
  {
    $sql = "update shop_cart set num=? where userid=? and productid=?";
    $stmt = $this->pdo->prepare($sql);
    $stmt->execute(array($num, $_SESSION[&#39;user_id&#39;], $productid));
    $rows = $stmt->rowCount();
    return $rows ?
      show(1, &#39;ok&#39;, $rows) :
      show(0, &#39;fail&#39;);
  }
  //清空购物车
  public function clear_cart()
  {
    $sql = "delete from shop_cart where userid=?";
    $stmt = $this->pdo->prepare($sql);
    $this->pdo->execute(array($this->user_id));
    $rows = $stmt->rowCount();
    return $rows ?
      show(1, &#39;ok&#39;, $rows) :
      show(0, &#39;fail&#39;);
  }
  //从购物车中删除商品
  public function remove_cart($productid)
  {
    $sql = "delete from shop_cart where productid=? and userid=?";
    $stmt = $this->pdo->prepare($sql);
    $stmt->execute(array($productid, $_SESSION[&#39;user_id&#39;]));
    $rows = $stmt->rowCount();
    return $rows ?
      show(1, &#39;ok&#39;, $rows) :
      show(0, &#39;fail&#39;);
  }
}
//处理数据
function show($status, $message, $data = array())
{
  $result = array(
    &#39;status&#39; => $status,
    &#39;message&#39; => $message,
    &#39;data&#39; => $data
  );
  exit(json_encode($result));
}
//简单使用
$user = [
  &#39;host&#39; => &#39;&#39;,
  &#39;user&#39; => &#39;root&#39;,
  &#39;pwd&#39; => &#39;root&#39;,
  &#39;db&#39; => &#39;shop&#39;,
];
$productid = intval($_POST[&#39;productid&#39;]);
$num = intval($_POST[&#39;num&#39;]);
$cart = new Cart($user);
//添加到购物车
$cart->add_cart($productid, $num);
//删除指定的商品
$cart->remove_cart($productid);
//清空
$cart->clear_cart();
?>
로그인 후 복사

관련 학습 권장 사항: 초보부터 마스터까지 PHP 프로그래밍

위 내용은 php+pdo로 구현된 장바구니 클래스의 완전한 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:jb51.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿