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

 更新時間:2020年01月10日 11:51:15   作者:luyaran   我要評論
這篇文章主要介紹了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, $_SESSION['user_id'], $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, $_SESSION['user_id'], $productid));
    $rows = $stmt->rowCount();
    return $rows ?
      show(1, 'ok', $rows) :
      show(0, '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, 'ok', $rows) :
      show(0, '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, 'ok', $rows) :
      show(0, '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程序設計有所幫助。

相關文章

  • PHP會話處理的10個函數

    PHP會話處理的10個函數

    在PHP開發中,比起Cookie,Session 是存儲在服務器端的會話,相對安全,并且不像 Cookie 那樣有存儲長度限制,這里我們詳細介紹一下PHP處理會話函數將要用到10個函數
    2015-08-08
  • PHP通過GD庫實現驗證碼功能示例

    PHP通過GD庫實現驗證碼功能示例

    這篇文章主要介紹了PHP通過GD庫實現驗證碼功能,結合實例形式分析了php驗證碼相關圖片繪制、輸出操作實現技巧,需要的朋友可以參考下
    2019-02-02
  • php實現在新浪云中使用imagick生成縮略圖并上傳的方法

    php實現在新浪云中使用imagick生成縮略圖并上傳的方法

    這篇文章主要介紹了php實現在新浪云中使用imagick生成縮略圖并上傳的方法,涉及新浪云SaeStorage類的相關操作技巧,需要的朋友可以參考下
    2016-09-09
  • PHP數據源架構模式之表入口模式實例分析

    PHP數據源架構模式之表入口模式實例分析

    這篇文章主要介紹了PHP數據源架構模式之表入口模式,結合實例形式分析了PHP表入口模式的相關概念、原理、使用方法及操作注意事項,需要的朋友可以參考下
    2020-01-01
  • 與文件上傳有關的php配置參數總結

    與文件上傳有關的php配置參數總結

    搞個了圖片上傳,死活不好使,后來發現是php參數配置的問題,下面總結下與文件上傳有關的php參數,有類似情況的朋友可以參考下哈
    2013-06-06
  • 防止用戶利用PHP代碼DOS造成用光網絡帶寬

    防止用戶利用PHP代碼DOS造成用光網絡帶寬

    一打開IIS,服務器的流出帶寬就用光-----就是說服務器不斷向別人發包,這個情況和受到DDOS攻擊是不同的,DDOS是不斷收到大量數據包.
    2011-03-03
  • PHP排序算法類實例

    PHP排序算法類實例

    這篇文章主要介紹了PHP排序算法類,實例分析了插入排序、選擇排序、冒泡排序、快速排序等排序算法的原理與實現技巧,需要的朋友可以參考下
    2015-06-06
  • php常用的安全過濾函數集錦

    php常用的安全過濾函數集錦

    由于越來越多的項目開始使用框架,所以,很多的程序員也不在關心安全的問題!因為框架已經幫我們幾乎完美的處理了!但是,個人認為,我們還是需要了解一下常用的安全處理函數!
    2014-10-10
  • php讀取XML的常見方法實例總結

    php讀取XML的常見方法實例總結

    這篇文章主要介紹了php讀取XML的常見方法,結合實例形式總結了php基于DOMDocument、simplexml、正則及xmlreader讀取xml文件的相關操作技巧,需要的朋友可以參考下
    2017-04-04
  • 兩種設置php載入頁面時編碼的方法

    兩種設置php載入頁面時編碼的方法

    設置php頁面編碼的方法有兩種,一是輸出meta標簽,二是使用header函數,下面為大家詳細介紹下
    2014-07-07

最新評論

pc蛋蛋幸运28app下载地址