PHP 简单的商城网站功能原理
首先,这是我在博客园的第一篇文章!看着一些厉害的大牛们,写的那么好的文章!真是羡慕不已。
今天就利用这次机会好好的也发挥下自己哈!希望各位可以多多指教。有不好之处记得评论哦,本人正处于学习中哈。
临近期末了,也正好给自己复习复习,回顾一下整个学期来所学的东西。
第一:要先明确一下需求。
1、用户注册登陆
2、后台分类添加
3、后台商品添加
4、前台显示分类,例如格式为:手机(3) 数量为改分类下的所有商品数量。
5、前台显示商品列表
6、商品显示分页显示,例如格式为:<Prev 1 2 3 4 5 Next> 当前页面显示在中间,自动补齐功能
7、商品详细页,有难点是:一张主图,多张小图。
8、加入购物车(有修改数量功能,删除功能)
9、结算填写收获地址,结账数据提交到数据库
10、后台订单显示页
第二:需求明确后,我们就要开始设计数据库了。在设计数据库的前提下,我们又要搞定好各个表的各种关系。
1、用户表(id,username,userpwd,ctime)由于是简单的商城网站实现,故不考虑太多的权限以及另外的功能。所以用户表较为简单。
2、根据后台的分类添加 ----分类表(字段包括:id,pid,name,csort分别代表id,父id,分类名,排序)
3、商品表(id,name,title,details,prices,ctime,category) 在关系中与分类表是多对一的关系。一个分类可以存放多个商品
4、附件表(id,name,oname,type,size,extname,ctime,goods)也可称为是图片表,一个商品对应的多个图片。
5、订单表(id,code(订单编号),total,user,ctime,st_name,st_address,st_postcode(邮编),st_mobile,st_phone)
6、订单项表(id,goods,number,subtotal,orders) --该表由于考虑到在一个订单里面可能会存在多个不同的商品。
第三:有了需求,有了数据库,有了思路。就来赶紧完成最好完成的一块了。Model模型。当然在模型中,基本上的字段都是和数据库是一样,在这我就不一一打出来了,但是我会把我觉得需要考虑以及需要注意的重点位置给写出来。
model的话,其实也就是一个数据临时存放的对象。
对于商品表的model我觉得有一点是需要记住的,就是获取第一张图片。下面是商品表的model
class Goods{
......
private $firstimg;
private $attachs=array();
下面的get,set就不一一列出来了。就列个取出第一张图片的get,set就可以了。
public function getFirstimg(){
if(count($this->attachs)>0)
{
$this->firstimg=$this->attachs[0];
}else{
$defaultimg=new Attach();
$defaultimg->setName("noimg.jpg"); //如果没有图片就给他初始个图片。
$this->firstimg=$defaultimg;
}
return $this->firstimg;
}
......
}
第二个是订单项的model,在这个model里面,主要是有个小计的功能。当你存进来的时候就要事先把小计给计算出来。
所以需要一个构造函数:
function __construct($id,$goods,$number)
{
$this->id=$id;
$this->goods=$goods;
$this->number=$number;
$this->subtotal=$goods->getPrice()*$number;
}
这样就实现了小计的功能了。
第三是订单model 在当你把所有订单项放在同个订单的时候要取出总计,故当存入订单项后就要计算出总计。
public function setOrderitems($orderitems){
$this->orderitems=$orderitems;
$total=0;
for($i=0;$i<count($this->orderitems);$i++)
{
$total+=$this->orderitems[$i]->getSubtotal();
}
$this->total=$total;
}
public function getTotal(){
$total=0;
for($i=0;$i<count($this->orderitems);$i++)
{
$total+=$this->orderitems[$i]->getSubtotal();
}
$this->total=$total;
return $this->total;
}
好了,前期功能终于做好了。剩下的就是DAO(我们所说的与数据库操作的文件_增删查改等),和程序的控制器了。
今天就到期为止了。期待下篇文章的诞生吧哈。也希望自己能够在考试之前,整体的过一遍。
下一篇我将会继续DAO的完善。
希望大家可以多多点评。学生一名,写的不好,请谅解。