谁可相欹 发表于 2015-2-4 00:22:51

PHP网页编程之贴个购物车的类,最大的特色是只用了一...

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

var $sortCount; //商种类类数
var $totalCost; //商品总金额
/* 一切的商品,如:$myCart[$name]:商品编号为5的称号
*               $myCart[$price]:商品编号为5的单价
*          $myCart[$count]:商品编号为5的数目
*               $myCart[$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,   $data,
*               $data,$data
* @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:05

如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,

变相怪杰 发表于 2015-2-9 22:40:38

刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。

爱飞 发表于 2015-2-11 00:10:15

建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。

小魔女 发表于 2015-2-13 03:15:06

首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。

若天明 发表于 2015-2-19 08:26:05

写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。

再见西城 发表于 2015-3-6 14:20:53

开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。

仓酷云 发表于 2015-3-11 16:55:44

要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。

简单生活 发表于 2015-3-19 01:49:30

对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。

第二个灵魂 发表于 2015-3-26 21:49:54

兴趣是最好的老师,百度是最好的词典。

谁可相欹 发表于 2015-4-6 20:32:30

我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。

冷月葬花魂 发表于 2015-4-11 08:29:24

没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。

蒙在股里 发表于 2015-4-11 15:11:45

在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。

兰色精灵 发表于 2015-4-19 10:16:39

本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。

飘飘悠悠 发表于 2015-4-21 21:19:04

微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox支持的不是很好,所以能少用还是少用的好。

莫相离 发表于 2015-4-30 10:53:16

当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,

活着的死人 发表于 2015-5-3 11:08:23

你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。

admin 发表于 2015-6-4 00:36:19

真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,

乐观 发表于 2015-6-12 14:11:12

本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。

透明 发表于 2015-6-15 21:01:03

最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
页: [1] 2
查看完整版本: PHP网页编程之贴个购物车的类,最大的特色是只用了一...