|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
刚开始因为习惯于ASP格式的写法,总是在这些方面出现问题,自己还总是找不到问题所在,这就提醒了自己,在写代码的时候一定要认真,不能粗心地老是少个“;”或者字母大小写不分,要不然很可能找半天都找不到错误。mysql|分页 php+mysql分页处置的切磋
罕见的分页处置流程为:
1、用select count(*) from tbl_name获得待分页的总纪录数
2、依据每页的纪录数盘算出总页数:总页数 = ceil(总纪录数/每页纪录数)
3、依据以后页号盘算出肇端地位:肇端地位 = (以后页号-1)*每页纪录数
4、用select * from tbl_name limit 肇端地位,每页纪录数 获得待显示纪录
5、列表输入相干信息
在这个流程中,数据库需求两次遍历表才干失掉所需数据。虽然limit会在失掉指定纪录数后会终止遍历,但后面直到“肇端地位”的检索是华侈失落的。
这里提出一种新算法与人人会商:
1、使用mysql的用户变量,朋分并提取每页肇端的id号。
2、查询了局的纪录数即为总页数
3、依据以后页号获得以后页的肇端id
4、用select * from tbl_name where id>=肇端id limit 每页纪录数 获得待显示纪录
5、列表输入相干信息
可以看到,在后一次查询中。因为使用了id作为主键的特点,数据库可直接定位到所需纪录。从而削减了查询工夫。
这个查询算法有一个副产物:可以发生一条用于跟尾高低页的反复纪录,也就是各页间有一条堆叠的纪录。固然,去失落他也是很轻易的。
以下是测试代码:
<?php
include "mysql_result_all.inc"; // 用于显示查询了局的任务函数
$pagesize = 9; // 每页行数
$type = 1; // =1降序分列
$mode = 0; // =1不反复上页最初一笔记录
$conn = mysql_connect(); // 毗连mysql
mysql_select_db("site"); // 选择数据库
// 筹办静态修正查询串
if($type) {
$order = "desc";
$expr = "<=";
}else {
$order = "";
$expr = ">=";
}
if($mode) $pagesize++;
mysql_query("set @v:=-1"); // 界说mysql用户变量
$rs = mysql_query("select @v:=(@v+1) as xh, id from data HAVING mod(xh,$pagesize)=0 order by id $order");
mysql_result_all($rs); // 反省各页散布
echo $pages = mysql_num_rows($rs); // 获得总页数
if($mode) $pagesize--;
// 测试分页了局,$i暗示显示页
for($i=0;$i<$pages;$i++) {
mysql_data_seek($rs,$i); // 挪动了局集指针
list($xh,$id) = mysql_fetch_row($rs); // 获得肇端id
echo "<br>[$i] $xh -- $id";
$rs1 = mysql_query("select * from data where id$expr$id order by id $order limit $pagesize");
mysql_result_all($rs1); // 显示相干了局
}
?>
mysql_result_all.inc
这个函数我贴过量次了,对换试法式十分有效的。
<?
function mysql_result_all($result,$format="") {
echo "<table $format><tr>";
for($i=0;$i<mysql_num_fields($result);$i++) {
echo "<th>".mysql_field_name($result,$i)."</th>";
}
echo "</tr>";
while($row = mysql_fetch_row($result)) {
echo "</tr>";
for($i=0;$i<mysql_num_fields($result);$i++) {
echo "<td>".$row[$i]."</td>";
}
echo "</tr>";
}
echo "</table>";
}
?>
另外要叮嘱各位的是,抵御诱惑,ASP/PHP/JSP/.NET的对比也许会让你无所适从,你也许学了一半PHP,又开始打C#的主意,或者有人说JAVA很强,这个时候的你绝对不能动摇,哪怕你真想学。 |
|