统计和分页查询都加上相同条件就行了:
创新互联专业为企业提供漳县网站建设、漳县做网站、漳县网站设计、漳县网站制作等企业网站建设、网页设计与制作、漳县企业网站模板建站服务,十载漳县做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
$count = M('')-where('条件')-count();
$list= M('')-where('条件')-limit(分页)-select();
附上tp手册的条件查询分页方式:
你这程序做得真不错,但是还是乱啊,我测试都没办法测试。提出个问题: $sel=$_POST['select'];
$sel2=$_POST['select2'];
你这样接收了两个变量,你这两个变量在每次刷新页数输出查询结果时,到底如何传递的 ?我发现你根本没有传递这两个变量;你测试下: $sel=$_POST['select'];
$sel2=$_POST['select2'];echo 'br/$sel'.$sel.'br/';echo '$sel2'.$sel2.'br/'; 建议:一开始使用post,已经输入后使用get,该select与select2通过html传输。再则,你的查询条件:年代,类别。(我不知道这两个是不是查询条件,看不出来。。。。)是如何输入的?等你说明下你到底想实现什么样的功能再贴上来吧哥哥。。。。。我帮你改了下,不知道能不能运行,自己测试下吧: ?php
include("conn.php");
if(isset($_POST['select']))//这里修改下
$sel=$_POST['select'];//这里修改下
else//这里修改下
$sel = $_GET['select'];//这里修改下
if(isset($_POST['select2']))//这里修改下
$sel2=$_POST['select2'];//这里修改下
else//这里修改下
$sel2 = $_GET['select2'];//这里修改下
if($sel=='' and $sel2=='')//这里修改下
$sql="select * from test";//这里修改下
elseif($sel!='' and $sel2=='')//这里修改下
$sql="select * from test where leibie like '%$sel%'";
elseif($sel=='' and $sel2!='')//这里修改下
$sql="select * from test where niandai like '%$sel2%'";
else
$sql="select * from test where leibie like '%$sel%' and niandai like '%$sel2%' ";
$result=mysql_query($sql);
$total=mysql_num_rows($result);
include("pageft.php");
pageft($total,10);
$info=mysql_query("$sql limit $firstcount,$displaypg");
if(!$info)
echo 'font size=6 color=red p align="center"没有您所要查找的内容,请重新查找!/p/font';
? table width="655" height="40" border="0" align="center"
tr
td width="680" align="right"span class="STYLE5 STYLE7"?php if($info) echo $pagenav;?
/span/td
/tr
/table
table width="847" height="48" border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#000000"
tr
td width="86" align="center"span class="STYLE1 STYLE8"名称/span/td
td width="85" align="center"span class="STYLE1 STYLE9"年代/span/td
td width="83" align="center"span class="STYLE1 STYLE8"类别/span/td
td width="495" align="center"span class="STYLE1 STYLE13 STYLE11"文物简介/span/td
td width="86" align="center"span class="STYLE1 STYLE11 STYLE13"图片/span/td
/tr
/table
?php
if($info)
while($row=mysql_fetch_array($info)){
$m=$m+1;
?
table width="844" height="51" border="1" align="center" cellspacing="0"
tr
td width="86" align="center"?php echo $m,"-",$row[name_db];?/td
td width="83" align="center"?php echo $row[niandai];?/td
td width="81" align="center"?php echo $row[leibie];?/td
td width="502" align="left"?php echo $row[remark];?/td
td width="80" align="center"a href="../images/?php echo $row[image_db];? "target="_blank"img src="../images/?php echo $row [image_db];?"width='80' height='80' //td
/tr
/table
?php } ; ?
table width="838" height="75" border="0" align="center"
tr
td width="824" align="center" class="STYLE5 STYLE7" ?php if($info) echo $pagenav;?/td
/tr
/table/body
/html
下面的是分页代码?php
//为了避免重复包含文件而造成错误,加了判断函数是否存在的条件:
if(!function_exists(pageft)){
//定义函数pageft(),三个参数的含义为:
//$totle:信息总数;
//$displaypg:每页显示信息数
//$url:分页导航中的链接,除了加入不同的查询信息“page”外的部分都与这个URL相同。
// 默认值本该设为本页URL(即$_SERVER["REQUEST_URI"]),但设置默认值的右边只能为常量,所以该默认值设为空字符串,在函数内部再设置为本页URL。
function pageft($totle,$displaypg=10,$url=''){//定义几个全局变量:
//$page:当前页码;
//$firstcount:(数据库)查询的起始项;
//$pagenav:页面导航条代码,函数内部并没有将它输出;
//$_SERVER:读取本页URL“$_SERVER["REQUEST_URI"]”所必须。
global $m,$page,$firstcount,$pagenav,$_SERVER;//为使函数外部可以访问这里的“$displaypg”,将它也设为全局变量。注意一个变量重新定义为全局变量后,原值被覆盖,所以这里给它重新赋值。
$GLOBALS["displaypg"]=$displaypg;if(!$page) $page=1;
//如果$url使用默认,即空值,则赋值为本页URL:
if(!$url){ $url=$_SERVER["REQUEST_URI"];}
//URL分析:
$parse_url=parse_url($url);
$url_query=$parse_url["query"]; //单独取出URL的查询字串
if($url_query){
//因为URL中可能包含了页码信息,我们要把它去掉,以便加入新的页码信息。
//这里用到了正则表达式
$url_query=ereg_replace("(^|)page=$page","",$url_query);//将处理后的URL的查询字串替换原来的URL的查询字串:
$url=str_replace($parse_url["query"],$url_query,$url);//在URL后加page查询信息,但待赋值:
if($url_query)
$url.="page"; else $url.="page";
}else {
$url.="?page";
}
$lastpg=ceil($totle/$displaypg); //最后页,也是总页数
$page=min($lastpg,$page);
$prepg=$page-1; //上一页
$nextpg=($page==$lastpg ? 0 : $page+1); //下一页$firstcount=($page-1)*$displaypg;//开始分页导航条代码:
$m=$firstcount;
$pagenav="显示第 b".($totle?($firstcount+1):0)."/b-b".min($firstcount+$displaypg,$totle)."/b 条记录,
共 $totle 条记录br";//如果只有一页则跳出函数:
if($lastpg=1) return false;
echo 'br/$url'.$url.'br/';
if($prepg) $pagenav.=" a href='$url=1select=$selselect2=$sel2'首页/a "; else $pagenav.="首页 ";//这里修改下
if($prepg) $pagenav.=" a href='$url=$prepgselect=$selselect2=$sel2'上一页/a "; else $pagenav.="上一页 ";//这里修改下
if($nextpg) $pagenav.=" a href='$url=$nextpgselect=$selselect2=$sel2'下一页/a "; else $pagenav.="下一页 ";//这里修改下
if($nextpg) $pagenav.=" a href='$url=$lastpgselect=$selselect2=$sel2'末页/a "; else $pagenav.="末页 ";//这里修改下//下拉跳转列表,循环列出所有页码:
$pagenav.="转select name='topage' size='1' onchange='window.location=\"$url=\"+this.valueselect=$selselect2=$sel2'\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 页,共 $lastpg 页";
}
}
?
说明你点下一页的时候,查询条件没有获取到,下一页的是连接,所以接受数据参数的时候需要用$_GET 来接收,提交的时候也需要用get方法提交,这样才能保证参数不会丢失,点击下一页的时候限制条件保持一致
第一、phpmyadmin 的查询结果显示了分页数据、总条数信息及索引信息,看似只执行了一次查询,实际上是做了多次查询的,只是页面中没显示出来,但是查看 mysql 的运行日志就会发现,其实已经执行了很多条 sql 语句,因为 phpmyadmin 的操作基本都是批量执行增删改查的;
第二、有一种方式可以实现只查询一次就能达到分页的效果,但实际上这种方式是不推荐的,性能比查询两次(一次查总数,一次查分页数据)低了很多,尤其在数据量越大的时候差异越明显;
一次查询的思路是:一次性把满足条件的数据全都查出来,然后再从结果中去取实际分页中要显示的那部分数据;例如,根据标题搜索数据,每页显示20条,一次性总共查出来 1000 条数据,显示第一页的时候就只获取前面的20条,第二页就取第21-40条,第三页就只取41-60条,后面的依次类推。
可想而知,这种查询是很浪费的,我明明只要那一部分数据,却查出了所有的,剩下那部分就根本没用。尤其在数据量大的时候,上万条百万条等等,性能就更差了,如果再加上高并发,那基本就要崩溃了。
所以做分页一般都是查两次比查一次好得多
信息太少 只能写下面一部分
将while里面改一下即可
?php
$page_size=20;//每页信息条数
//解析URL
$url=$_SERVER["REQUEST_URL"];
$url=parse_url($url);
$url=$url[path];
$numq=mysql_query("SELECT * FROM `表名`");
$num=mysql_num_rows($numq);
$page_first=1;
$page_last=ceil($num/$page_size);//获得总页数 也就是最后一页的数值
if ($_GET[page]=1){
$page_num=$_GET[page];
$page_nums=($page_num-1)*$page_size;
}else{
$page_num=1;
$page_nums=($page_num-1)*$page_size;
}
echo $num."条记录,共".$page_last."页"."====bbig这是第".$page_num."页/big/b"."br";
for($i=1;$i=$page_last;$i++){
echo "a href=$url2?page=".($page_num+$i-1).""."第".($page_num+$i-1)."页 "."/a";
}
$sql="SELECT * FROM `表名` limit $page_nums,$page_size";
$query=mysql_query($sql);
echo "table border=1tr th姓名/thth姓别/th/tr";
while($row=mysql_fetch_array($query)){
echo "tr td";
echo $row[name];
echo "/td";
echo "td";
echo $row[sex];
echo "/td/tr";
}
echo "/table";
?
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款