仓酷云

标题: PHP网页编程之贴个购物车的类,最大的特色是只用了一... [打印本页]

作者: 谁可相欹    时间: 2015-2-4 00:22
标题: PHP网页编程之贴个购物车的类,最大的特色是只用了一...
咱们就开始学习动态语言的概念吧,刚一接触动态语言,可能很多人都会蒙了,怎么这乱七八糟的东西,在网页里显示的时候却是另外一码事?其实这并不算乱七八糟,你写的HTML代码不也一样是一堆堆的字符吗?毕竟,代码并不是作为直接输出的,而是经过处理的,说白了,HTML是经过HTML解析器,而PHP当然也就通过PHP解析器了,跟学习HTML一样的道理,想让任何的解析器完成操作,就必须使用它们专用的语法结构,所以PHP长相奇怪也就不足为奇了。session|购物车   列位可依据本人需求改一下,最大的特色是只用了一个Session,有的中央是用了之前网上的一个购物车的类改写的,我也没有好好地收拾整顿过
<?php
class cart {

  var $sortCount; //商种类类数
  var $totalCost; //商品总金额
  /* 一切的商品,如:$myCart[5][$name]:商品编号为5的称号
  *               $myCart[5][$price]:商品编号为5的单价
  *          $myCart[5][$count]:商品编号为5的数目
  *               $myCart[5][$cost]:商品编号为5的算计金额
  */
  var $myCart    ;  
  var $Id;        //每类商品的ID(数组)
  var $Name;        //每类商品的称号(数组)
  var $Price;        //每类商品的价钱(数组)
  var $Count;        //每类商品的件数(数组)
  var $Cost;        //每类商品的价值(数组)

   
  //******机关函数
  function cart(){
    $this->sortCount = 0    ;
    $this->totalCost = 0    ;
    $this->myCart    = array()    ;
    session_start();    //初始化一个session
    if(session_is_registered("myCart")==false)    session_register('myCart');      
    $this->update();
  //  $this->Calculate();
     
  }
   
  //********公有,依据session的值更新类中响应数据
  function update(){
    session_start();    //初始化一个session
    $myCart = $_SESSION["myCart"]        ;
    if(false==$myCart)
    {
        $this->sortCount = 0    ;
        $this->totalCost = 0    ;
        $this->myCart = array()    ;
        return false;
    }
    //失掉商品的总数目
    $this->sortCount=count($myCart);
    if($this->sortCount>0)
    {
        //入手下手盘算商品的金额
        $totalCost = 0    ;
        foreach($myCart as $key=>$val)
        {
            //先四舍五入
            foreach($val as $proName=>$proVal)
            {
                if($proName !="name")
                {
                    $val[$proName] = round(eregi_replace(",", "",$proVal),2)    ;
                    $myCart[$key][$proName] = $val[$proName]    ;
                }
            }
               
            //盘算每件商品的金额
            $myCart[$key]["cost"] = round($val["count"]*$val["price"], 2)    ;
            //失掉一切商品的金额
            $totalCost += $myCart[$key]["cost"]    ;            
        }
        $this->totalCost = $totalCost    ;
        $this->myCart = $myCart            ;
        $_SESSION["myCart"] = $myCart    ;

    }
     
  }
   
/**
* 格局化数字为泉币数据
*
*
**/
  function formatNum($data)
  {
    foreach($data as $key=>$val)
    {
        foreach($val as $sName=>$sValue)
        {
            if($sName !="name")
            {   
                $data[$key][$sName] = number_format($sValue, 2)    ;
            }
        }
    }
    return $data    ;

  }
//**************以下为接口函数
   
//*** 加一件商品
// 判别是不是蓝中已有,若有,加count,不然加一个新商品
//起首都是改session的值,然后再挪用update() and calculate()来更新成员变量
  function addOne($id,$na,$pr)
  {
    session_start();    //初始化一个session
    $myCart = $_SESSION["myCart"]        ;
    //设置购物车中的数目
    $myCart[$id]["name"]  = $na    ;
    $myCart[$id]["price"] = $pr    ;
    ++$myCart[$id]["count"]    ;
    $_SESSION["myCart"] = $myCart    ;
    //更新一下类的成员数据
    $this->update();   

  }
/**
* 向购物车中添加一组商品,假如没有,停止添加,假如已存在,则更新为data
* @param $data  - 要添加的商品,格局为:
*                 $data[0][id],   $data[0][name],
*                 $data[0][price],$data[0][count]
* @return boolean
*/
function addData($data)
{
    if(count($data > 0))  
    {
        session_start();    //初始化一个session
        $myCart = $_SESSION["myCart"]        ;
        foreach($data as $val)
        {
            extract($val)    ;
            //设置购物车中的数目
            $myCart[$id]["name"]  = $name    ;
            $myCart[$id]["price"] = $price    ;
            $myCart[$id]["count"] = $count    ;
        }
        $_SESSION["myCart"] = $myCart    ;
        //更新一下类的成员数据
        $this->update();      
    }
}
/*
* 更改一件商品的单价
*
*
*
**/
function updatePrice($id, $price)
{
    if($price <=0)    return false    ;
    session_start();    //初始化一个session
    $myCart = $_SESSION["myCart"]        ;
    if($myCart[$id]==true)
    {
        $myCart[$id]["price"]=$price;

           $_SESSION["myCart"] = $myCart    ;
        $this->update();
    }
}
//将一件商品的数目减1
  function removeOne($id)
  {
      $count = $this->myCart[$id]["count"]    ;
      if($count>0)
      {
          $this->modifyCount($id, --$count)    ;
      }
   
  }
   
  //改动商品的个数,假如传入单价,则一同更改单价
  function modifyCount($id, $ncount, $price=0)
  {
    if($ncount <= 0) return false    ;
    session_start();    //初始化一个session
    $myCart = $_SESSION["myCart"]        ;
    if($myCart[$id]==true)
    {
        $myCart[$id]["count"]=$ncount;
        //假如有传入单价,则一同更改单价
        if($price >0 ) $myCart[$id]["price"]=$price;

           $_SESSION["myCart"] = $myCart    ;
        $this->update();
    }
   
  }
   
  //清空一种商品
  function emptyOne($i)
  {
    session_start();    //初始化一个session
    $myCart = $_SESSION["myCart"]        ;
    unset($myCart[$i])    ;
    if(count($myCart)==0)
    {
        $this->emptyAll()    ;
    }else{
        $_SESSION["myCart"] = $myCart        ;   
        $this->update();
    }
  }
   
   
  /***************************
  清空一切的商品
   
  由于在win里PHP不撑持session_destroy()函数,所以这个清空函数不完美,
  只是把每种商品的个数置为0。
  假如是在linux下,可以直接用session_destroy()来做。
  *****************************/
  function emptyAll()
  {
       session_start();    //初始化一个session
    $myCart = $_SESSION["myCart"]        ;
   
    unset($myCart)    ;
    $_SESSION["myCart"] = $myCart        ;   
    $this->update();
     
  }
   
  /**
  *  前往一切购物车中的数据
  *
  **/
  function getData()
  {
      if($this->sortCount > 0)
      {
          return $this->myCart    ;
      }else{
          return array()    ;
      }
  }
  //取一件商品的信息,次要的任务函数
  //前往一个联系关系数组,下标分离对应 id,name,price,count,cost
  function getOne($i){
    $data = $this->myCart[$i]        ;
    if(false==$data) return array()    ;

    $data["id"]    =    $i                ;
    return $data                        ;

  }
   
  //取总的商种类类数
  function getSortCount(){
    return $this->sortCount;
  }
   
  //取总的商品价值
  function getTotalCost(){
    return $this->totalCost;
  }
   
//end class  
}

?>   左手拿着MOTOLOLA右手拿着NOKIA,要多潇洒,有多潇洒,哈哈,终于学会了,但是可能这个时候,又会有人不经意的拍拍肩膀对你说:哥们,别高兴的太早,你还是菜鸟,离学会还差着一大截呢!
作者: 小妖女    时间: 2015-2-4 12:50
如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,
作者: 变相怪杰    时间: 2015-2-9 22:40
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
作者: 爱飞    时间: 2015-2-11 00:10
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
作者: 小魔女    时间: 2015-2-13 03:15
首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。
作者: 若天明    时间: 2015-2-19 08:26
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
作者: 再见西城    时间: 2015-3-6 14:20
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
作者: 仓酷云    时间: 2015-3-11 16:55
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
作者: 简单生活    时间: 2015-3-19 01:49
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
作者: 第二个灵魂    时间: 2015-3-26 21:49
兴趣是最好的老师,百度是最好的词典。
作者: 谁可相欹    时间: 2015-4-6 20:32
我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。
作者: 冷月葬花魂    时间: 2015-4-11 08:29
没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
作者: 蒙在股里    时间: 2015-4-11 15:11
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
作者: 兰色精灵    时间: 2015-4-19 10:16
本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。
作者: 飘飘悠悠    时间: 2015-4-21 21:19
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox  支持的不是很好,所以能少用还是少用的好。
作者: 莫相离    时间: 2015-4-30 10:53
当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,
作者: 活着的死人    时间: 2015-5-3 11:08
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
作者: admin    时间: 2015-6-4 00:36
真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,
作者: 乐观    时间: 2015-6-12 14:11
本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。
作者: 透明    时间: 2015-6-15 21:01
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
作者: 小女巫    时间: 2015-7-6 10:17
本文当是我的笔记啦,遇到的问题随时填充




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2