<?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;$isp_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;$isp_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;$isp_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

?>

下面是类的用法实例页面:

session_start();

include ("admin/config/twt_Cart.CLASS.php");

include ("admin/config/config.php");

include ("admin/config/function.php");

?>

我的购物车

table {

border: 0.5px solid;

}

.tbbb {

border: 0.5px solid #FFCCFF;

}

$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;$isp_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);

}

}

?>

我的购物车-->商品列表
编号
品名
数量
价格
操作

for ($i=0;$isp_count;$i++)

{

?>

" readonly>

" size=7>

<?php echo $thiscart->cart[$i]["gold"]; ?>
修改 加1 减1 删除

<?php

}

?>

总额
<?php echo $thiscart->sp_sumgold; ?>元

if ($_GET[action]=="dgsp")

{

?>

订购商品

品名:

//从数据库中读出产品信息

$sql="select * from shangpin where sp_id=$_GET[cpid]";

$rst=exesql($conf_db,$sql,$db,"未找到商品!","popup","yes","rst");

?>

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

价格:
介绍:

<?php echo $rst[sp_text]; ?>

数量:

php 购物车类的属性,php购物车类相关推荐

  1. python中如何获取类的属性,python – 获取类的属性

    尝试 inspect模块. getmembers和各种测试应该是有帮助的. 编辑: 例如, class MyClass(object): a = '12' b = '34' def myfunc(se ...

  2. python类的属性包括_python类的属性有哪几种?如何访问它们?

    展开全部 属性的访2113问机制 一般情况下5261,属性访问的默认行为是从对象的字典中4102获取,并当获取不到时会1653沿着一定的查找链进行查找.例如 a.x 的查找链就是,从 a.__dict ...

  3. python识别人脸多种属性_9种人脸情绪识别、22类人脸属性、 15类皮肤质量识别,竹间智能要让情感机器人更理解人...

    撰文 | 邱陆陆 编辑 | 藤子 「我们希望做情感机器人,希望透过机器更智能地理解一个人.」随着计算能力的提升.神经网络的步步深入,配以图像识别.语音识别的人工智能已经逐渐变得能够「听见」.「看见」. ...

  4. Andriod anim scale中的属性介绍以及Animation类的属性

    ScaleAnimation是Andriod中的补间(Tween)动画中的大小缩放的动画 使用时,需要在res下新建Android Resource Directtory,并选择anim(如已存在就不 ...

  5. 类的属性、类的方法、类的内置方法

    类的属性 变量在类中称为类的属性,函数在类中称为类的方法,类的属性分为以下几种: (1) 公有属性:在类中和类外都能调用的属性,定义的时候与变量的定义一致,如 color = 'yellow' (2) ...

  6. python查看类的属性和方法_python—类的属性和方法总结

    一.类的属性总结(类的属性定义在方法外,对象的属性定义在方法内) 理解: 类的(静态)属性:(人类的五官,理解为变量) 类的(动态)方法:(人类吃穿住行,理解为一个函数,至少带一个参数self,指向类 ...

  7. 你要偷偷学Python,然后惊艳所有人(类的属性和方法)

    一.类的结构 1.1:术语--实例 1.使用面向对象开发,第一步是设计类 2.使用类名()创建对象,创建对象的动作有两步 1)在内存中为对象分配空间2)调用初始化方法__init__为对象初始化 3. ...

  8. 1023day5:class类属性方法、每次执行类属性+1、内建模块、时间装饰器wrapper、面向对象__slots__方法:限制类的属性等基础知识、正则表达式基础知识、多态鸭子类型

    文章目录 一.类class 1.Python类class 属性 方法 2.类的构造方法__init__() 3.每次执行一次类的属性+1 二.模块 1.内建模块 2.第三方模块 3.定义自己的模块 三 ...

  9. 浅谈淘宝类目属性体系:商品搜索背后的逻辑架构

    转载自:http://www.geekpark.net/news/205894 摘要 淘宝拥有百万家商户和超过10亿的商品数,它如何让用户精准地找到想要的商品呢?其背后有着强大的技术支撑. 淘宝目前在 ...

最新文章

  1. sys.stdout.write与sys.sterr.write(二)
  2. 久其软件怎么样_久其软件助力中国电信顺利完成网络攻防演练
  3. 计算机基础知识自考真题,自考《计算机应用基础》基础试题
  4. 终于知道移动比联通牛的原因了(绝对真实绝对有趣)不看后悔
  5. 大数据流通与交易技术国家工程实验室成立大会在京举行
  6. oracle表 游标,Oracle游标表达式和表函数
  7. 金蝶显示服务器异常,金蝶提示云服务器异常
  8. Installing OwnCloud 9 on Debian 8
  9. set.seed(7)什么意思
  10. 深度学习优化算法大全系列7:NAdam,算法选择,调参
  11. python操作sql_Python操作MSSQL
  12. 网络技术-Cisco路由器
  13. 身为码农,为12306说两句公道话
  14. 爬FH... ... 爽!
  15. Cisco-win10安装ezv_p_n客户端过程介绍与常见问题汇总
  16. 产品经理必须会的软件——office
  17. shell脚本掐头去尾
  18. B-样条曲线——动机 Motivation
  19. Python 于 webgame 的应用(上)
  20. Better to follow, follow to be better(2019 ICCV)

热门文章

  1. 快餐店的饮食营养信息
  2. 定积分及其应用知识点总结_高三数学一轮复习资料:定积分及其应用举例
  3. SSH 协议的 ssh StrictHostKeyChecking
  4. hdu 2674(N!Again)
  5. 【收藏】羊皮卷(之九)
  6. 好家伙!程序员找不到女朋友的原因
  7. 使用git checkout -b origin/命令报错is not a commit and a branch ‘dev_86984_newn‘ cannot be created from it
  8. 单元测试框架——Junit5
  9. 02: DNS服务基础 特殊解析 DNS子域授权 缓存DNS 总结和答疑
  10. web前端期末大作业 基于HTML+CSS+JavaScript绿色的在线教育平台网站响应式企业网站模板