小弟对翻页问题有一不解,望指教 mysql_data_seek()不知道可不可以?影不影响效率呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 但很多时候用户是不需要看后面那几页的,没必要把那些都查出来缓存起来吧,mysql_data_seek()好像是返回true和false的~除了COUNT(*)真的没其他办法了吗?再等一天,如果没有其他好的办法就结贴,谢谢。 如果要用count(*)再次访问数据库的话还不如显示数据的时候加个变量i循环出最大数字就是数据总数 小弟写的,供参考,欢迎高手指正参见:www.ebysky.com 来访记录//============================// FileName: page.php// Version: 0.0.2// Author: Leo// Date C/M: 2007-02-01/2007-04-27// Content: 配置文件//============================//包含配置文件require_once("config.php");//分页信息define("_P_TOPIC",25); //每页主题数define("_P_NUM",10); //分页栏的页码数define("_P_PRE",4); //当前页前导//分页函数 (Ver0.0.2Build2007-04-28)function page($sql,$p){//以下初始化各项参数$parr=array("bar"=>'',"sql"=>'');$alltopic=mysql_num_rows(mysql_query($sql));if($alltopic<=0) return $parr; //无主题直返回$pagebody="";$pagego=""; //参数初始化$pa=ceil($alltopic/_P_TOPIC); //求得总页数,进一取整if($p<=0 || $p>$pa) $p=1; //当前页不在范围,初始化当前页//以下求解页码范围$pa与当前页$pif($pa>_P_NUM) //最大页数大于"页码条所列页数"{ if($p>=1 && $p<=_P_PRE) //当前页处于前导页内 { $ps=1;$pe=_P_NUM; } elseif($p>_P_PRE && $p<=$pa-_P_NUM+_P_PRE) //当前页处于正常范围 { $ps=$p-_P_PRE;$pe=$p+_P_NUM-_P_PRE-1; } else //当前页处于页尾$pa>=$p>$pa-_P_NUM+_P_PRE { $ps=$pa-_P_NUM+1;$pe=$pa; } $pagego=" <input type='text' size=1 onKeyDown=\"if(event.keyCode==13) {window.location='".$_SERVER["PHP_SELF"]."?p='+this.value; return false;}\">"; } else //最大页数小于"页码条所列页数" { $ps=1;$pe=$pa; }//以下构建页码条 for($i=$ps;$i<=$pe;$i++) { $pagebody.=($i==$p)?" <span class='pagenow'>".$i."</span> ":" <a href='".$_SERVER["PHP_SELF"]."?p=".$i."'>".$i."</a> "; }//以下构建返回数组的值$parr["bar"]="\n<span id='pagebar'>[共".$pa."页/".$alltopic."条] ".($pa>_P_NUM?($p==1?'':'<a href=\''.$_SERVER['PHP_SELF'].'?p=1\' title=\'第一页\'>|<</a>').$pagebody.($p==$pa?'':'<a href=\''.$_SERVER['PHP_SELF'].'?p='.$pa.'\' title=\'最后一页\'>>|</a>'):$pagebody).$pagego."</span>\n";$parr["sql"]=$sql." LIMIT ".($p-1)*_P_TOPIC.","._P_TOPIC;return $parr;} ?> 谢谢不过这里$alltopic=mysql_num_rows(mysql_query($sql));还是把所有数据都差出来了哦,呵呵 呵,就是我在一楼说的,你即然不想count全读,那么就用一个txt文件记录数据总数,增记录时加一,删数据时减一,用时取之,分页时就不必全读,岂不好载。因为你的思路是对的,分页时只是显示相应数码那么几条,全读数据岂不浪费,你想要的总行数,只不过分页时用一下、用来得到总页数而已。 采集:有点难度的规则 php连接数据库 大话set get 登陆验证用户名和密码失败? php与mysql Blogmemes中文站开通,欢迎使用!同时散分! 这年头招个合格的PHPER真难啊? 问:怎样去除t35.com免费空间的广告 请教PHP时间增加问题。 Cannot load c:/php4/sapi/php4apache.dll into server: (126) 找不到指定的模块。 请问PHP中有没有像ASP中Response.end这样暂停程序运行的语法? 购物车中有多个商品时,只能修改最后一个加入的商品数量,之前加入的都不能修改,有没有解决办法?
参见:www.ebysky.com 来访记录//============================
// FileName: page.php
// Version: 0.0.2
// Author: Leo
// Date C/M: 2007-02-01/2007-04-27
// Content: 配置文件
//============================
//包含配置文件
require_once("config.php");
//分页信息
define("_P_TOPIC",25); //每页主题数
define("_P_NUM",10); //分页栏的页码数
define("_P_PRE",4); //当前页前导//分页函数 (Ver0.0.2Build2007-04-28)
function page($sql,$p)
{
//以下初始化各项参数
$parr=array("bar"=>'',"sql"=>'');
$alltopic=mysql_num_rows(mysql_query($sql));
if($alltopic<=0) return $parr; //无主题直返回
$pagebody="";$pagego=""; //参数初始化
$pa=ceil($alltopic/_P_TOPIC); //求得总页数,进一取整
if($p<=0 || $p>$pa) $p=1; //当前页不在范围,初始化当前页
//以下求解页码范围$pa与当前页$p
if($pa>_P_NUM) //最大页数大于"页码条所列页数"
{
if($p>=1 && $p<=_P_PRE) //当前页处于前导页内
{
$ps=1;$pe=_P_NUM;
}
elseif($p>_P_PRE && $p<=$pa-_P_NUM+_P_PRE) //当前页处于正常范围
{
$ps=$p-_P_PRE;$pe=$p+_P_NUM-_P_PRE-1;
}
else //当前页处于页尾$pa>=$p>$pa-_P_NUM+_P_PRE
{
$ps=$pa-_P_NUM+1;$pe=$pa;
}
$pagego=" <input type='text' size=1 onKeyDown=\"if(event.keyCode==13) {window.location='".$_SERVER["PHP_SELF"]."?p='+this.value; return false;}\">";
}
else //最大页数小于"页码条所列页数"
{
$ps=1;$pe=$pa;
}
//以下构建页码条
for($i=$ps;$i<=$pe;$i++)
{
$pagebody.=($i==$p)?" <span class='pagenow'>".$i."</span> ":" <a href='".$_SERVER["PHP_SELF"]."?p=".$i."'>".$i."</a> ";
}
//以下构建返回数组的值
$parr["bar"]="\n<span id='pagebar'>[共".$pa."页/".$alltopic."条] ".($pa>_P_NUM?($p==1?'':'<a href=\''.$_SERVER['PHP_SELF'].'?p=1\' title=\'第一页\'>|<</a>').$pagebody.($p==$pa?'':'<a href=\''.$_SERVER['PHP_SELF'].'?p='.$pa.'\' title=\'最后一页\'>>|</a>'):$pagebody).$pagego."</span>\n";
$parr["sql"]=$sql." LIMIT ".($p-1)*_P_TOPIC.","._P_TOPIC;
return $parr;
}
?>
不过这里$alltopic=mysql_num_rows(mysql_query($sql));还是把所有数据都差出来了哦,呵呵