php分页代码简单实现

As this topic comes over and over again in different forms, I've finally decided to write a short (yea, right...) article / tutorial about pagination with PHP with MySQL database. There are dozens of these kind of tutorials, I know - I wanted to make it as simple as possible and as short as possible AND so we all can reach for it at EE.

随着本主题以不同形式反复出现,我终于决定写一篇简短的(是的,对的...)有关使用MySQL数据库与PHP分页的文章/教程。 我知道有数十种此类教程-我想使其尽可能简单和尽可能短,因此我们都可以在EE上找到它。

First of all - the preparations. I assume you have your Apache + PHP set up (by XAMPP / WAMP / any other).

首先-准备。 我假设您已经设置了Apache + PHP(通过XAMPP / WAMP /任何其他方式)。

1. What you need is one file - lets name it.... hmmm.... index.php ! Place it under a directory of your choice.

1.您只需要一个文件-命名为... hmmm .... index.php! 将其放在您选择的目录下。

2. Let's setup a database. If you use phpmyadmin, you know what to do - import the script creating the "pagination" table. I have created a database named "test" for it.

2.让我们建立一个数据库。 如果您使用phpmyadmin,则知道该怎么做-导入创建“分页”表的脚本。 我已经为其创建了一个名为“ test”的数据库。

CREATE TABLE IF NOT EXISTS `pagination` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(100) NOT NULL,PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=22 ;

Just the 'id' and 'name' (simple, simple, simple,...) fields. This is the data for the table:

只是“ id”和“ name”(简单,简单,简单...)字段。 这是表的数据:

INSERT INTO `pagination` (`id`, `name`) VALUES
(1, 'one'),
(2, 'two'),
(3, 'three'),
(4, 'four'),
(5, 'five'),
(6, 'six'),
(7, 'seven'),
(8, 'eight'),
(9, 'nine'),
(10, 'ten'),
(11, 'eleven'),
(12, 'twelve'),
(13, 'thirteen'),
(14, 'fourteen'),
(15, 'fifteen'),
(16, 'sixteen'),
(17, 'seventeen'),
(18, 'eighteen'),
(19, 'nineteen'),
(20, 'twenty'),
(21, 'twenty one');

Ready to go. Here's the index.php file

准备好出发。 这是index.php文件

<?php// LET'S SEE WHAT'S WRONG// BUT DO NOT DISPLAY NOTICESerror_reporting(E_ALL ^ E_NOTICE);// CONNECT TO THE DB$link = mysql_connect("localhost","you","yourpass") or die(mysql_error());mysql_select_db("test") or die(mysql_error());// WE NEED TO KNOW HOW MUCH RECORDS THERE ARE$query = "select count(*) as recordcount from pagination";$result = mysql_query($query) or die(mysql_error());$row = mysql_fetch_array($result) or die(mysql_error());// NUMBER OF ALL ROWS$numrows = $row['recordcount'];// HERE WE SET THE NUMER OF ITEMS PER ONE PAGE$ipp = 3;// NUMBER OF ALL PAGES// WE USE CEIL SO IF THE RECORD COUNT// IS - FOR EXAMPLE - 11 WE GET 3 PAGES$pagecount = ceil($numrows / $ipp);echo"We have ".$pagecount." pages<br />";// DISPLAY THE PAGES LINKSfor($i=1;$i<=$pagecount;$i++){echo"<a href=\"index.php?page=".$i."\">$i</a> | ";}// THE CURRENT PAGE NUMBER FROM GET VARIABLE// IF NOT SET - IT'S FIRST $page = 0;if(empty($_GET[page]) || !isset($_GET[page])) $page = 1;else $page = $_GET[page];   // WHERE ARE WE ?echo"<br /><br />current page: $page<br /><br />";   // STARTRECORD IS USED FOR THE MYSQL QUERY// SO WE KNOW WHERE WE CAN START FROM// LIMIT WITH IPP (ITEMS PER PAGE)if(!empty($page)) $startrecord = ($page-1)*$ipp;else $startrecord = 0;       $query = "select * from pagination limit $startrecord,$ipp";$result = mysql_query($query) or die(mysql_error());while($row = mysql_fetch_array($result)){echo"<div>$row[id], $row[name]</div>";}// THIS IS THE VALUE FOR THE NUMBER OF// NEXT AND PREVIOUS PAGES DISPLAYED IN// THE DYNAMIC PANEL$margin = 2;// THE DYNAMIC PANELecho"<br /><div>";echo"Page ";if($page == 1);else{$prev = $page - 1;echo" <a href=\"index.php?page=1\">first</a> ";echo" <a href=\"index.php?page=$prev\">prev</a> ";}if($page-$margin <= 0) $start = 1; else $start = $page - $margin;if($page+$margin > $pagecount) $last = $pagecount; else $last = $page + $margin;for($i=$start;$i<=$last;$i++){// SHOW THE CURRENT PAGE WITH DIFFERENT FORMATTINGif($i == $page)echo" <a href=\"index.php?page=$i\" style=\"font-weight: bold;\">$i</a> ";elseecho" <a href=\"index.php?page=$i\">$i</a> ";}if($page == $pagecount);else{$next = $page + 1;echo" <a href=\"index.php?page=$next\">next</a> ";echo" <a href=\"index.php?page=$pagecount\">last</a> ";}echo"</div>";       ?>

This is all you need. The comments are there, but to make myself clear - I will add explanation below. I hope the top part of the script is obvious, we have to connect, display errors and know how much records in the table we have:

这就是您所需要的。 那里有评论,但为了使自己清楚-我将在下面添加解释。 我希望脚本的顶部是显而易见的,我们必须进行连接,显示错误并知道表中有多少记录:


error_reporting(E_ALL ^ E_NOTICE);$link = mysql_connect("localhost","you","yourpass") or die(mysql_error());
mysql_select_db("test") or die(mysql_error());$query = "select count(*) as recordcount from pagination";
$result = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_array($result) or die(mysql_error());$numrows = $row['recordcount'];

Below: $ipp variable is for the Items Per Page, you would change it here to display the number of records you want.

下图:$ ipp变量用于每页项目数,您可以在此处进行更改以显示所需的记录数。

$ipp = 3;

Now we can count the number of the pages: let's say you have 501 records in your query and you set the $ipp to 100. So there are 6 pages with one item on the last - this is why we use ceil.

现在我们可以计算页面数:假设您的查询中有501条记录,并且将$ ipp设置为100。所以有6个页面上的最后一个是项-这就是我们使用ceil的原因。

$pagecount = ceil($numrows / $ipp);
echo"We have ".$pagecount." pages<br />";

Display navigation having all the page links, pointing each link to index.php,

显示具有所有页面链接的导航,将每个链接指向index.php,

having $page variable in $_GET[]. If the page variable is not set, the page number is 1. Then we output the page number - where we are.

$ _GET []中有$ page变量。 如果未设置页面变量,则页面编号为1。然后,我们输出页面编号-我们所在的位置。

for($i=1;$i<=$pagecount;$i++){echo"<a href=\"index.php?page=".$i."\">$i</a> | ";
}if(empty($_GET[page]) || !isset($_GET[page])) $page = 1;
else $page = $_GET[page];  echo"<br /><br />current page: $page<br /><br />";

And the heart of the pagination. We use the "main" db query to output the records FROM certain index with a limit of $ipp (items per page). You put your query instead of "select * from pagination". Display the records.

和分页的心脏。 我们使用“主”数据库查询从某些索引输出记录,记录的上限为$ ipp(每页项)。 您输入查询,而不是“从分页中选择*”。 显示记录。

if(!empty($page)) $startrecord = ($page-1)*$ipp;
else $startrecord = 0;         $query = "select * from pagination limit $startrecord,$ipp";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){echo"<div>$row[id], $row[name]</div>";
}

That's it. Or isn't it ? Oh, yes - the dynamic panel.

而已。 是不是? 哦,是的-动态面板。

That is not necessary, but when you have 50 pages - might be handy. It shows the "middle" pages with a $margin variable - for adjacent pages - you can adjust and links to first / previous, next / last page. I've set it to 2.

这不是必需的,但是当您有50页时-可能会很方便。 它显示带有$ margin变量的“中间”页面-对于相邻页面-您可以调整并链接到首页/上一页,下一页/最后一页。 我将其设置为2。

The dynamic panel is divided into sections, this is the "first / previous" section

动态面板分为多个部分,这是“第一个/上一个”部分

if($page == 1);
else
{$prev = $page - 1;echo" <a href=\"index.php?page=1\">first</a> ";echo" <a href=\"index.php?page=$prev\">prev</a> ";
}

We have to know where to start and where to end the pages display, so we count that

我们必须知道页面显示的开始位置和结束位置,所以我们算了一下

if($page-$margin <= 0) $start = 1; else $start = $page - $margin;
if($page+$margin > $pagecount) $last = $pagecount; else $last = $page + $margin;

Below is the section where we display the pages (the numbers).

下面是显示页面(数字)的部分。

for($i=$start;$i<=$last;$i++){// SHOW THE CURRENT PAGE WITH DIFFERENT FORMATTINGif($i == $page)echo" <a href=\"index.php?page=$i\" style=\"font-weight: bold;\">$i</a> ";elseecho" <a href=\"index.php?page=$i\">$i</a> ";
}

And this is the section for the "next / last" links.

这是“下一个/最后一个”链接的部分。

if($page == $pagecount);
else
{$next = $page + 1;echo" <a href=\"index.php?page=$next\">next</a> ";echo" <a href=\"index.php?page=$pagecount\">last</a> ";
}

Let's hope it would work for you. If you want to praise / curse this tutorial, feel free to post a comment.

希望它对您有用。 如果您想赞美/诅咒本教程,请随时发表评论。

翻译自: https://www.experts-exchange.com/articles/4742/Simple-PHP-pagination.html

php分页代码简单实现

php分页代码简单实现_简单PHP分页相关推荐

  1. php分页代码 页数太多,php分页函数示例代码分享

    一例php分页函数代码. 分享一例php分页函数代码,用此函数实现分页代码很不错. 代码,php分页函数. /* * 使用方法: require_once('mypage.php'); $result ...

  2. python的代码有哪些_简单python代码类型有哪些?

    简单python代码类型有哪些? 简单python代码类型有: 1.[背景] 最近,派大星想要减肥,他决定控制自己的饮食,少吃一点蟹黄堡. 海绵宝宝为了帮助好朋友派大星,和派大星一起制定了一个饮食游戏 ...

  3. unity简单计时器_简单且悦目的Pomodoro计时器

    unity简单计时器 拟态 (pomotroid) Pomotroid is a simple and configurable Pomodoro timer. It aims to provide ...

  4. java web简单项目实例_简单粗暴,详细得不要不要的 JavaWeb快速入门实例(1)

    额,有些标题党的嫌疑,小细节不用在意哈... 前端时间我在写一个系列,是关于JavaWeb的一个入门级项目实战,我的初衷就是打算写给初学者的,希望能对他们有所帮助. 这段时间博主也接触了一些事情,感觉 ...

  5. hbuilderx制作简单网页_简单的手机网页制作教程

    很多小白会以为建站只能通过电脑,但实际上,用手机也能顺利建站,而且操作非常简单,不需要你懂技术知识哦!下面就跟大家说说手机网页制作教程: 首先,你需要选择一个比较好用的手机网页制作app.尽量找知名度 ...

  6. 状语从句不是简单句_简单句、复合句Gloria总结

    简单句 1. 名词谓语句: 主语+系动词+表语 ser +s.  adj 或起形容词作用的介词短语 La  piscina  era muy grande Su resfriado  no era m ...

  7. java 简单背包问题_简单的背包问题--java递归实现

    1.主程序 package recursion; //简单背包问题-递归实现- //将不同重量的数据项放入背包中,以使背包的最后 //-----------达到指定的总重量------------- ...

  8. java 简单工厂_简单工厂 - HelloJava菜鸟社区

    设计模式之简单工厂模式 工厂模式从字面上的理解来看,就是一个工厂,而实际意义也是一样的,它就是一个工厂,生产出我们需要的东西,对应现实生活中的工厂,玩具工厂就是生产出玩具的,电子工厂就是生产出各种电子 ...

  9. jsp mysql简单登录_简单的登录页面,实现增删改查运用jsp/servlet和mysql数据库免费分享...

    属性            大小     日期    时间   名称 ----------- ---------  ---------- -----  ---- 文件        455  2012 ...

最新文章

  1. OKR与Scrum如何强强联手
  2. VMware文件扩展名
  3. 通过Image 对象动态装载图片,不可能立即得到图片的问题
  4. SAP UI5 国际化的rtl support
  5. php dirtoarray,PHP Ds\Stack toArray()用法及代码示例
  6. linux下搭建FTP服务器
  7. 质量故事(1)---“请三思而后行!不要轻易下结论”
  8. 分层精品优秀电商海报模版|无需数量多,胜在精
  9. web前端小白怎么入行?
  10. 关于滑轮组的计算机知识点,初中物理:滑轮及滑轮组知识点总结
  11. delphi windows编程_他曾创造多门编程语言,还被比尔盖茨以300万美元挖角
  12. 微信小程序下载文件,保存文件功能总结
  13. 合肥工业大学机器人足球仿真robcup作业一(python实现)附代码有注释
  14. SAP 运维 集团化公司SAP系统运维管理体系建设方案
  15. 分水岭算法java,OpenCV 学习笔记 04 深度估计与分割——GrabCut算法与分水岭算法...
  16. 智能驾仓上蓝牙应用案例
  17. windows和linux的icmp包,linux和windows下icmp的区别
  18. 二分答案——洛谷P2440木材加工
  19. 使用 Palette 提取图片调色板
  20. win10防火墙推荐设置来保护计算机,win10提示windows防火墙没有法更改某些设置如何办?...

热门文章

  1. 【jeecg学习记录】SAAS多租户配置
  2. android可拖拽悬浮控件和Kotlin的可拖拽悬浮控件/可拖拽悬浮按钮带Demo附件
  3. Anlogic TD Download使用-主区/备份区升级
  4. 安考星安全生产模拟考试平台会员账号如何获取?
  5. 【FPGA】浙江大华_笔试面试题目分享
  6. Clamav杀毒软件安装与使用
  7. 【Docker】Dockerfile构建镜像与命令详解
  8. 【有利可图网】干货!10个高大上的字体效果设计方案!
  9. 如何在Word调整文字方向,教程来啦,怎样在word将文字方向修改
  10. mac os x 添加自定义字体库