phpショッピングカートは、電子商取引サイトで使用され、商品を選択した後、最初にショッピングカートに入れてカウンターで決済されるのを待ちます。原則を例として使用します。以下を見て、Cookie を使用して実装してみましょう。
PHP チュートリアルのショッピング カートは、電子商取引 Web サイトで使用されます。商品を選択したら、まず自分のショッピング カートに入れて、カウンターで決済されるのを待ちます。この例は完全にこの原則に基づいています。以下を見て、Cookie を使用して実装してみましょう。
/**
*ショッピングカートのCookieは保存され、保存期間は1日です。 注: 使用するにはブラウザがCookieをサポートしている必要があります
*技術交流グループ: 100352308
*/
class cartapi {
private $cartarray = array(); // ショッピングカートを格納する 2 次元配列
private $cartcount; // 買い物カゴを数えるカート
public $expires = 86400; // Cookie の有効期限、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 10進数 $price1 商品価格
* @param 10進数 $price2 商品価格
* @param 10進数$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 functionmodifycart($id, $count, $flag = "") {
$tmpid = $id;
$this-> ;cartarray = $this->cartview(); / / 配列へのデータの読み取りと書き込み
$tmparray = &$this->cartarray; // 参照
if (!is_array($tmparray[0])) false;
if ($id < 1) {
return false;
}
foreach ($tmparray[0] as $item) {
if ($item === $tmpid) {
switch ($flag) {
case 0: // 追加される数量は通常 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]); $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]);
ブレーク;
デフォルト:
ブレーク;
}
}
}
$this->save();
}
/**
* ショッピングカートをクリア
*
*/
public function Removeall() {
$this->cartarray = array();
$this- >save();
}
/**
* ショッピングカートの情報を表示します
*
* @return array 2 次元配列を返します
*/
public function cartview() {
$cookie =tripstutoriallashes($_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 1 次元配列を返します $arr[0]: 製品 1 の合計価格 $arr [1: 製品 2 の合計価格 $arr[2]: 製品 2 の合計価格製品 3 $arr [3]:製品の合計数量
*/
$tmparray = $this-> = $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 if true if it is not存在する場合、それ以外の場合は false
*/
プライベート関数 checkitem($id) {
$tmparray = $this->cartarray;
if (!is_array($tmparray[0])) return;
foreach ($tmparray[0] as $item) {
if ($item === $id) return true;
}
return false;
}
}
?>