1. 程式人生 > 程式設計 >php+pdo實現的購物車類完整示例

php+pdo實現的購物車類完整示例

本文例項講述了php+pdo實現的購物車類。分享給大家供大家參考,具體如下:

<?php
session_start();
class Cart
{
  public $pdo = null;
  public function __construct($config)
  {
    $host = $config['host'];
    $user = $config['user'];
    $db = $config['db'];
    $pwd = $config['pwd'];
    if (empty($_SESSION['user_id'])) {
      return show(0,'請先登入');
    }
    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['price'];
    $createtime = time();
    $sql = "select * from shop_cart where productid=? and userid=?";
    $stmt = $this->pdo->prepare($sql);
    $stmt->execute(array($productid,$_SESSION['user_id']));
    $data = $stmt->fetch(PDO::FETCH_ASSOC);
    if ($data) {
      $sql = "update shop_cart set num=num+? where userid=? and productid=?";
      $params = array($num,$_SESSION['user_id'],$productid);
    } else {
      $sql = "insert into shop_cart(productid,num,userid,price,createtime) values(?,?,?)";
      $params = array($productid,$num,$price,$createtime);
    }
    $stmt = $this->pdo->prepare($sql);
    $stmt->execute($params);
    $rows = $stmt->rowCount();
    return $rows ?
      show(1,'ok',$rows) :
      show(0,'fail');
  }
  //修改購買數量
  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,$productid));
    $rows = $stmt->rowCount();
    return $rows ?
      show(1,'fail');
  }
  //清空購物車
  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,'fail');
  }
  //從購物車中刪除商品
  public function remove_cart($productid)
  {
    $sql = "delete from shop_cart where productid=? and userid=?";
    $stmt = $this->pdo->prepare($sql);
    $stmt->execute(array($productid,$_SESSION['user_id']));
    $rows = $stmt->rowCount();
    return $rows ?
      show(1,'fail');
  }
}
//處理資料
function show($status,$message,$data = array())
{
  $result = array(
    'status' => $status,'message' => $message,'data' => $data
  );
  exit(json_encode($result));
}
//簡單使用
$user = [
  'host' => '','user' => 'root','pwd' => 'root','db' => 'shop',];
$productid = intval($_POST['productid']);
$num = intval($_POST['num']);
$cart = new Cart($user);
//新增到購物車
$cart->add_cart($productid,$num);
//刪除指定的商品
$cart->remove_cart($productid);
//清空
$cart->clear_cart();
?>

更多關於PHP相關內容感興趣的讀者可檢視本站專題:《PHP+MySQL購物車開發專題》、《php面向物件程式設計入門教程》、《PHP數學運算技巧總結》、《PHP陣列(Array)操作技巧大全》、《php字串(string)用法總結》、《PHP資料結構與演算法教程》、《php程式設計演算法總結》、《php正則表示式用法總結》、及《php常見資料庫操作技巧彙總》

希望本文所述對大家PHP程式設計有所幫助。