實用的php購物車程式

來源:互聯網
上載者:User

實用的php教程購物車程式
以前有用過一個感覺不錯,不過看了這個感覺也很好,所以介紹給需要的朋友參考一下。

<?php
//調用執行個體
require_once 'cart.class.php';
session_start();
if(!isset($_SESSION['cart'])) {
 $_SESSION['cart'] = new Cart;
}
$cart =& $_SESSION['cart'];

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']);
}

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]);
 }
}

$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>";


?>
<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>

 

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

 var $cart;
 var $totalCount; //商品總數量
 var $totalPrices; //商品總金額

  /**
     * Cart Constructor
     *
     * 類的建構函式,使購物車保持穩定的初始化狀態
     *
     * @static
     * @access  public
     * @return  void   無傳回值
     * @param   void   無參數
     */
  function Cart(){
  $this->totalCount = 0;
  $this->totalPrice = 0;
  $this->cart = array();
 }
 
 // }}}
    // {{{ add($item)

    /**
 * 增加商品到當前購物車
 *
    * @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;
  }

  $this->cart[$key]['ID']  = $key;
  $this->cart[$key]['name'] = next($item);
  $this->cart[$key]['price'] = next($item);
  $this->cart[$key]['count'] = next($item);

 return $this->cart;
 }

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

    /**
 * 從當前購物車中取出部分或全部商品
 * 當 $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;
 }

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

    /**
 * 修改購物車內商品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;
 }


    /**
 * 返回當前購物車內商品的數組
 *
    * @access public
    * @return array  返回當前購物車內商品的數組;
    */
 function getCart(){
  return $this->cart;
 }

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

    /**
 * 判斷當前購物車中是否存在商品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;
    }

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

    /**
 * 判斷當前購物車是否為空白,即沒有任何商品
 *
    * @access public
    * @return bool   true or false;
    */
 function isEmpty(){
  return !count($this->cart);
 }

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

    /**
 * 取得部分統計資訊
 *
    * @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;
 }

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

    /**
 * 取得當前購物車所有商品的總金額
 *
    * @access public
    * @return float  返回金額;
    */
 function totalPrices(){
  if($this->_stat())
   return $this->totalPrices;
 return 0;
 }

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

    /**
 * 取得當前購物車所有商品的總數量和
 *
    * @access public
    * @return int ;
    */
 function totalCount(){
  if($this->_stat())
   return $this->totalCount; 
 return 0;
 }


}//End Class Cart
?>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.