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