|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
参加PHP开发学习,或许只是一次偶然的想法吧!只是想在走向社会之前体验、学习在一个公司或者说是项目团队之中如何去更有效的沟通、交流、共同合作,还有就是为毕业实习找工作增加伐码。分页 1. 分页的条件是纪录按id排序, 且不一连, 好比有些纪录被删除,
或要分页显示查找了局, 如许就有了除分页外的前提$q
2. 肯定分页的体例:
(1): 用复杂的"页首, 上一页, 下一页".
(2): 用"1,2,3,4,5,6,..........末尾"来指定跳到某页.
3. 完成剖析:
(1) 假如先查询全体了局, 只显示个中的局部. 这类体例明显欠好,
会累坏server.
(2) 关于用limit m,n完成分页, 有些不担任, 办事器在实践操作时仍是
按$q前提找出一切了局, 然后只前往m后的n条. server任务依然良多.
(3) 优化的举措是晓得要显示页的肇端$id, 查询
"where $q and id>=$id order by id desc limit 0,$page_length"
如许mysql 会先按id的索引找到合适前提的id, 然后再评价$q.
(4) 那$id怎样来呢?
(5) 关于显示体例1, 每页多查询一条,最初一个纪录的$id就是啦
"where $q and id>=$id order by id limit 0,$page_length+1"
if (mysql_num_rows($result) > $page_length) echo "下一页"
//(记住最初一笔记录不要显示!)
//假如不利用第二种分页体例, 到此停止.
(5) 关于显示体例2, 前面$page_offset=6页的每页肇端id要一次晓得.
"select id from xxxx where $q order by id desc limit 0,$page_length*$page_offset"
for($i=0;$i*$page_length<$mysql_num_rows($result);$i++){
$start=mysql_result($result,$i*$page_length,0);
echo '<a href="xxxxx?pageno='.($i+1)."&id=$start\">";
if ($id==$start) echo "<b>$i</b>"; //减轻显示以后页号
else echo $i;
echo "</a>";
}
(6)或许有人要问server不是按$q前提把一切这几页都搜一遍了吗?
和"limit 0,$page_length*$pageno"有甚么区分? 直接用$pageno哪有$id这么费事?
谜底是可以使用session功效存起来这个了局, 假如$q没有变, 就能够直接挪用,
免得每次换页都折腾数据库.
加上后续页面判别, 下面的例子就酿成:
//假如$q没有变更
$page_offset=6;
session_register($ids);
if (!$ids){//后序页面不会履行
"select id from xxxx where $q order by id desc limit 0,$page_length*$page_offset+1";//判别有没有后序页面
for($i=0;$i*$page_length<$mysql_num_rows($result);$i++){
$ids[]=mysql_result($result,$i*$page_length,0);
}
}
//有乐$ids......
for ($i=0;$i<$page_offset;$i++){
echo '<a href="xxxxx?id="$ids[$i].'">';
if ($d==$ids[$i]) echo "<b>$i</b>"; //减轻显示以后页号
else echo $i;
echo "</a>";
}
//上面这句自在发扬, 可以切换到分页形式1
if ($ids[$page_offset])
echo '<a href="xxxx?pageno='.($pageno+1).'&id='.$ids[$page_offset].">....</a>';
(8) 以上了局略加修改, 可以session_resiter($pageno), 来纪录以后是第几
大页. 相似快进功效.
(7) 不晓得php4正式版是不是撑持session中寄存数组, 假如不可建议用
implode/explode来酿成字串保留.
(8) 这类体例的长处应当是速度快, 但弱点是不晓得总共合适$q前提的数目.
关于搜刮复杂的数据库应当有效.
(9) 完成"跳至末尾", 可以在以上sql语句中 order by id, 不要desc. 同理可完成
后面第N页.
4 以上代码还都是假想, 但愿列位多多斧正.
5 本文中间思惟是使用id索引和id的偏移来疾速查找后序内容, 节俭数据库开支.
到现在,对排版还是不很熟练,经常会排不好。 |
|