php利用cookies完毕购物车的章程,达成购物车

ca88会员登录中心

<?php
/**
 * 购物车类 cookies 保存,保存周期为1天
注意:浏览器必须协理cookie技能够采纳
 * 本领交换群:100352308
 */
class cartapi {
 private $cartarray = array(); // 贮存购物车的二维数组
 private $cartcount; // 总括购物车多少
 public $expires = 86400; // cookies过期时间,假如为0则不保留到地方单位为秒
 /**
  * 构造函数 早先化操作 就算$id不为空,则直接助长到购物车
  *
  */
 public function __construct($id = “”,$name = “”,$price1 = “”,$price2
= “”,$price3 = “”,$count = “”,$image = “”,$expires = 86400) {
  if ($id != “” && is_numeric($id)) {
   $this->expires = $expires;
   $this->addcart($id,$name,$price1,$price2,$price3,$count,$image);
  }
 }
 /**
  * 增加商品到购物车
  *
  * @param int $id 商品的编号
  * @param string $name 商品名称
  * @param decimal $price1 商品价位
  * @param decimal $price2 商品价位
  * @param decimal $price3 商品价位
  * @param int $count 商品数量
  * @param string $image 商品图片
  * @return 假若商品存在,则在本来的数目上加1,并回到false
  */
 public function
addcart($id,$name,$price1,$price2,$price3,$count,$image) {
  $this->cartarray = $this->cartview(); // 把数量读取并写入数组
  if ($this->checkitem($id)) { // 检查测量试验商品是不是留存
   $this->modifycart($id,$count,0); // 商品数量加$count
   return false;
  }
  $this->cartarray[0][$id] = $id;
  $this->cartarray[1][$id] = $name;
  $this->cartarray[2][$id] = $price1;
  $this->cartarray[3][$id] = $price2;
  $this->cartarray[4][$id] = $price3;
  $this->cartarray[5][$id] = $count;
  $this->cartarray[6][$id] = $image;
  $this->save();
 }
 /**
  * 修改购物车的里面包车型大巴商品
  *
  * @param int $id 商品编号
  * @param int $count 商品数量
  * @param int $flag 修改类型 0:加 1:减 2:修改 3:清空
  * @return 如若改变失利,则赶回false
  */
 public function modifycart($id, $count, $flag = “”) {
  $tmpid = $id;
  $this->cartarray = $this->cartview(); // 把数量读取并写入数组
  $tmparray = &$this->cartarray;  // 引用
  if (!is_array($tmparray[0])) return false;
  if ($id < 1) {
   return false;
  }
  foreach ($tmparray[0] as $item) {
   if ($item === $tmpid) {
    switch ($flag) {
     case 0: // 增添数据 一般$count为1
      $tmparray[5][$id] += $count;
      break;
     case 1: // 收缩多少
      $tmparray[5][$id] -= $count;
      break;
     case 2: // 修改数量
      if ($count == 0) {
       unset($tmparray[0][$id]);
       unset($tmparray[1][$id]);
       unset($tmparray[2][$id]);
       unset($tmparray[3][$id]);
       unset($tmparray[4][$id]);
       unset($tmparray[5][$id]);
       unset($tmparray[6][$id]);
       break;
      } else {
       $tmparray[5][$id] = $count;
       break;
      }
     case 3: // 清空商品
      unset($tmparray[0][$id]);
      unset($tmparray[1][$id]);
      unset($tmparray[2][$id]);
      unset($tmparray[3][$id]);
      unset($tmparray[4][$id]);
      unset($tmparray[5][$id]);
      unset($tmparray[6][$id]);
      break;
     default:
      break;
    }
   }
  }
  $this->save();
 }
 /**
  * 清空购物车
  *
  */
 public function removeall() {
  $this->cartarray = array();
  $this->save();
 }
 /**
  * 查看购物车消息
  *
  * @return array 再次回到三个二维数组
  */
 public function cartview() {
  $cookie =
strips教程lashes($_cookie[‘cartapi’]);
  if (!$cookie) return false;
  $tmpunserialize = unserialize($cookie);
  return $tmpunserialize;
 }
 /**
  * 检查购物车是还是不是有商品
  *
  * @return bool 假如有商品,重回true,不然false
  */
 public function checkcart() {
  $tmparray = $this->cartview();
  if (count($tmparray[0]) < 1) {   
   return false;
  }
  return true;
 }
 /**
  * 商品计算
  *
  * @return array 再次来到一个一维数组 $arr[0]:产品1的总价格
$arr[1:产品2得总价格 $arr[2]:产品3的总价格 $arr[3]:产品的总量据
  */
 public function countprice() {
  $tmparray = $this->cartarray = $this->cartview();
  $outarray = array(); //一维数组
  // 0 是产品1的总价格
  // 1 是产品2的总价格
  // 2 是产品3的总价格
  // 3 是产品的总量据
  $i = 0;
  if (is_array($tmparray[0])) {
   foreach ($tmparray[0] as $key=>$val) {
    $outarray[0] += $tmparray[2][$key] *
$tmparray[5][$key];
    $outarray[1] += $tmparray[3][$key] *
$tmparray[5][$key];
    $outarray[2] += $tmparray[4][$key] *
$tmparray[5][$key];
    $outarray[3] += $tmparray[5][$key];
    $i++;
   }
  }
  return $outarray;
 }
 /**
  * 计算商品数量
  *
  * @return int
  */
 public function cartcount() {
  $tmparray = $this->cartview();
  $tmpcount = count($tmparray[0]);
  $this->cartcount = $tmpcount;
  return $tmpcount;
 }
 /**
  * 保存商品 假使不选拔构造方法,此办法必须运用
  *
  */
 public function save() {
  $tmparray = $this->cartarray;
  $tmpserialize = serialize($tmparray);
  setcookie(“cartapi”,$tmpserialize,time()+$this->expires);
 }
 /**
  * 检查购物车物品是还是不是存在
  *
  * @param int $id
  * @return bool 就算存在 true 不然false
  */
 private function checkitem($id) {
  $tmparray = $this->cartarray;
  if (!is_array($tmparray[0])) return;
  foreach ($tmparray[0] as $item) {
   if ($item === $id) return true;
  }
  return false;
 }
}
?>

正文实例叙述了php利用cookies达成购物车的法子。共享给我们供大家参考。具体深入分析如下:

// }}}
// {{{ totalPrices()

 代码如下

php购物车是在电子商务网址会用到的,一种像超级市场购物车一样的,选好商品了,先松手自身的购物车的里面面等好了再到柜台买下账单,本款php购物车完全依据这些原理来实例的,感兴趣的恋人能够来探视,该实例利用了cookie来促成,代码如下:

/**
* 重回当前购物车内商品的数组
*
* @access public
* @return array 重回当前购物车内商品的数组;
*/
function getCart(){
return $this->cart;
}

<?php
/**
 * 购物车类 cookies 保存,保存周期为1天
注意:浏览器必须援助cookie工夫够利用
 */
class cartapi {
 private $cartarray = array(); // 贮存购物车的二维数组
 private $cartcount; // 总结购物车数量
 public $expires = 86400; // cookies过期时间,若是为0则不保留到地点单位为秒
 /**
  * 构造函数 初叶化操作 如果$id不为空,则直接助长到购物车
  *
  */
 public function __construct($id = “”,$name = “”,$price1 = “”,$price2
= “”,$price3 = “”,$count = “”,$image = “”,$expires = 86400) {
  if ($id != “” && is_numeric($id)) {
ca88会员登录中心,   $this->expires = $expires;
   $this->addcart($id,$name,$price1,$price2,$price3,$count,$image);
  }
 }
 /**
  * 增加商品到购物车
  *
  * @param int $id 商品的号码
  * @param string $name 商品名称
  * @param decimal $price1 商品价位
  * @param decimal $price2 商品价位
  * @param decimal $price3 商品价位
  * @param int $count 商品数量
  * @param string $image 商品图片
  * @return 若是商品存在,则在原本的多少上加1,并重返false
  */
 public function
addcart($id,$name,$price1,$price2,$price3,$count,$image) {
  $this->cartarray = $this->cartview(); // 把数量读取并写入数组
  if ($this->checkitem($id)) { // 检查评定商品是还是不是留存
   $this->modifycart($id,$count,0); // 商品数量加$count
   return false;
  }
  $this->cartarray[0][$id] = $id;
  $this->cartarray[1][$id] = $name;
  $this->cartarray[2][$id] = $price1;
  $this->cartarray[3][$id] = $price2;
  $this->cartarray[4][$id] = $price3;
  $this->cartarray[5][$id] = $count;
  $this->cartarray[6][$id] = $image;
  $this->save();
 }
 /**
  * 修改购物车上的货品
  *
  * @param int $id 商品编号
  * @param int $count 商品数量
  * @param int $flag 修改类型 0:加 1:减 2:修改 3:清空
  * @return 尽管改换失败,则赶回false
  */
 public function modifycart($id, $count, $flag = “”) {
  $tmpid = $id;
  $this->cartarray = $this->cartview(); // 把数量读取并写入数组
  $tmparray = &$this->cartarray;  // 引用
  if (!is_array($tmparray[0])) return false;
  if ($id < 1) {
   return false;
  }
  foreach ($tmparray[0] as $item) {
   if ($item === $tmpid) {
    switch ($flag) {
     case 0: // 加多数量 一般$count为1
      $tmparray[5][$id] += $count;
      break;
     case 1: // 裁减多少
      $tmparray[5][$id] -= $count;
      break;
     case 2: // 修改数量
      if ($count == 0) {
       unset($tmparray[0][$id]);
       unset($tmparray[1][$id]);
       unset($tmparray[2][$id]);
       unset($tmparray[3][$id]);
       unset($tmparray[4][$id]);
       unset($tmparray[5][$id]);
       unset($tmparray[6][$id]);
       break;
      } else {
       $tmparray[5][$id] = $count;
       break;
      }
     case 3: // 清空商品
      unset($tmparray[0][$id]);
      unset($tmparray[1][$id]);
      unset($tmparray[2][$id]);
      unset($tmparray[3][$id]);
      unset($tmparray[4][$id]);
      unset($tmparray[5][$id]);
      unset($tmparray[6][$id]);
      break;
     default:
      break;
    }
   }
  }
  $this->save();
 }
 /**
  * 清空购物车
  *
  */
 public function removeall() {
  $this->cartarray = array();
  $this->save();
 }
 /**
  * 查看购物车新闻
  *
  * @return array 再次回到二个二维数组
  */
 public function cartview() {
  $cookie = strips教程lashes($_cookie[‘cartapi’]);
  if (!$cookie) return false;
  $tmpunserialize = unserialize($cookie);
  return $tmpunserialize;
 }
 /**
  * 检查购物车是或不是有商品
  *
  * @return bool 倘诺有商品,重回true,不然false
  */
 public function checkcart() {
  $tmparray = $this->cartview();
  if (count($tmparray[0]) < 1) {   
   return false;
  }
  return true;
 }
 /**
  * 商品计算
  *
  * @return array 重回贰个一维数组 $arr[0]:产品1的总价格
$arr[1:产品2得总价格 $arr[2]:产品3的总价格 $arr[3]:产品的总量量
  */
 public function countprice() {
  $tmparray = $this->cartarray = $this->cartview();
  $outarray = array(); //一维数组
  // 0 是成品1的总价格
  // 1 是成品2的总价格
  // 2 是成品3的总价格
  // 3 是成品的总的数量量
  $i = 0;
  if (is_array($tmparray[0])) {
   foreach ($tmparray[0] as $key=>$val) {
    $outarray[0] += $tmparray[2][$key] *
$tmparray[5][$key];
    $outarray[1] += $tmparray[3][$key] *
$tmparray[5][$key];
    $outarray[2] += $tmparray[4][$key] *
$tmparray[5][$key];
    $outarray[3] += $tmparray[5][$key];
    $i++;
   }
  }
  return $outarray;
 }
 /**
  * 总计商品数量
  *
  * @return int
  */
 public function cartcount() {
  $tmparray = $this->cartview();
  $tmpcount = count($tmparray[0]);
  $this->cartcount = $tmpcount;
  return $tmpcount;
 }
 /**
  * 保存商品 纵然不利用构造方法,此措施必须利用
  *
  */
 public function save() {
  $tmparray = $this->cartarray;
  $tmpserialize = serialize($tmparray);
  setcookie(“cartapi”,$tmpserialize,time()+$this->expires);
 }
 /**
  * 检查购物车货品是还是不是留存
  *
  * @param int $id
  * @return bool 借使存在 true 不然false
  */
 private function checkitem($id) {
  $tmparray = $this->cartarray;
  if (!is_array($tmparray[0])) return;
  foreach ($tmparray[0] as $item) {
   if ($item === $id) return true;
  }
  return false;
 }
}
?>

// }}}
// {{{ isEmpty()

复制代码 代码如下:

// }}}
// {{{ add($item)

可望本文所述对我们的PHP程序设计具有扶助。

return $this->cart;
}

你恐怕感兴趣的稿子:

  • cookie的优化与购物车实例

/**
* 获得部分计算音信
*
* @access private
* @return bool true or false;
*/
function _stat(){
if($this->isEmpty()) return false;
foreach($this->cart as $item){
$this->totalCount = @end($item);
$this->totalPrices = @prev($item);
}
return true;
}

<?php
//调用实例
require_once ‘cart.class.php’;
session_start();
if(!isset($_SESSION[‘cart’])) {
$_SESSION[‘cart’] = new Cart;
}
$cart =& $_SESSION[‘cart’];

$items = $cart->getCart();
//打印
echo “<table border=1>”;
setlocale(LC_MONETARY, ‘it_IT’);
foreach($items as $item){
echo “<tr><form method=”post” action=”tmp.php”>”;
echo “<td>ID:”.$item[‘ID’].”<input type=hidden name=key[]
value=”.$item[‘ID’].”>”;
echo “<td>产品:”.$item[‘name’];
echo “<td>单价:”.$item[‘price’];
echo “<td><input type=text name=value[]
value=”.$item[‘count’].”>”;
$sum = $item[‘count’]*$item[‘price’];
echo “<td>合计:”.round($sum,2);
echo “<td><input type=button value=’删除’
onclick=”location=’?action=remove&key=”.$item[‘ID’].”‘”>”;
}
echo “<input type=hidden name=action value=modi>”;
echo “<tr><td colspan=7><input type=submit />”;
echo “</td></form></tr></table>”;

/**
* 判别当前购物车中是或不是留存商品ID号为$key的货色
*
* @access private
* @param string $key 商品ID
* @return bool true or false;
*/
function _isExists($key)
{
if(isset($this->cart[$key])&&!empty($this->cart[$key])&&array_key_exists($key,$this->cart))
return true;
return false;
}

实用的php教程购物车程序
开头有用过贰个感到没有错,不过看了这一个感到也很好,所以介绍给须求的朋友参谋一下。

// }}}
// {{{ _isExists($key)

if(
($_SERVER[‘REQUEST_METHOD’]==”POST”)&&($_POST[‘action’]==’add’)
){
$p = $_POST[‘p’];
$items = $cart->add($p);
}
if( ($_GET[‘action’]==’remove’)&&($_GET[‘key’]!=””) ) {
$items = $cart->remove($_GET[‘key’]);
}

 

$this->ca(www.111cn.net)rt[$key][‘ID’] = $key;
$this->cart[$key][‘name’] = next($item);
$this->cart[$key][‘price’] = next($item);
$this->cart[$key][‘count’] = next($item);

/**
* Cart Constructor
*
* 类的构造函数,使购物车保持安静的开首化状态
*
* @static
* @access public
* @return void 无再次来到值
* @param void 无参数
*/
function Cart(){
$this->totalCount = 0;
$this->totalPrice = 0;
$this->cart = array();
}

// }}}
// {{{ add($item)

/**
* 取妥善前购物车全部商品的总的数量量和
*
* @access public
* @return int ;
*/
function totalCount(){
if($this->_stat())
return $this->totalCount;
return 0;
}

}//End Class Cart
?>
from:

/**
* 取伏贴前购物车全体商品的总金额
*
* @access public
* @return float 再次回到金额;
*/
function totalPrices(){
if($this->_stat())
return $this->totalPrices;
return 0;
}

// }}}
// {{{ _stat()

var $cart;
var $totalCount; //商品总的数量据
var $totalPrices; //商品总金额

/**
* 扩展商品到近年来购物车
*
* @access public
* @param array $item
商品音讯(一维数组:array(商品ID,商品名称,商品单价,商品数量))
* @return array 再次来到当前购物车内商品的数组
*/
function add($item){
if(!is_array($item)||is_null($item)) return $this->cart;
if(!is_numeric(end($item))||(!is_numeric(prev($item)))) {
echo “价格和数目必须是数字”;
return $this->cart;
}
reset($item); //这一句是必须的,因为地方的推断已经移动了数组的指标
$key = current($item);
if($key==””) return $this->cart;
if($this->_isExists($key)){ //商品是或不是曾经存在?
$this->cart[$key][‘count’] = end($item);
return $this->cart;
}

/**
* 修改购物车内商品ID为 $key 的商品的数量为 $value
*
* @access public
* @param string $key 商品ID
* @param int $value 商品数量
* @return array 再次来到当前购物车内商品的数组;
*/
function modi($key,$value){
if(!$this->_isExists($key)) return $this->cart();
//一纸空文此商品,直接回到
if($value<=0){ // value 太小,全体刨除
unset($this->cart[$key]);
return $this->cart;
}
$this->cart[$key][‘count’] = $value;
return $this->cart;
}

/**
* 从眼下购物车中抽取一些或任何商品
* 当 $key==”” 的时候,清空当前购物车
* 当 $key!=””&&$count==”” 的时候,从当前购物车中拣出商品ID号为 $key
的全方位货品
* 当 $key!=””&&$count!=”” 的时候,从近日购物车中拣出 $count个
商品ID号为 $key 的商品
*
* @access public
* @param string $key 商品ID
* @return mixed 再次来到真假或当前购物车内商品的数组
*/
function remove($key=””,$count=””){
if($key==””) {
$this->cart = array();
return true;
}
if(!array_key_exists($key,$this->cart)) return false;
if($count==””){ //移去这一类商品
unset($this->cart[$key]);
}else{ //移去$count个商品
$this->cart[$key][‘count’] -= $count;
if($this->cart[$key][‘count’]<=0)
unset($this->cart[$key]);
}
return $this->cart;
}

// }}}
// {{{ isEmpty()

if(
($_SERVER[‘REQUEST_METHOD’]==”POST”)&&($_POST[‘action’]==’modi’)
){
$key = $_POST[‘key’];
$value = $_POST[‘value’];
for($i=0;$i<count($key);$i ){
$items = $cart->modi($key[$i],$value[$i]);
}
}

?>
<hr>
<form method=”post” action=”tmp.php”>
ID:<input type=”text” name=”p[]” />
品名:<input type=”text” name=”p[]” />
单价:<input type=”text” name=”p[]” />
数量:<input type=”text” name=”p[]” />
<input type=hidden name=action value=add>
<input type=”submit” />
</form>

// }}}
// {{{ modi($key,$value)

/**
* 判别当前购物车是或不是为空,即没有其余货品
*
* @access public
* @return bool true or false;
*/
function isEmpty(){
return !count($this->cart);
}

<?
/**
* Cart
*
* 购物车类
*
* @author doodoo<pWtitle@yahoo.com.cn>
* @package Cart
* @category Cart
* @license PHP License
* @access public
* @version $Revision: 1.10 $
*/
Class Cart{

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图