燕十八-php电子商城项目,商城项目(一) - 屌丝 - OSCHINA - 中文开源技术交流社区...

燕十八公益PHP培训 课堂地址:YY频道88354001 学习社区:www.zixue.it

商城项目(一)

主要包括:

1,商品管理

商品的增加,删除,修改,查询

2,分类管理

分类的增加,删除,修改,查询

仿ThinkPHP写了一个微型框架,把常用的增加改查写到一个Model类中,商品Model和分类Model继承可以直接增删改查方法,因为这些方法都是最基本的,所以放在Model,另外对分类进行了无限级分类,自动过滤,自动完成,自动验证的功能实现。尤其是自动验证功能比较麻烦,对于我这个初学者来说稍微有点难度,还需要自己以后不断的学习。

Model代码

class Model{

protected $table=null;//表名

protected $db=null;

protected $pk=null;//主键

protected $fields=array();

protected $_auto=array();

protected $error=array();

function __construct(){

$this->db=mysql::getIns();

$this->fields=$this->getFields();

}

//直接执行sql语句

public function query($sql){

return $this->db->query($sql);

}

//增加,$data为带键值的数组

public function add($data){

$res=$this->db->autoExecute($this->table,$data);

if($res){

if($this->db->affected_rows()){

return true;

}else{

return false;

}

}else{

return false;

}

}

//删除,$id为传入的主键值

public function del($id){

$sql='delete from '.$this->table.' where '.$this->pk.'='.$id;

$res=$this->db->query($sql);

if($res){

if($this->db->affected_rows()){

return true;

}else{

return false;

}

}else{

return false;

}

}

//修改,$data为带键值的数组

public function update($data=array(),$id){

$res=$this->db->autoExecute($this->table,$data,$action='update',$where=$this->pk.'='.$id);

if($res){

if($this->db->affected_rows()){

return true;

}else{

return false;

}

}else{

return false;

}

}

//查询所有表数据

public function select(){

$sql='select * from '.$this->table;

return $this->db->getAll($sql);

}

//查询单条表记录,$id为传入的主键值

public function find($id){

$sql='select * from '.$this->table.' where '.$this->pk.'='.$id;

return $this->db->getRow($sql);

}

//获取表中字段名

public function getFields(){

$sql='desc '.$this->table;

$res=$this->query($sql);

$field=array();

while($row=mysql_fetch_row($res)){

$field[]=$row[0];

}

return $field;

}

//过滤post数组,如果post数组中的键和数组的列名没有对应的,就去掉这个键值对

public function _facade($arr=array()){

$data=array();

foreach($arr as $k=>$v){

if(in_array($k,$this->fields)){

$data[$k]=$v;

}

}

return $data;

}

//自动完成功能,表中的字段名称如果没有出现在post的键中,就用默认值自动填充

public function _autoFill($data=array()){

foreach($this->_auto as $k=>$v){

if(!array_key_exists($v[0],$data)){

switch($v[1]){

case 'value':

$data[$v[0]]=$v[2];

break;

case 'function':

$fun=$v[2];

$data[$v[0]]=$fun();

break;

}

}

}

return $data;

}

//自动验证功能,不如长度不符合,必填的没填,类型的检验

/*

array('goods_name',1,'商品名不能为空','require'),

array('cat_id',1,'类名的值只能是数字','number'),

array('is_new',0,'是否新品的值只能是1或者0','in','0,1'),

array('goods_dec',2,'描述的长度只能是10-100','length','10,100')

*/

public function __validate($data){

if(empty($this->_validate)){//没有验证条件存在时即为真

return true;

}

foreach($this->_validate as $k=>$v){

switch ($v[1]){

case 1:

if(!isset($data[$v[0]])){//如果data中的goods_name不存在,直接返回false并记录错误信息

$this->error[]=$v[2];

return false;

}

if(!$this->check($data[$v[0]],$v[3])){//传入data['goods_name']的值和requre

$this->error[]=$v[2];

return false;

}

break;

case 0:

if(isset($data[$v[0]])){

if(!$this->check($data[$v[0]],$v[3],$v[4])){//传入data['is_new']的值,in,'0,1'

$this->error[]=$v[2];

return false;

}

break;

}

case 2:

if((isset($data[$v[0]]))&&(!empty($data[$v[0]]))){

if(!$this->check($data[$v[0]],$v[3],$v[4])){//传入data['goods_dec']的值,length,'10,100'

$this->error[]=$v[2];

return false;

}

break;

}

}

}

return true;

}

public function check($value,$rule='',$parm=''){

switch ($rule){

case 'require':

return !empty($value);

case 'number':

return is_numeric($value);

case 'in':

list($a,$b)=explode(',',$parm);

return $value==$a||$value==$b;

case 'length':

list($a,$b)=explode(',',$parm);

return strlen($value)>=$a&&strlen($value)<=$b;

default:

return true;

}

}

public function getError(){

return $this->error;

}

//自动完成,自动过滤功能汇总函数

public function create($data){

$data=$this->_facade($data);

return $this->_autoFill($data);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值