本文实例讲述了ThinkPHP使用getlist方法实现数据搜索功能。分享给大家供大家参考,具体如下:
自己在ThinkPHP之中的model之中书写getlist方法,其实所谓的搜索功能无非就是数据库查询之中用到的like %string%,或者其他的 字段名=特定值,这些sql语句拼接在and语句之中;
HTML之中:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
< form action = "" method = "get" >
< table class = "account_table" width = "100%" cellpadding = "0" cellspacing = "0" >
< tr >
< td style = "text-align:right" >订单号:</ td >
< td >
< input id = "Orderid" name = "order_sn" class = "inp_wid3" type = "text" value = "{$_GET['order_sn']}" />
</ td >
< td style = "text-align:right" >
下单日期:
</ td >
< td colspan = "5" >
< input type = "text" class = "inp_wid2" id = "BeginTime" name = "begintime" value = "{$_GET['begintime']}" />
至
< input type = "text" class = "inp_wid2" id = "EndTime" name = "endtime" value = "{$_GET['endtime']}" />
交易完成日期
< input type = "text" class = "inp_wid2" id = "txtFinishedBeginTime" name = "finishbegintime" value = "{$_GET['finishbegintime']}" />
至
< input type = "text" class = "inp_wid2" id = "txtFinishedEndTime" name = "finishendtime" value = "{$_GET['finishendtime']}" />
订单金额:
< input type = "text" class = "inp_wid2" id = "txtMoneyMin" name = "count_price_min" value = "{$_GET['count_price_min']}" />
至
< input type = "text" class = "inp_wid2" id = "txtMoneyMax" name = "count_price_max" value = "{$_GET['count_price_max']}" />
</ td >
</ tr >
< tr >
< td style = "text-align:right; width:80px" >采购商名称:</ td >
< td style = "width:140px" >
< input id = "SupermarketName" name = "user_nick_name" class = "inp_wid3" type = "text" value = "{$_GET['user_nick_name']}" />
</ td >
< td style = "text-align:right; width:80px" >采购商账号:</ td >
< td style = "width:140px" >
< input id = "SupermarketZh" name = "user_name" class = "inp_wid3" type = "text" value = "{$_GET['user_name']}" />
</ td >
</ tr >
< tr >
< td colspan = "2" >
< input class = "search_btn1" type = "submit" value = "搜索" id = "Search" />
</ td >
</ tr >
</ table >
</ form >
|
看到没GET方法提交表单,这个是查询条件填入选项;
控制器之中:
1
2
|
$order_msg = $order ->getList();
$this ->assign( 'info' , $order_msg ); //这个获取订单的详细信息
|
Model之中:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
public function getList( $pagesize =25){
$tableName = $this ->getTableName();
$where = $tableName . '.service_id = ' . $_SESSION [ 'service_site' ][ 'service_id' ];
if (! empty ( $_GET [ 'order_sn' ])){ //查询订单号
$where .= " and $tableName.`order_sn` like '%" . $_GET ['order_sn ']."%' ";
}
if (! empty ( $_GET [ 'count_price_min' ])){ //查询订单最小金额
$where .= " and $tableName.count_price >=" . $_GET [ 'count_price_min' ]. "" ;
}
if (! empty ( $_GET [ 'begintime' ])){ //下单开始日期搜索
$_GET [ 'begintime' ]= strtotime ( $_GET [ 'begintime' ]); //将日期转为时间戳
$where .= " and $tableName.add_time >=" . $_GET [ 'begintime' ]. "" ;
$_GET [ 'begintime' ]= date ( 'Y-m-d' , $_GET [ 'begintime' ]); //将日期转为时间戳
}
if (! empty ( $_GET [ 'endtime' ])){ //下单结束日期搜索
$_GET [ 'endtime' ]= strtotime ( $_GET [ 'endtime' ]); //将日期转为时间戳
$where .= " and $tableName.add_time <=" . $_GET [ 'endtime' ]. "" ;
$_GET [ 'endtime' ]= date ( 'Y-m-d' , $_GET [ 'endtime' ]); //将时间戳转换成日期,方便刷新页面后前台显示
}
if (! empty ( $_GET [ 'finishbegintime' ])){ //交易完成开始日期搜索
$_GET [ 'finishbegintime' ]= strtotime ( $_GET [ 'finishbegintime' ]); //将日期转为时间戳
$where .= " and $tableName.ok_time >=" . $_GET [ 'finishbegintime' ]. "" ;
$_GET [ 'finishbegintime' ]= date ( 'Y-m-d' , $_GET [ 'finishbegintime' ]); //将日期转为时间戳
}
if (! empty ( $_GET [ 'finishendtime' ])){ //交易完成结束日期搜索
$_GET [ 'finishendtime' ]= strtotime ( $_GET [ 'finishendtime' ]); //将日期转为时间戳
$where .= " and $tableName.ok_time <=" . $_GET [ 'finishendtime' ]. "" ;
$_GET [ 'finishendtime' ]= date ( 'Y-m-d' , $_GET [ 'finishendtime' ]); //将时间戳转换成日期,方便刷新页面后前台显示
}
if (! empty ( $_GET [ 'send' ])){ //查询已发货预警订单,发货时间距离此刻超过五天
$where .= " and $tableName.send_time < '" .(time()-60*60*24*5). "'" ;
}
if (! empty ( $_GET [ 'doingorder' ])){ //查询处理中的订单
$where .= " and $tableName.status in (0,1)" ;
}
if (! empty ( $_GET [ 'warningorder' ])){ //查询预警的订单:已经付款且时间超过24小时未发货
$where .= " and $tableName.pay_time < '" .(time()-60*60*24). "'" ;
}
if (! empty ( $_GET [ 'warningorder' ])){ //查询预警的订单:已经付款且时间超过24小时未发货
$where .= " and $tableName.is_pay = 1 " ;
}
if (! empty ( $_GET [ 'warningorder' ])){ //查询预警的订单:已经付款且时间超过24小时未发货
$where .= " and $tableName.status in (0,1)" ;
}
if (! empty ( $_GET [ 'count_price_max' ])){ //查询订单最大金额
$where .= " and $tableName.count_price <=" . $_GET [ 'count_price_max' ]. "" ;
}
if (! empty ( $_GET [ 'user_nick_name' ])){ //查询采购商名称
$where .= " and fab_user.nick_name like '" . $_GET ['user_nick_name ']."%' ";
}
if (! empty ( $_GET [ 'user_name' ])){ //查询采购商账号
$where .= " and fab_user.user_name like '" . $_GET ['user_name ']."%' ";
}
if (! empty ( $_GET [ 'supplier_nick_name' ])){ //查询供应商商名称
$where .= " and fab_supplier.nick_name like '" . $_GET ['supplier_nick_name ']."%' ";
}
if (! empty ( $_GET [ 'supplier_name' ])){ //查询供应商账号
$where .= " and fab_supplier.supplier_name like '" . $_GET ['supplier_name ']."%' ";
}
if ( $_GET [ 'history' ] == 1){
$where .= " and {$tableName}.status in (2,3,4) " ;
}
if (( $_GET [ 'pay_type' ])!= "" &&( $_GET [ 'pay_type' ])!=-1){ //查询支付方式
$where .= " and fab_order_info.pay_type = " . $_GET [ 'pay_type' ]. "" ;
}
if (( $_GET [ 'status' ])!= "" &&( $_GET [ 'status' ])!=-1){ //查询订单状态
$where .= " and fab_order_info.status = " . $_GET [ 'status' ]. "" ;
}
if (! empty ( $_GET [ 'stime' ]) && ! empty ( $_GET [ 'etime' ])){
$stime = strtotime ( $_GET [ 'stime' ]);
$etime = strtotime ( $_GET [ 'etime' ]) + 24*60*60;
$where .= " and ($tableName.`inputtime` between '$stime' and '$etime')" ;
}
$count = $this ->where( $where )-> count ();
$this ->countNum = $count ;
$Page = new \Think\Page( $count , $pagesize );
$this ->page = $Page ->show();
$limit = $Page ->firstRow. ',' . $Page ->listRows;
$sql ="select $tableName .*,fab_supplier.nick_name as supplier_nick_name,fab_user.nick_name as user_nick_name
from ( $tableName left join fab_supplier on fab_order_info.supplier_id=fab_supplier.supplier_id)
left join fab_user on fab_order_info.user_id=fab_user.user_id where $where order by $tableName .`order_id` desc limit $limit ";
$sqls ="select sum(fab_order_info.count_price) as order_price, count (fab_order_info.count_price) as order_count
from $tableName where $where order by $tableName .`order_id` desc limit $limit ";
$this ->sql_msg= $this ->query( $sqls );
return $this ->query( $sql ); //订单详细信息
}
|
你只需要留意那个GET数据获取,然后进行拼接SQL语句;你为何总是拼接错误呢!!!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<?php
namespace Admin\Model;
use Think\Model;
class KuaidicompanyModel extends Model {
private $page = "" ;
public function getList( $pagesize =25){
$where = '1' ;
$tableName = $this ->getTableName();
$count = $this ->where( $where )-> count ();
$Page = new \Think\Page( $count , $pagesize );
$this ->page = $Page ->show();
$limit = $Page ->firstRow. ',' . $Page ->listRows;
return $this ->query( "select * from $tableName where $where order by $tableName.`id` asc limit $limit " );
}
public function getPage(){
return $this ->page;
}
}
|
精简通用版getlist,实用于分页。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<?php
namespace Admin\Model;
use Think\Model;
class KuaidicompanyModel extends Model {
private $page = "" ;
public function getList( $pagesize =25){
$where = '1' ;
$tableName = $this ->getTableName();
$count = $this ->where( $where )-> count ();
$Page = new \Think\Page( $count , $pagesize );
$this ->page = $Page ->show();
$limit = $Page ->firstRow. ',' . $Page ->listRows;
return $this ->query( "select * from $tableName where $where order by $tableName.`id` asc limit $limit " );
}
public function getPage(){
return $this ->page;
}
}
|
精简版MODEL用于数据自动验证
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。