本文实例分析了thinkPHP交易详情查询功能。分享给大家供大家参考,具体如下:
交易详情
一般都是按月的,包含,交易日期,交易金额,交易状态(可有可无)总交易额等等。如果数据多的话,最好能够分页。最好能够查询具体的哪一个商户。
1.模拟结构化查询语言实现查询功能
选择a.id作为user_id,a.username,b.name作为store_name,c.id作为order_id,c.price,c.paytime,c.sendtime,c . receive time FROM sh _ user a LEft JOIN sh _ store b ON a . id=b . user _ id LEft JOIN sh _ ORder c ON b . id=c . store _ id WHERE a . open er _ id=1和a.`status`=1和c . status=1 ORder BY c . id desc;选择计数(b.id)作为计数,总和(c .价格)作为total _ price FROM sh _ user a LEft JOIN sh _ store b ON a . id=b . user _ id LEft JOIN sh _ order c ON b . id=c . store _ id WHERE a . open er _ id=1和a.`status`=1和c .状态=1;结构化查询语言查询出来了,基本上就搞定了,剩下的就是用php,thinkphp实现这个查询功能,加入一些逻辑与条件。
//商户交易公共函数trade(){ if($ type=$ this-_ request(' type ',' trim '){ $ s _ year=$ this-_ request(' s _ year ',' trim ');$ s _ month=$ this-_ request(' s _ month ',' trim ');$ s _ user _ id=$ this-_ request(' s _ user _ id ',' trim,int val ');$this-assign('s_user_id ',$ s _ user _ id);if($type=='last'){ //获取上一月if($ s _ month==1){ $ useYear=$ s _ year-1;$ useMonth=12 } else { $ useYear=$ s _ year $ useMonth=$ s _ month-1;} } if($type=='next'){ //获取下一月if($ s _ month==12){ $ useYear=$ s _ year 1;$ useMonth=1;} else { $ useYear=$ s _ year $ useMonth=$ s _ month 1;} } if($ type==' selectuser '){ $ useYear=$ s _ year;$ useMonth=$ s _ month} }else{ //获取当前年月$useYear=日期(' Y ');$useMonth=日期(' m ');} $this-assign('s_year ',$ useYear);$this-assign('s_month ',$ useMonth);$b_time=strtotime($useYear).'-'.$useMonth .'-'.'1');$e_time=strtotime($useYear).'-'.$useMonth .'-'.日期(' t ',strtotime($b_time)).' 23:59:59');if(isset($ s _ user _ id)$ s _ user _ id 0){ $其中[' a . id ']=$ s _ user _ id;} $其中[' a . opener _ id ']=$ this-opener _ id;$其中[' a . status ']=1;//合法的用户$其中[' c . status ']=1;//合法的订单$其中['c.paytime']=array(array('gt ',$b_time),array('lt ',$e_time),'和');$ count _ and _ total price=M()-table(' sh _ user a ')-join(' sh _ store b on a . id=b . user _ id ')-join(' sh _ order c on b . id=c . store _ id ')-where($ where)-field(' count(b . id)作为计数,总和(c .价格)作为总价')-find();$ count=$ count _ and _ total price[' count '];$总价=$ count _ and _总价['总价']?$ count _ and _总价['总价']: 0;$Page=新页面($count,10);$ list=M()-表(' sh _ user a ')-联接(' sh _ store b on a . id=b . user _ id ')-联接(' sh _ order c on b . id=c . store _ id ')-其中($ where)-顺序(' c . id desc ')-限制($ Page-第一行).','.$ Page-listRows)-字段(' a.id作为user_id,a.username,b.name作为store_name,c.id作为order_id,c.price,c.paytime,c.sendtime,c . receive time’)-select();foreach($ list as $ k=$ v){ if($ v['发送时间']==0 $ v['接收时间']==0){ $ list[$ k]['进度']=' 1 ';//已付款,待发货} if($ v['发送时间']0 $ v['接收时间']==0){ $ list[$ k]['进度']=' 2 ';//已发货,待签收} if($ v['发送时间']0 $ v['接收时间']0){ $ list[$ k]['进度']=' 3 ';//交易完成} } //获取拓展员用户$ User _ list=M(' User ')-其中(数组(' opener _ id '=$ this-opener _ id))-字段(' id,username ')-select();$this-assign('user_list ',$ user _ list);$this-assign('totalprice ',$总价);$this-assign('page ',$ Page-show());$this-assign('list ',$ list);$ this-display();}html部分
包括文件='Public:head' title='交易详情/style。top {底色: # ee高度: 50px线高: 50pxfont-size : 18px边框-底部: #ddd 1px实心;保证金-底部:-1px;}.列表-组{边框: 1px实心# DDDDDD}.列表组。列表-组-项目{ text-align : left线高: 25pxborder:无;背景-颜色: # F9f9ffont-size : 14px} # select-date { padd : 0px 10px;} #选择日期date-txt { font-size : 18px;} #总计{ width: 140px高度: 140像素;背景-color : # ec6c 00;margin: auto} #总计money-txt { color : white;衬垫-top : 10px;} # datalist { margin-top : 30px;} #如释重负。表单控件{ margin-top : 10px;边距-底部: 10px/*背景-color : # ffce 42;*/}.页面{ margin-right : 10px;边距-底部: 20px}.表th { color : # C4C 4;}.表t车身tr TD TD TD {颜色: # d 3964 f;}/style script type=' text/JavaScript ' function last month(){ todo(' last ');}函数next month(){ todo(' next ');} function SelectUser(){ todo(' SelectUser ');}函数todo(type){ var s _ year=$(' # s _ year ').val();var s_month=$('#s_month ').val();var s_user_id=$('#s_user_id ').val();窗户。位置。href=' { sh : u(' User/trade ')} s _ year=' s _ year ' s _ month=' s _ month ' s _ User _ id=' s _ User _ id ' type=' type;}/脚本正文div data-example-id=' list-group-btns ' class=' bs-example ' div id=' select-date ' ul class=' pager ' Li class=' previous ' a onclick='上月();span aria-hidden=' true ';{sh:$s_month}/strong当前名称=' paymentData ' span class=' glyphicon glyphicon-ok-sign ' aria-hidden=' true '/span/present/span输入类型='text' id='s_year '值=' { sh : $ s _ year } '隐藏='隐藏'输入类型='text' id='s_month '值=' { sh : $ s _ month } ' hidden=' hidden ' Li class=' next ' a onspan aria-hidden=' true '/span/a/Li/ul/div div id=' relief ' select id=' s _ user _ id ' on change=' SelectUser();class='表单-控件BTN-成功'选项值=' '全部商户/option volist name=' user _ list ' id=' VO ' option value=' { sh : $ VO。id } ' eq name=' VO。id ' value=' $ s _ user _ id ' selected=' selected '/eq { sh : $ VO。username }/option/volist/select/div div id=' total ' class=' img-circle ' div class=' text-center money-txt ' H3总交易金额/H3 H2 ${ sh : $总价}/H2/div/div id=' datalist ' table class=' table table-striped '和tr th商户/th日期/th交易金额/th!表示"第(几)"状态/th-/tr/t正文空名称=' list ' trtd class=' text-center ' col span=' 4 '暂无数据/TD/tr/空volist name=' list ' id=' VO ' tr TD { sh : $ VO。用户名}/TD { sh : $ VO。paytime | date=' Y-m-d h : I ',###}/td td{sh:$vo.price}/td!- td中频条件=' $ VO。进度方程1 ' span class=' text-primary '待发货/span else if条件=' $ VO。进度eq 2 '/span class=' text-danger '待签收/span else if条件=' $ VO。进步eq 3 '/span class=' text-success ' strong已完成/strong/span/if/TD-tr/volist/t body/table div class=' page text-right ' { sh : $ page }/div/div/body/html效果,多看看别人的设计,多学学,最重要的就是界面展示,一切的数据都是基于几面展示,所以先确定好需要什么数据,然后获取他们。
更多关于thinkPHP相关内容感兴趣的读者可查看本站专题: 《ThinkPHP入门教程》 、 《thinkPHP模板操作技巧总结》 、 《ThinkPHP常用方法总结》 、 《codeigniter入门教程》 、 《CI(CodeIgniter)框架进阶教程》 、 《Zend FrameWork框架入门教程》 、 《smarty模板入门基础教程》 及《PHP模板技术总结》 。
希望本文所述对大家基于ThinkPHP框架的服务器端编程语言(专业超文本预处理器的缩写)程序设计有所帮助。