仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3547|回复: 20
打印 上一主题 下一主题

[学习教程] PHP网页设计php+mysql分页处置的切磋

[复制链接]
冷月葬花魂 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-16 00:27:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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很强,这个时候的你绝对不能动摇,哪怕你真想学。
爱飞 该用户已被删除
沙发
发表于 2015-2-16 03:16:39 | 只看该作者
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox  支持的不是很好,所以能少用还是少用的好。
柔情似水 该用户已被删除
板凳
发表于 2015-2-27 20:15:04 | 只看该作者
学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
分手快乐 该用户已被删除
地板
发表于 2015-3-8 16:19:03 | 只看该作者
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
若相依 该用户已被删除
5#
发表于 2015-3-10 11:50:47 | 只看该作者
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
活着的死人 该用户已被删除
6#
发表于 2015-3-14 18:14:23 | 只看该作者
基础有没有对学习php没有太大区别,关键是兴趣。
因胸联盟 该用户已被删除
7#
发表于 2015-3-17 09:02:22 | 只看该作者
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线  \\\\\\\'_\\\\\\\' ;
精灵巫婆 该用户已被删除
8#
发表于 2015-3-24 03:57:07 | 只看该作者
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
第二个灵魂 该用户已被删除
9#
发表于 2015-3-25 08:52:27 | 只看该作者
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
冷月葬花魂 该用户已被删除
10#
 楼主| 发表于 2015-3-26 23:16:30 | 只看该作者
实践是检验自己会不会的真理。
再见西城 该用户已被删除
11#
发表于 2015-3-28 03:25:43 | 只看该作者
本文当是我的笔记啦,遇到的问题随时填充
灵魂腐蚀 该用户已被删除
12#
发表于 2015-4-2 09:55:03 | 只看该作者
爱上php,他也会爱上你。
小妖女 该用户已被删除
13#
发表于 2015-4-12 19:49:35 | 只看该作者
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
金色的骷髅 该用户已被删除
14#
发表于 2015-4-17 02:29:47 | 只看该作者
作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。
变相怪杰 该用户已被删除
15#
发表于 2015-4-29 00:01:12 | 只看该作者
学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
深爱那片海 该用户已被删除
16#
发表于 2015-4-30 06:34:38 | 只看该作者
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
蒙在股里 该用户已被删除
17#
发表于 2015-5-6 10:12:00 | 只看该作者
Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81
莫相离 该用户已被删除
18#
发表于 2015-5-6 19:59:34 | 只看该作者
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
山那边是海 该用户已被删除
19#
发表于 2015-6-12 22:50:24 | 只看该作者
Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81
若天明 该用户已被删除
20#
发表于 2015-7-13 23:14:18 | 只看该作者
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-1 09:28

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表