多条件查询和分页
三个条件查询,两个下拉菜单,一个输入的。怎么根据三个条件来查询结果,并且分页的时候,还要带上查询条件。PHP+smary实现...
三个条件查询,两个下拉菜单,一个输入的。
怎么根据三个条件来查询结果,并且分页的时候,还要带上查询条件。
PHP+smary实现 展开
怎么根据三个条件来查询结果,并且分页的时候,还要带上查询条件。
PHP+smary实现 展开
4个回答
展开全部
//分页函数
//定义函数pageft(),三个参数的含义为:
//$totle:信息总数;
//$displaypg:每页显示信息数,这里设置为默认是20;
//$url:分页导航中的链接,除了加入不同的查询信息“page”外的部分都与这个URL相同。
// 默认值本该设为本页URL(即$_SERVER["REQUEST_URI"]),但设置默认值的右边只能为常量,所以该默认值设为空字符串,在函数内部再设置为本页URL。
function pageft($totle, $displaypg = 20, $url = '', $shownum = 1, $showtext = 1, $showselect = 0, $showlvtao = 7) {
if(empty($totle)){
return false;
}
$page = isset($_GET['page'])?intval($_GET['page']):1;
$url.='/page/';
//页码计算:
$lastpg = ceil($totle / $displaypg); //最后页,也是总页数
$page = min($lastpg, $page);
$prepg = $page -1; //上一页
$nextpg = ($page == $lastpg ? 0 : $page +1); //下一页
$firstcount = ($page -1) * $displaypg;
//开始分页导航条代码:
if ($showtext == 1) {
$pagenav = '<div class="results"><span>第 ' . ($totle ? ($firstcount +1) : 0) . '-' . min($firstcount + $displaypg, $totle) . ' 条 共 '.$totle.'</span></div><div><ul class="pager">';
} else {
$pagenav = "";
}
//如果只有一页则跳出函数:
//if ($lastpg <= 1)
//return false;
if ($prepg)
$pagenav .= '<li><a href="'.$url.$prepg.'">« 上一页</a></li>';
else
$pagenav .= '<li class="disabled">« 上一页</li>';
if ($shownum == 1) {
$o = $showlvtao; //中间页码表总长度,为奇数
$u = ceil($o / 2); //根据$o计算单侧页码宽度$u
$f = $page - $u; //根据当前页$currentPage和单侧宽度$u计算出第一页的起始数字
//str_replace('{p}',,$fn)//替换格式
if ($f < 0) {
$f = 0;
} //当第一页小于0时,赋值为0
$n = $lastpg; //总页数,20页
if ($n < 1) {
$n = 1;
} //当总数小于1时,赋值为1
if ($page == 1) {
$pagenav .= '<li class="current">1</li>';
} else {
$pagenav .= '<li><a href="'.$url.'1">1</a></li>';
}
///////////////////////////////////////
for ($i = 1; $i <= $o; $i++) {
if ($n <= 1) {
break;
} //当总页数为1时
$c = $f + $i; //从第$c开始累加计算
if ($i == 1 && $c > 2) {
$pagenav .= '<li class="separator">...</li>';
}
if ($c == 1) {
continue;
}
if ($c == $n) {
break;
}
if ($c == $page) {
$pagenav .= '<li class="current">' . $page . '</li>';
} else {
$pagenav .= '<li><a href="'.$url.$c.'">'.$c.'</a></li>';
}
if ($i == $o && $c < $n -1) {
$pagenav .= '<li class="separator">...</li>';
}
if ($i > $n) {
break;
} //当总页数小于页码表长度时
}
if ($page == $n && $n != 1) {
$pagenav .= '<li class="current">' . $n . '</li>';
} else {
if ($lastpg > 1){
$pagenav .= '<li><a href="'.$url.$n.'">'.$n.'</a></li>';
}
}
}
if ($nextpg)
$pagenav .= '<li><a href="'.$url.$nextpg.'">下一页 »</a></li>';
else
$pagenav .= '<li class="disabled">下一页 »</li>';
$pagenav .= '</ul></div>';
if ($showselect == 1) {
//下拉跳转列表,循环列出所有页码:
$pagenav .= "跳至<select name='topage' size='1' onchange='window.location=\"$url\"+this.value'>\n";
for ($i = 1; $i <= $lastpg; $i++) {
if ($i == $page)
$pagenav .= "<option value='$i' selected>$i</option>\n";
else
$pagenav .= "<option value='$i'>$i</option>\n";
}
$pagenav .= "</select>页";
}
return $pagenav;
}
//数据查询页面
$page = array();
$page['url'] = U('Supervise/myefficiencybooklist',array('Status'=>$_GET['Status']));
$page['pagesize'] = 16;
$page['frmnum'] = ($pagenum-1)*$page['pagesize'];
$Efficiencybook = M('efficiencybook','app_yhcm_supervise_');
$totle = $Efficiencybook->where('uid = '.$this->_G['userid'].$where)->count();
$page['totle'] = $totle;
$this->assign('page',$page);//将分页参数复制给模版变量
{:pageft($page['totle'],$page['pagesize'],$page['url'])}
以上是我一个项目里面用到的 你适当的改下就能用了
2015-07-11 · 知道合伙人互联网行家
关注
展开全部
通用的多条件查询(带分页)的SQL语句如下:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[sp_PageQuery]
@pageSize int=20,
@SortFile varchar(50)='',
@SortType varchar(20)='asc',
@QuerySQL varchar(8000),
@PageIndex int=1,
@Total int output
AS
BEGIN
declare @SQL nvarchar(4000),@SQLTotal nvarchar(4000)
set @SQLTotal='select @Total=count(*) from ('+@QuerySQL +') as totaltable'
exec sp_executesql @SQLTotal,N'@Total int OUTPUT',@Total OUTPUT
set @SQL='SELECT TOP '+CAST(@pageSize as varchar)+' * '
+'FROM '
+'( '
+' SELECT ROW_NUMBER() OVER ('
if @SortFile<>''
set @SQL=@SQL+' ORDER BY '+@SortFile+' '+@SortType
set @SQL=@SQL +' ) as RowNO,*'
+' FROM ( '+@QuerySQL+') as DataTable'
+' ) as PageTable '
+'WHERE ROWNO>'+CAST( (@PageIndex-1)*@pageSize as nvarchar)
exec (@SQL)
END
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
额,这个好像可以在sql语句加入条件,就是 要同时满足三个条件,sql="select * form biao where name1='$name1' and name2='$name2' and name3='$name3'"这样应该可以查出来,你试试吧,我没测试过
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
连接
if($params['ss']){
$where .= " and a= '".$params['ss']."' ";
}
if($params['bb']){
$where .= " and b= '".$params['bb']."' ";
}
$sql = "select * from xx where 1 $where";
if($params['ss']){
$where .= " and a= '".$params['ss']."' ";
}
if($params['bb']){
$where .= " and b= '".$params['bb']."' ";
}
$sql = "select * from xx where 1 $where";
追问
分页的时候,参数怎么传递,我点下一页的时候搜索的条件参数也要传递出去,我是写在url,但是看起来很长,三个参数,加上page四个参数了,很长的,有木有其他办法?
追答
pagebar
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询