ThinkPhp会员地址管理设计
jianfly.com 2019-01-31 1999次浏览
此方法依赖于会员设计
1、数据库设计
CREATE TABLE IF NOT EXISTS `qf_address` ( `id` int(11) NOT NULL AUTO_INCREMENT, `mid` int(11) NOT NULL COMMENT '用户id', `name` varchar(255) DEFAULT NULL COMMENT '收货人', `address` varchar(255) DEFAULT NULL COMMENT '地址', `tel` varchar(80) DEFAULT NULL COMMENT '联系方式', `zip` char(20) DEFAULT NULL COMMENT '邮编', `default` tinyint(1) DEFAULT '0' COMMENT '默认', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;
2、php设计
/** * 展示地址的页面 */ public function myaddress() { $this->checkLogin(); $id = $_SESSION['member']['id']; $address = M('address')->where(array('mid'=>$id))->order(' `default` desc , `id` desc ')->select(); $this->assign("address",$address); $this->display(); } /** * 修改地址的页面 */ public function caddress() { $this->checkLogin(); $id = intval($_GET['id']);//地址id //查找地址信息,验证地址是否属于当前用户 $address = M('address')->where(array('id'=>$id, 'mid'=>$_SESSION['member']['id']))->find(); if(!$address) { $this->error('系统繁忙,请稍后重试'); exit; } $this->assign('address',$address); $this->display();//使用新增地址的页面 } /** * 处理修改地址 */ public function docaddress() { $this->checkLogin(); //获取数据 $mid = $_SESSION['member']['id'];//用户id $name = htmlspecialchars($_POST['name']);//收货人 $address = htmlspecialchars($_POST['address']);//收货地址 $tel = htmlspecialchars($_POST['tel']);//联系电话 $zip = htmlspecialchars($_POST['zip']);//邮编 $default = intval($_POST['default']);//排序 $id = intval($_POST['id']);//地址id //查找地址信息,验证地址是否属于当前用户 $chk = M('address')->where(array('id'=>$id, 'mid'=>$_SESSION['member']['id']))->find(); if(!$chk) { $this->error('系统繁忙,请稍后重试'); exit; } if(empty($name)) { $this->error('收货人为空'); exit; } if(empty($address)) { $this->error('地址为空'); exit; } if(empty($tel)) { $this->error('联系电话为空'); exit; } if(empty($zip)) { $this->error('邮编为空'); exit; } if($this->doAddAddress( $id , $mid , $name , $address , $tel , $zip , $default ) ) $this->success("修改地址成功",'myaddress'); else $this->error("系统繁忙,请稍后重试"); } /** * 新增地址的页面 */ public function address() { $this->checkLogin(); $this->display(); } /** * 新增地址 */ public function addaddress() { $this->checkLogin(); //获取数据 $mid = $_SESSION['member']['id'];//用户id $name = htmlspecialchars($_POST['name']);//收货人 $address = htmlspecialchars($_POST['prov']).htmlspecialchars($_POST['city']).htmlspecialchars($_POST['area']).htmlspecialchars($_POST['address']);//收货地址 $tel = htmlspecialchars($_POST['tel']);//联系电话 $zip = htmlspecialchars($_POST['zip']);//邮编 $default = intval($_POST['default']);//默认 if(empty($name)) { $this->error('收货人为空'); exit; } if(empty($address)) { $this->error('地址为空'); exit; } if(empty($tel)) { $this->error('联系电话为空'); exit; } if(empty($zip)) { $this->error('邮编为空'); exit; } if($this->doAddAddress( null , $mid , $name , $address , $tel , $zip , $default ) ) $this->success("新增地址成功",'myaddress'); else $this->error("系统繁忙,请稍后重试"); } /** * 删除地址 * @param id 地址id * @param mid 用户id * @return data{state:"true/false", msg:'...', code:''} */ public function delAddress() { $id = intval($_POST['id']); $mid = $_SESSION['member']['id']; $data = array(); if(empty($mid)) { $data['state'] = false; $data['msg'] = '未登录'; $data['code'] = 1; $this->ajaxReturn($data); exit; } if(empty($id)) { $data['state'] = false; $data['msg'] = '未接收到地址id'; $data['code'] = 2; $this->ajaxReturn($data); exit; } $ret = M('address')->where(array('id'=>$id, 'mid'=>$mid))->delete(); if(!$ret) { $data['state'] = false; $data['msg'] = '删除失败'; $data['code'] = 3; $this->ajaxReturn($data); exit; }else { $data['state'] = true; $data['msg'] = '删除成功'; $data['code'] = 0; $this->ajaxReturn($data); exit; } } /** * 处理新增地址 * @param id * @param $mid 用户id * @param $name 收货人 * @param $address 收货地址 * @param $tel 联系方式 * @param $zip 邮编 * @param $default 默认 * @return true/false */ protected function doAddAddress( $id , $mid , $name , $address , $tel , $zip , $default) { //过滤数据 if(!empty($id)) $id = intval($id); if(!empty($mid)) $data['mid'] = intval($mid); if(!empty($name)) $data['name'] = htmlspecialchars($name); if(!empty($address)) $data['address'] = htmlspecialchars($address); if(!empty($tel)) $data['tel'] = htmlspecialchars($tel); if(!empty($zip)) $data['zip'] = htmlspecialchars($zip); $data['default'] = intval($default); //修改或插入 if(empty($id))//插入 { if(!$data['default'])//没有设默认,直接插入 $ret = M('address')->add($data); else//先把所有的改为非默认,再插入 { M('address')->where(array('mid'=>$data['mid']))->save(array('default'=>0)); $ret = M('address')->add($data); } }else {//修改 if($data['default'])//设默认,把其他的设为非默认 M('address')->where(" `mid` = '".$data['mid']."' and id != ".$id)->save(array('default'=>0)); $ret = M('address')->where(array('id'=>$id))->save($data); } return $ret; }
3、前端地址设计的js
<div data-toggle="distpicker"> <select name="prov" data-province="---- 选择省 ----"></select> <select name="city" data-city="---- 选择市 ----"></select> <select name="area" data-district="---- 选择区 ----"></select> </div> <script src="__PUBLIC__/js/distpicker.data.js"></script> <script src="__PUBLIC__/js/distpicker.js"></script>
- 上一篇:ThinkPhp购物车设计
- 下一篇:Thinkphp会员模块