购物车
2016-07-03 22:28 袁叶子 阅读(314) 评论(0) 编辑 收藏 举报php 购物车实例
<?php
if(! $session && ! $scid) {
$session = md5(uniqid(rand()));
SetCookie(scid, $session, time() + 14400);
} class Cart { //开始购物车类 function check_item( $table, $session, $product) {
$query = SELECT * FROM $table WHERE session=' $session' AND product=' $product' ;
$result = mysql_query( $query); if(! $result) { return 0; }
$numRows = mysql_num_rows( $result); if( $numRows == 0) { return 0;
} else { $row = mysql_fetch_object( $result); return $row->quantity;
} } function add_item( $table, $session, $product, $quantity) {
$qty = $this->check_item( $table, $session, $product);
if( $qty == 0) { $query = INSERT INTO $table (session, product, quantity) VALUES ; $query .= (' $session', ' $product', ' $quantity') ; mysql_query( $query);
} else { $quantity += $qty; //若有,则在原有基础上增加数量 $query = UPDATE $table SET quantity=' $quantity' WHERE session=' $session' AND ; $query .= product=' $product' ; mysql_query( $query);
} } function delete_item( $table, $session, $product) {
$query = DELETE FROM $table WHERE session=' $session' AND product=' $product' ; mysql_query( $query);
} function modify_quantity( $table, $session, $product, $quantity) {
$query = UPDATE $table SET quantity=' $quantity' WHERE session=' $session' ; $query .= AND product=' $product' ; mysql_query( $query);
} function clear_cart( $table, $session) {
$query = DELETE FROM $table WHERE session=' $session' ; mysql_query( $query); } function cart_total( $table, $session) {
$query = SELECT * FROM $table WHERE session=' $session' ; $result = mysql_query( $query);
if(mysql_num_rows( $result) > 0) { while( $row = mysql_fetch_object( $result)) {
$query = SELECT price FROM inventory WHERE product=' $row->product' ; $invResult = mysql_query( $query);
$row_price = mysql_fetch_object( $invResult); $total += ( $row_price->price * $row->quantity);
} } return $total; //返回总价钱 } function display_contents( $table, $session) {
$count = 0;
$query = SELECT * FROM $table WHERE session=' $session' ORDER BY id ; $result = mysql_query( $query);
while( $row = mysql_fetch_object( $result)) {
$query = SELECT * FROM inventory WHERE product=' $row->product' ; $result_inv = mysql_query( $query);
$row_inventory = mysql_fetch_object( $result_inv); $contents[product][ $count] = $row_inventory->product; $contents[price][ $count] = $row_inventory->price; $contents[quantity][ $count] = $row->quantity; $contents[total][ $count] = ( $row_inventory->price * $row->quantity); $contents[description][ $count] = $row_inventory->description;
$count++; //物品数量加一(即下一个物品) } $total = $this->cart_total( $table, $session); $contents[final] = $total;
return $contents;
} function num_items( $table, $session) {
$query = SELECT * FROM $table WHERE session=' $session' ; $result = mysql_query( $query); $num_rows = mysql_num_rows( $result); return $num_rows;
} function quant_items( $table, $session) {
$quant = 0;// 物品总量 $query = SELECT * FROM $table WHERE session=' $session' ; $result = mysql_query( $query); while( $row = mysql_fetch_object( $result)) {
$quant += $row->quantity; //该物品数量加到总量里去 } return $quant; //返回总量 } } ?>
本文转载自:http://www.sknys.cn/plus/search.php?kwtype=0&keyword=PHP+��ȫ&searchtype=titlekeyword
php采用数据库保存session
php保存session 默认的是采用的文件的方式来保存的,这仅仅在文件的空间开销很小的windows上是可以采用的,但是如果我们采用uinx或者是liux上的文件系统的时候,这样的文件系统的文件空间开销是很大的,然而session是要时时刻刻的使用的,大量的用户酒药创建很多的session文件,这样对整个的服务器带来性能问题,另一方面,如果服务器起采用群集的方式的话就不能保持session的一致性,所以我们就绪要采用数据库的方式来保存session,这样,不管有几台服务器同时使用,只要把他们的session保存在一台数据库服务器上就可以保存session的完整了,具体如何来实现请继续看下去。
- php的session默认的情况下是采用的文件方式来保存的,我们在php的配制文件php.ini中可以看到这样的一行,session.save_handler="files",这样的意思就是采用文件来保存session 的,要采用数据库来保存的话,我们需要修改成拥护模式,改称 session.save_handler="use"就可以了,但是,这仅仅是说明我门没有采用文件的方式存储session,我们还要选择数据库和建立数据库的表。
- 建立数据库和数据库的表结构,我们可以采用php可以使用的任何的数据库,因为php和mysql的结合最好,我就使用mysql来做事例,当然根据你的需要可以改称别的数据库,同时因为mysql没有事物的功能,这也比别的数据库更快,然而保存 session 书、一 不许要事物处理的,再者里我决的更好。
- 创建数据库 , CREATE DATABASE 'session'; 创建表结构 CREATE TABLE 'session'( id CHAR(30) NOT NULL , 'user 'CHAR(30), data CHAR(3000) ,PARMIRY BY ('id') );
编写php文件
<?php
$con =mysql_connection("127.0.0.1","user" , "pass"); mysql_select_db("session"); function open($save_path, $session_name) { return(true); }
function close() { return(true); }
function read($id) { if($result = mysql_query("SELECT * FROM session WHERE id='$id'")) { if($row = mysql_felth_row($result )) { return $row["data"]; } } else { return ""; } }
function write($id, $sess_data) { if($result = mysql_query("UPDATE session SET data='$sess_data' WHERE id='$id'")) { return true; } else { return false; }
}
function destroy($id) { if($result = mysql_query("DELETE * FROM session WHERE id='$id'")) { return true; } else { return false; }
}
function gc($maxlifetime) { return true; }
session_set_save_handler("open", "close", "read", "write", "destroy", "gc");
session_start();
// proceed to use sessions normally
?>保存成为session_user_start.php。
现在我们的工作就已经完成了,只要你在需要在使用session的时候,把session_user_start.php。包含进来,注意,这个文件一定要在文件的第一行包含,然后就想使用文件的session一样的方法使用旧可以了。
本文写的仓促,如果有不对的地方请你提出宝贵的意见。欢迎你的斧正。
php购物车类
<?php //购物车类 //支持自定义列名及列数 // 作者:天地小子 twt326@163.com //转载或修改请保留原版权,谢谢 class twt_Cart { //类属性************************************************************* var $sp_count;//商品类数 var $sp_sumgold;//商品总金额 var $fields;//自定义列 var $f_num;//自定义列数 var $f_key;//作为判断商品是否重复的关键字 var $f_goldkey;//商品金额字段名 用于商品统计信息计算时用 var $f_numkey;//商品数量字段名 用于商品统计信息计算时用
var $cart;
//构造函数 function twt_Cart() { //从SESSION中读出一些必须参数 session_start(); if (! session_is_registered("mycart")) session_register("mycart"); $mycart=$_SESSION["mycart"]; $this->sp_count=count($mycart); if (! session_is_registered("mc_fields")) session_register("mc_fields"); $this->fields=$_SESSION["mc_fields"]; $this->f_num=count($this->fields)-1; if (! session_is_registered("mc_key")) session_register("mc_key"); $this->f_key=$_SESSION["mc_key"]; if (! session_is_registered("mc_goldkey")) session_register("mc_goldkey"); $this->f_goldkey=$_SESSION["mc_goldkey"]; if (! session_is_registered("mc_numkey")) session_register("mc_numkey"); $this->f_numkey=$_SESSION["mc_numkey"]; $this->cart=$mycart; $this->updatecart(); }
//类方法*************************************************************** //更新总金额 function updatecart() { session_start(); if (! session_is_registered("mycart")) return false; $mycart=$_SESSION["mycart"]; $tmp=0; for ($i=0;$i<$this->sp_count;$i++) $tmp+=$mycart[$i][$this->f_goldkey]*$mycart[$i][$this->f_numkey]; $this->sp_sumgold=$tmp; } //设置自定义字段及初始化类 数组参数,以0开头 function setfield($tfield) { if (is_array($tfield)) { $this->fields=$tfield; //初始化一些值 $this->f_num=count($tfield)-1; $this->f_key=$tfield[0]; $this->f_goldkey=$tfield[0]; $this->f_numkey=$tfield[0]; session_start(); $_SESSION["mc_fields"]=$tfield; $_SESSION["mc_key"]=$tfield[0]; $_SESSION["mc_goldkey"]=$tfield[0]; $_SESSION["mc_numkey"]=$tfield[0]; } else return "参数传输错误,请传入从0开始下标的数组!"; }//setfield end
//设置关键字 function setkey($key,$numkey,$goldkey) { $this->f_key=$key; $this->f_goldkey=$goldkey; $this->f_numkey=$numkey; session_start(); $_SESSION["mc_key"]=$key; $_SESSION["mc_goldkey"]=$goldkey; $_SESSION["mc_numkey"]=$numkey; }
//清除购物篮 function clear() { $mycart=$_SESSION["mycart"]; unset ($mycart); $_SESSION["mycart"]=$mycart; session_unregister("mycart"); session_unregister("mc_fields"); session_unregister("mc_key"); session_unregister("mc_goldkey"); session_unregister("mc_numkey"); $this->cart=$mycart; $this->sp_count=0; $this->sp_sumgold=0; }
//功能方法///////////////////////////////////////////////////////// //添加商品 数组参数,以自定义的字段名这下标 function addone($splist) { if ((! is_array($splist)) || ((count($splist)-1) != $this->f_num)) return "参数传输错误,请传入以自定义字段名为下标且元数个数吻合的数组!"; session_start(); $mycart=$_SESSION["mycart"]; //判断商品是否已经存在,如果存在,则加上 $tflag=true; for ($i=0;$i<$this->sp_count;$i++) { if ($mycart[$i][$this->f_key]==$splist[$this->f_key]) { $tflag=false; //增加商品个数 $mycart[$i][$this->f_numkey]+=$splist[$this->f_numkey]; $i=$this->sp_count; } } //添加商品到列表中 if ($tflag) { for ($i=0;$i<=$this->f_num;$i++) { $mycart[$this->sp_count][$this->fields[$i]]=$splist[$this->fields[$i]]; } $this->sp_count+=1; } $this->cart=$mycart; $_SESSION["mycart"]=$mycart; $this->updatecart(); }//add end
//删除一个商品 function delone($id) { session_start(); $mycart = $_SESSION["mycart"] ; for ($i=$id;$i<$this->sp_count-1;$i++) { for ($j=0;$j<=$this->f_num;$j++) $mycart[$i][$this->fields[$j]]=$mycart[$i+1][$this->fields[$j]]; } unset( $mycart[$this->sp_count-1] ) ; $this->sp_count-=1; $_SESSION["mycart"] = $mycart ; $this->cart=$mycart; $this->updatecart(); }//del end
//修改一件商品的数量 function modifyone($id,$num) { session_start(); $mycart = $_SESSION["mycart"] ; if (! empty($mycart[$id][$this->f_key])) $mycart[$id][$this->f_numkey]=$num; $this->cart=$mycart; $_SESSION["mycart"]=$mycart; $this->updatecart(); }
//修改一件商品的单价 function modifyprice($id,$num) { session_start(); $mycart = $_SESSION["mycart"] ; if (! empty($mycart[$id][$this->f_key])) $mycart[$id][$this->f_goldkey]=$num; $this->cart=$mycart; $_SESSION["mycart"]=$mycart; $this->updatecart(); }//modifyprice end
//某件商品加1 function add1($id) { session_start(); $mycart = $_SESSION["mycart"] ; $mycart[$id][$this->f_numkey]+=1; $this->cart=$mycart; $_SESSION["mycart"]=$mycart; $this->updatecart(); }
//某件商品减1 function del1($id) { session_start(); $mycart = $_SESSION["mycart"] ; $mycart[$id][$this->f_numkey]-=1; $this->cart=$mycart; $_SESSION["mycart"]=$mycart; $this->updatecart(); }
}//class end ?> 下面是类的用法实例页面: <?php session_start(); include ("admin/config/twt_Cart.CLASS.php"); include ("admin/config/config.php"); include ("admin/config/function.php"); ?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>我的购物车</title> </head> <style> table { border: 0.5px solid; } .tbbb { border: 0.5px solid #FFCCFF; } </style> <script language="javascript"> <!-- //函数名:fucCheckNUM //功能介绍:检查是否为大于0数字 //参数说明:要检查的数字 //返回值:1为是数字,0为不是数字 function fucCheckNUM(NUM) { var i,j,k,strTemp; strTemp="0123456789."; if ( NUM.length== 0) return false; for (i=0;i<NUM.length;i++) { j=strTemp.indexOf(NUM.charAt(i)); if (j==-1) { //说明有字符不是数字 return false; } } //检查小数点的个数 k=0; strTemp="."; for (i=0;i<NUM.length;i++) { j=strTemp.indexOf(NUM.charAt(i)); if (j != -1) { //是小数点 k+=1; } if (k>0) return false; } if (NUM<=0) return false; //说明是数字 return true; }
function checknum(num) { if (! fucCheckNUM(num)) { document.frmspin.f_num.value=1; alert("请输入大于0的下整数!"); return false; } } function modifyid(id) { document.frmsplist.action="mycart.php?action=modify&id="+id; document.frmsplist.submit(); } //--> </script> <body> <? $thiscart=new twt_Cart; $field[0]="id"; $field[1]="name"; $field[2]="num"; $field[3]="gold"; $thiscart->setfield($field); $thiscart->setkey("id","num","gold"); if ($_GET[action]=="incart") { $tlist["id"]=$_POST[f_id]; $tlist["name"]=$_POST[f_name]; $tlist["num"]=$_POST[f_num]; $tlist["gold"]=$_POST[f_gold]; $thiscart->addone($tlist); } if ($_GET[action]=="del") { $thiscart->delone($_GET[id]); } if ($_GET[action]=="modify") { $thiscart->modifyone($_GET[id],$_POST["t_num_$_GET[id]"]); } if ($_GET[action]=="clear") { $thiscart->clear(); } if ($_GET[action]=="add1") { $thiscart->add1($_GET[id]); } if ($_GET[action]=="del1") { $thiscart->del1($_GET[id]); } if($_GET[action]=='indb') { if ($thiscart->sp_count==0) { $tmpstr="alert(\"没有定购任何商品!\"); window.close();"; echo getjavascript($tmpstr); } else { $sql[0]="delete from dglist where dgl_bjid=$_SESSION[wb_bjid]"; $sql[1]="delete from dinggou where dg_uid=$_SESSION[wb_id] and dg_jid=$_SESSION[wb_bjid]"; exesql($conf_db,$sql,$db,"清空旧的商品列表出错!","echo",true,"res"); //插入定购表 $sql="insert into dinggou set dg_uid=$_SESSION[wb_id],dg_jid=$_SESSION[wb_bjid]"; exesql($conf_db,$sql,$db,"提交定单出错!","echo",true,"res"); //插入商品 $sql=array(); for ($i=0;$i<$thiscart->sp_count;$i++) { $sql[$i]="insert into dglist set dgl_bjid=$_SESSION[wb_bjid],dgl_pid=".$thiscart->cart[$i]["id"].",dgl_num=".$thiscart->cart[$i]["num"]; // echo $sql[$i]; } exesql($conf_db,$sql,$db,"提交商品订单出错!","popup",true,"res"); $thiscart->clear(); $tmpstr="alert(\"操作完成,购物车已经被清空!\"); window.open(\"http://".$_SESSION[wb_sip].":5026/dg|".rawurlencode($_SESSION[wb_bjno])."| \",\"订购商品\",\"width=500 height=300 revisable=no scrollbar=yes menubar=no status=no directions=no location=no toolbar=no\"); window.close();"; echo getjavascript($tmpstr); } } ?> <div align="center"><img src="image/cart/behav_01.gif" width="20" height="14"><font color="#33CCFF">我的购物车-->商品列表</font><br> </div> <table width="503" border="1" align="center" cellpadding="0" cellspacing="1" bordercolor="#CCCCFF"> <form name="frmsplist" method="post" action="mycart.php?action=indb"> <tr> <td colspan="2"><div align="left"><a href="mycart.php?action=clear"><img src="image/cart/clear.gif" width="79" height="17" border="0"></a></div></td> <td colspan="3"><div align="center"></div> <div align="right"> <table width="91" border="1" cellpadding="0" cellspacing="3" bordercolor="#FFCCFF" bgcolor="#CCCCFF"> <tr> <td width="81" bordercolor="#FFFF00"><div align="center"> <input type="image" name="submit" src="image/cart/done.gif" border="0"> </div></td> </tr> </table> </div></td> </tr> <tr> <td width="58"><div align="center">编号</div></td> <td width="168"><div align="center">品名</div></td> <td width="53"><div align="center">数量</div></td> <td width="63"><div align="center">价格</div></td> <td width="149"><div align="center">操作</div></td> </tr> <?php for ($i=0;$i<$thiscart->sp_count;$i++) { ?><tr> <td><div align="center"><?php echo $i+1; ?></div></td> <td><div align="center"> <input type="text" name="textfield" value="<?php echo $thiscart->cart[$i]["name"]; ?>" readonly> </div></td> <td><div align="center"> <input name="t_num_<?php echo $i; ?>" type="text" id="t_num_<?php echo $i; ?>" value="<?php echo $thiscart->cart[$i]["num"]; ?>" size=7> </div></td> <td><div align="right"><?php echo $thiscart->cart[$i]["gold"]; ?></div></td> <td><div align="center"><a href="javascript:modifyid(<?php echo $i; ?>);">修改</a> <a href="mycart.php?action=add1&id=<?php echo $i; ?>">加1</a> <a href="mycart.php?action=del1&id=<?php echo $i; ?>">减1</a> <a href="mycart.php?action=del&id=<?php echo $i; ?>">删除</a> </div></td> </tr><?php } ?><tr> <td colspan="2"><div align="center"> </div></td> <td><div align="center">总额</div></td> <td colspan="2"><div align="right"><?php echo $thiscart->sp_sumgold; ?>元 </div></td> </tr> </form> </table> <table width="503" border="0" align="center" cellpadding="6" cellspacing="0"> <tr> <td><div align="right"><a href="#" target="_self"><img src="image/cart/goon.gif" width="79" height="17" border="0" usemap="#Map" onClick="javascript:window.close();"></a></div></td> </tr> </table> <div align="center"><br> <?php if ($_GET[action]=="dgsp") { ?> <img src="image/cart/behav_01.gif" width="20" height="14"><font color="#33CCFF">订购商品</font><br> </div> <table width="425" border="0" align="center" cellpadding="0" cellspacing="1" bordercolor="#FFCCFF"> <form name="frmspin" method="post" action="mycart.php?action=incart"> <tr> <td width="71"><div align="right"> <input name="f_id" type="hidden" id="f_id" value="<?php echo $_GET[cpid]; ?>"> 品名:</div></td><?php //从数据库中读出产品信息 $sql="select * from shangpin where sp_id=$_GET[cpid]"; $rst=exesql($conf_db,$sql,$db,"未找到商品!","popup","yes","rst"); ?> <td width="205"><input name="f_name" type="text" id="f_name" readonly value="<?php echo $rst[sp_name]; ?>"></td> <td width="141" rowspan="4" valign="middle"><div align="center"><img src="<?php if (empty($rst[sp_img])) echo $conf_fimgpath."defult.jpg"; else { if ($rst[sp_imgflag]==1) echo $conf_fimgpath.$_SESSION[wb_id]."/".$rst[sp_img]; else echo $conf_fimgpath.$rst[sp_img];} ?>" width="120" height="120"></div></td> </tr> <tr> <td><div align="right">价格:</div></td> <td><input name="f_gold" type="text" id="f_gold" readonly value="<?php echo $rst[sp_gold]; ?>"></td> </tr> <tr> <td><div align="right">介绍:</div></td> <td><textarea name="textarea" cols="25" rows="4" wrap="VIRTUAL"><?php echo $rst[sp_text]; ?></textarea></td> </tr> <tr> <td><div align="right">数量:</div></td> <td><input name="f_num" type="text" id="f_num2" onChange="checknum(document.frmspin.f_num.value)" value="1" size="10"></td> </tr> <tr> <td colspan="3"><div align="center"> <!--<input type="submit" name="Submit2" value="放入购物车">--> <input name="imageField" type="image" src="image/cart/buy.gif" width="79" height="17" border="0"> </div></td> </tr> </form> </table> <?php } ?> </body> </html>
购物车代码
<?php
class ModelCart extends Model {
function __construct($query=null) { parent::__construct($query); session_start(); }
function add($productInfo) { $product = new ModelProduct(); $productItem = $product->getInfo($productInfo['id']); $info = array( 'id' => $productInfo['id'], 'product_name' => $productInfo['product_name'], 'attribute' => $productInfo['attribute'], 'price' => $productInfo['price'], 'sn' => $productItem['sn'], 'photoUrl' => CFG_URL . 'data/product/'.$productItem['photo'], 'number' => 1, ); $_SESSION['cartInfo'][$productInfo['id'].'_'.$productInfo['attribute']] = $info; }
function changeNumber($id,$number) { $_SESSION['cartInfo'][$id]['number'] = $number; } static function count() { session_start(); return count($_SESSION['cartInfo']); }
function getAll() { $items = $_SESSION['cartInfo']; $result = array(); foreach ($items as $key => $item) { $attrs = explode('||',$item['attribute']); foreach ($attrs as $attr) { $i = explode('=',$attr); $n = explode(',',$i[1]); $item[$i[0]] = $n[1]; $item[$i[0].'_id'] = $n[0]; } $item['prices'] = $item['price']*$item['number']; $item['cart_id'] = urlencode($item['id'].'_'.$item['attribute']); $result[] = $item; } return $result; } function getCount() { $items = $this->getAll(); $count = 0; foreach ($items as $key => $item) { $count += $item['prices']; } return $count;
} function clear() { $_SESSION['cartInfo'] = array(); }
function delete($id) { unset($_SESSION['cartInfo'][$id]); }
} ?>
http://www.corange.cn/archives/2008/10/2054.html
购物车思路分析
如果看了我这个代码还不会购物车,那我就要去自杀了~ ! 购物车主要是利用 session 传值和动态数组来实现的 为了描述方便,我在这里做一些设置,物品显示页面为 wupin.php , 购物车页面为: gwc.php, 物品以 ID 控制,现在有两个物品, ID 分别为 1 和 2 物品页面显示物品,物品下面有个链接 “ 添加到购物车 ” ,点这个链接可以把这个物品添加到购物车,这个链接实际上是个超级链接,并给 gwc.php 传递一个参数,这个参数就是物品的 ID ,这里我们这样写 :<a href="gwc.php?id=1"> 添加到购物车 </a>, 到这里, wupin.php 就完成了他的功能了,下面我主要讲一下 gwc.php 的购物车实现思路以及相关代码实现,吼吼,鼓掌 ~~~~~ 在购物车页面,要检测从 wupin.php 传递过来的参数是否是第一次传过来 ?如果是第一次传递过来,说明浏览者是第一次添加该物品,那么我们就把该物品的数量设置为 1 ,如果不是第一次传递过来,那么可能是浏览者觉得买一个不够,还想再买一个或者多个,那么我们就要把这个物品的数量增加一个,下面我讲一下具体实现(掌声哗哗的) 在 gwc.php 页面 , 我们首先要开始一个会话 session_start();--- 因为是用 session ,所以要开始 ~ ! $id=$_GET[‘id’]; 这个用来得到传递过来的 id 。 首先,如果用户没有添加物品到购物车,那么这个购物车是空的,我们需要创建一个购物车,代码如下所示 If(!isset($_SESSION[‘cart’])) { $_SESSION[‘cart’]=array();//这个就是添加物品的动态数组 $_SESSION[‘items’]=0;// 这个是每个物品的数量 $_SESSION[‘total_price’]=’0.00’;// 每个物品的数量乘以单价以后的总价 } 其次,建立一个购物车后,可以将物品添加到购物车内: If(isset($_SESSION[‘cart’][$id]))
$_SESSION[‘cart’][$id]++; else
$_SESSION[‘cart’][$id]=1; 这里可能对 $_SESSION[‘cart’][$id] 有点不 清楚 ~ ,我当时也没弄清楚,这个我们在前面已经定义了 $_SESSION[‘cart’]=array();$_SESSION[‘cart’] 这个是个数组,然后我们要给这个数组添加元素 [$id], 比如我添加 ID 为 1的元素,这个数组就变成了如下所示: $_SESSION[‘cart’]=array(‘1’=>1
) 如我再添加 ID为 2的元素,这个数组就变成了如下所示: $_SESSION[‘cart’]=array(‘1’=>1,
‘2’=>1
) 如果 id为 1的值再次被传递过来,由于原来我们已经添加了,所以会执行
$_SESSION[‘cart’][‘1’]++;结果就变成 $_SESSION[‘cart’][‘1’]=2 到这里,其实购物车的核心已经基本实现了,下面我们要计算物品总价格,不要小看这个,这个也是相对比较难以实现的。 $price=0.00//初始化价格为 0 ,虽然 PHP不要求初始化,但是初始化是个比较好的习惯 foreach( $_SESSION['cart'] as $id=>$qty) { $query=”select price from wupin where id=’$id’”; $result=$db->query($query) if($result) { $item=$result->fetch_object(); $item_price=$item->price; $price+=$price*$qty; } return $price; } 这个计算总价格的代码我们可以定义为一个函数,比如定义为 function calculate_price(), 进行调用就可以了,不调用也可以 然后要查找物品总的数量,这个函数简单 function calculate_items() Function calculate_item($cart)//$cart 是调用 $_SESSION[‘cart’]的传值 { $items=0; if (is_array($cart)) $tiems=array_sum($cart);// 这个函数是统计所有元素的值 return $items; }