网站首页 > 文章中心 > 其它

php输出数据分页_php输出json数据

作者:小编 更新时间:2023-08-16 16:45:27 浏览量:322人看过

php thinkphp3.2.3遍历输出的数据怎样分页输出?

一般都是在取数据时就分页取了.

$count?=?100;?//总条数

$page=new?Pager($count,$perpage);?//分页类

$data?=?M('user')-limit($page-firstRow.','.$page-listRows)-select();

$this-assign('data',$data);//查询?的数据

$this-assign('page',$page-show());?//输出分页信息

如何将php里面的数组内容进行分页显示出来?

①.、前言

分页显示是一种非常常见的浏览和显示大量数据的方法,属于web编程中最常处理的事件之一.对于web编程的老手来说,编写这种代码实在是和呼吸一样自然,但是对于初学者来说,常常对这个问题摸不着头绪,所以呢特地撰写此文对这个问题进行详细的讲解,力求让看完这篇文章的朋友在看完以后对于分页显示的原理和实现方法有所了解.本文适合初学者阅读,所有示例代码均使用php编写.

所谓分页显示,也就是将数据库中的结果集人为的分成一段一段的来显示,这里需要两个初始的参数:

每页多少条记录($PageSize)?

当前是第几页($CurrentPageID)?

现在只要再给我一个结果集,我就可以显示某段特定的结果出来.

至于其他的参数,比如:上一页($PreviousPageID)、下一页($NextPageID)、总页数($numPages)等等,都可以根据前边这几个东西得到.

以mysql数据库为例,如果要从表内截取某段内容,sql语句可以用:select * from table limit offset, rows.看看下面一组sql语句,尝试一下发现其中的规率.

前10条记录:select * from table limit 0,10

......

这一组sql语句其实就是当$PageSize=10的时候取表内每一页数据的sql语句,我们可以总结出这样一个模板:

select * from table limit ($CurrentPageID - 1) * $PageSize, $PageSize

拿这个模板代入对应的值和上边那一组sql语句对照一下看看是不是那么回事.搞定了最重要的如何获取数据的问题以后,剩下的就仅仅是传递参数,构造合适的sql语句然后使用php从数据库内获取数据并显示了.以下我将用具体代码加以说明.

请详细阅读以下代码,自己调试运行一次,最好把它修改一次,加上自己的功能,比如搜索等等.

php

// 建立数据库连接

$link = mysql_connect("localhost", "mysql_user", "mysql_password")

or die("Could not connect: " . mysql_error());

// 获取当前页数

if( isset($_GET['page']) ){

$page = intval( $_GET['page'] );

}

else{

$page = 1;

// 每页数量

$PageSize = 10;

// 获取总数据量

$sql = "select count(*) as amount from table";

$result = mysql_query($sql);

$row = mysql_fetch_row($result);

$amount = $row['amount'];

// 记算总共有多少页

if( $amount ){

if( $amount $page_size ) //如果总数据量小于$PageSize,那么只有一页

if( $amount % $page_size ){ //取总数据量除以每页数的余数

$page_count = (int)($amount / $page_size) ◆ 1; //如果有余数,则页数等于总数据量除以每页数的结果取整再加一

}else{

$page_count = $amount / $page_size; //如果没有余数,则页数等于总数据量除以每页数的结果

$page_count = 0;

// 翻页链接

$page_string = '';

if( $page == 1 ){

$page_string .= '第一页|上一页|';

$page_string .= 'a href="/?page=1";第一页/a|a href="/?page='."($page-1).'上一页/a|';

if( ($page == $page_count) || ($page_count == 0) ){

$page_string .= '下一页|尾页';

$page_string .= 'a href="/?page='."($page◆1).'下一页/a|a href="/?page='."$page_count.'尾页/a';

// 获取数据,以二维数组格式返回结果

$sql = "select * from table order by id desc limit ". ($page-1)*$page_size .", $page_size";

while ( $row = mysql_fetch_row($result) ){

$rowset[] = $row;

$rowset = array();

// 没有包含显示结果的代码,那不在讨论范围,只要用foreach就可以很简单的用得到的二维数组来显示结果

以下代码中的数据库连接是使用的pear db类进行处理

// FileName: Pager.class.php

// 分页类,这个类仅仅用于处理数据结构,不负责处理显示的工作

Class Pager

{

var $PageSize; //每页的数量

var $CurrentPageID; //当前的页数

var $NextPageID; //下一页

var $PreviousPageID; //上一页

var $numPages; //总页数

var $numItems; //总记录数

var $isFirstPage; //是否第一页

var $isLastPage; //是否最后一页

var $sql; //sql查询语句

function Pager($option)

global $db;

$this-_setOptions($option);

// 总条数

if ( !isset($this-numItems) )

$res = $db-query($this-sql);

$this-numItems = $res-numRows();

// 总页数

if ( $this-numItems 0 )

if ( $this-numItems $this-PageSize )

if ( $this-numItems % $this-PageSize )

$this-numPages= (int)($this-numItems / $this-PageSize) ◆ 1;

else

$this-numPages = $this-numItems / $this-PageSize;

$this-numPages = 0;

switch ( $this-CurrentPageID )

case $this-numPages == 1:

$this-isFirstPage = true;

$this-isLastPage = true;

break;

case 1:

$this-isLastPage = false;

case $this-numPages:

$this-isFirstPage = false;

default:

if ( $this-numPages 1 )

if ( !$this-isLastPage )

if ( !$this-isFirstPage )

return true;

/***

*

* 返回结果集的数据库连接

* 在结果集比较大的时候可以直接使用这个方法获得数据库连接,然后在类之外遍历,这样开销较小

* 如果结果集不是很大,可以直接使用getPageData的方式获取二维数组格式的结果

* getPageData方法也是调用本方法来获取结果的

***/

function getDataLink()

if ( $this-numItems )

$PageID = $this-CurrentPageID;

$from = ($PageID - 1)*$this-PageSize;

$count = $this-PageSize;

$link = $db-limitQuery($this-sql, $from, $count); //使用Pear DB::limitQuery方法保证数据库兼容性

return $link;

return false;

* 以二维数组的格式返回结果集

function getPageData()

if ( $res = $this-getDataLink() )

if ( $res-numRows() )

while ( $row = $res-fetchRow() )

$result[] = $row;

$result = array();

return $result;

function _setOptions($option)

$allow_options = array(

'PageSize',

'CurrentPageID',

'sql',

'numItems'

);

foreach ( $option as $key = $value )

if ( in_array($key, $allow_options) ($value != null) )

$this-$key = $value;

// FileName: test_pager.php

// 这是一段简单的示例代码,前边省略了使用pear db类建立数据库连接的代码

require "Pager.class.php";

if ( isset($_GET['page']) )

$page = (int)$_GET['page'];

$sql = "select * from table order by id";

$pager_option = array(

"sql" = $sql,

"PageSize" = 10,

"CurrentPageID" = $page

if ( isset($_GET['numItems']) )

$pager_option['numItems'] = (int)$_GET['numItems'];

$pager = @new Pager($pager_option);

$data = $pager-getPageData();

if ( $pager-isFirstPage )

$turnover = "首页|上一页|";

$turnover = "a href='?page=1numItems=".$pager-numItems."'首页/a|a href="/?page=".$pager-PreviousPageID."numItems=".$pager-numItems."'上一页/a|";

if ( $pager-isLastPage )

$turnover .= "下一页|尾页";

$turnover .= "a href="/?page=".$pager-NextPageID."numItems=".$pager-numItems."'下一页/a|a href="/?page=".$pager-numPages."numItems=".$pager-numItems."'尾页/a";

需要说明的地方有两个:

这个类仅仅处理数据,并不负责处理显示,因为我觉得将数据的处理和结果的显示都放到一个类里边实在是有些勉强.显示的时候情况和要求多变,不如自己根据类给出的结果处理,更好的方法是根据这个Pager类继承一个自己的子类来显示不同的分页,比如显示用户分页列表可以:

Class MemberPager extends Pager

function showMemberList()

$data = $this-getPageData();

// 显示结果的代码

// ......

/// 调用

$sql = "select * from members order by id";

$pager = @new MemberPager($pager_option);

$pager-showMemberList();

第二个需要说明的地方就是不同数据库的兼容性,在不同的数据库里截获一段结果的写法是不一样的.

mysql: select * from table limit offset, rows

pgsql: select * from table limit m offset n

所以要在类里边获取结果的时候需要使用pear db类的limitQuery方法.

ok,写完收功,希望花时间看完这些文字的你不觉得是浪费了时间.

回答者

另外,虚机团上产品团购,超级便宜

php thinkphp3.2.3遍历输出的数据怎样分页输出

$Cate

=

D('ArticleRelation');

//

实例化Cate对象

$count

$Cate-count();

查询满足要求的总记录数

$Page

new

\Think\Page($count,

实例化分页类

$Page-setConfig('header',

'条数据');

$Page-setConfig('prev',

'上一页');

$Page-setConfig('next',

'下一页');

$Page-setConfig('first',

'首页');

$Page-setConfig('end',

'末页');

$show

$Page-show();

分页显示输出

$list

$Cate-relation(true)-order('id

DESC')-limit($Page-firstRow

.

','

$Page-listRows)-select();

$this-assign('list',

$list);

赋值数据集

$this-assign('page',

$show);

赋值分页输出

输出模板

PHP 分页

PHP 分页例子如下:

$sql="select * from table ";//查表

$res=mysql_query($sql);//取得结果

$nums=mysql_num_rows($res);//取得总记录数

$pages=ceil($nums/$pagesize);//取得总页数

if($pages1){$pages=1;}//设定总页数至少1页

$page=$_GET[page];//取得传递过来的页数

if($page$pages){$page=$pages;}//如果传递过来的页数比总页数还大,就让它等于总页数

if($page1){$page=1;}//如果传递过来的页数小于1,就让他等于1

$kaishi=($page-1)*$pagesize;//为下一步做准备,limit的初始记录

$sql="select * from table order by id desc limit $kaishi,$pagesize";//取得记录从计算出的初始值开始,一共$pagesize条

while($arr=mysql_fetch_array($res))

echo $arr[id]."---".$arr[biaoti].'br';//输出记录的ID和标题

下面是分页br /

a href="?page=1"首页/a a href="?page=? echo $page-1;?"上页/a 当前第? echo $page;?页 a href="?page=? echo $page◆1;?"下页/a a href="?page=? echo $pages;?"尾页/a

PHP怎么制作分页

方法/步骤

首先要了解下分页的原理即

SELECT * FROM table ...... limit 开始位置 , 操作条数

开始位置从0开始

其次分页要用的公式

得到公式

(当前页数 - 1 )X 每页条数 , 每页条数

Select * from table limit ($Page- 1) * $PageSize, $PageSize

还要了解parse_url()解析URL函数

parse_url() 是讲URL解析成有固定键值的数组的函数

$ua=parse_url("");

print_r($ua);

结果:

Array

(

[scheme] = http

[host] = hostname

[user] = username

[pass] = password

[path] = /path

[query] = arg=value

[fragment] = anchor

)

创建数据库bbs和表test有

CREATE TABLE ◆test◆ (

◆id◆ int(11) NOT NULL auto_increment,

PRIMARY KEY (◆id◆)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;

然后插入十几条测试数据即可

写mysql数据库连接代码保存conn.php文件里

代码如下

$conn = @ mysql_connect("localhost", "root", "") or die("数据库链接错误");

mysql_select_db("bbs", $conn);

mysql_query("set names 'GBK'"); //使用GBK中文编码;

function htmtocode($content) {

$content = str_replace("\n", "br", str_replace(" ", " ", $content));

return $content;

//$content=str_replace("'","'",$content);

//htmlspecialchars();

写分页函数page.php

global $page, $firstcount, $pagenav, $_SERVER;

if (!$page)

if (!$url) {

$url = $_SERVER["REQUEST_URI"];

//URL分析:

$parse_url = parse_url($url);

$url_query = $parse_url["query"]; //单独取出URL的查询字串

if ($url_query) {

$url_query = ereg_replace("(^|)page=$page", "", $url_query);

$url = str_replace($parse_url["query"], $url_query, $url);

if ($url_query)

$url .= "page";

} else {

$url .= "?page";

$page = min($lastpg, $page);

$prepg = $page -1; //上一页

$nextpg = ($page == $lastpg ? 0 : $page ◆1); //下一页

//开始分页导航条代码:

//如果只有一页则跳出函数:

if ($lastpg = 1)

$pagenav .= " a href='$url=1'首页/a ";

if ($prepg)

$pagenav .= " a href='$url=$prepg'前页/a ";

$pagenav .= " 前页 ";

if ($nextpg)

$pagenav .= " a href='$url=$nextpg'后页/a ";

$pagenav .= " 后页 ";

$pagenav .= " a href='$url=$lastpg'尾页/a ";

//下拉跳转列表,循环列出所有页码:

$pagenav .= " 到第 select name='topage' size='1' onchange='window.location=\"$url=\"◆this.value'\n";

for ($i = 1; $i = $lastpg; $i◆◆) {

if ($i == $page)

$pagenav .= "option value='$i' selected$i/option\n";

$pagenav .= "option value='$i'$i/option\n";

$pagenav .= "/select 页,共 $lastpg 页";

include("conn.php");

$result=mysql_query("SELECT * FROM ◆test◆");

$total=mysql_num_rows($result);

echo $pagenav;

while($row=mysql_fetch_array($result)){

echo "hrb".$row[name]." | ".$row[sex];

调用数据和分页list.php

/**

* 爱微网

*/

$url=$_SERVER["REQUEST_URI"];

$url=parse_url($url);

$url=$url[path];

$numq=mysql_query("SELECT * FROM ◆test◆");

$num = mysql_num_rows($numq);

if($_GET[page]){

$pageval=$_GET[page];

$page=($pageval-1)*$pagesize;

$page.=',';

if($num $pagesize){

if($pageval=1)$pageval=1;

echo "共 $num 条".

" a href=$url?page=".($pageval-1)."上一页/a a href=$url?page=".($pageval◆1)."下一页/a";

echo $SQL="SELECT * FROM ◆test◆ limit $page $pagesize ";

$query=mysql_query($SQL);

while($row=mysql_fetch_array($query)){

注意事项

注意分页公式写法你只要记住即可;

(当前页数 - 1 )X 每页条数 , 每页条数;

Select * from table limit ($Page- 1) * $PageSize, $PageSize;

注意三个代码文件在同一个目录下;

主要是最后的list.php调用代码要细看很有用.

php输出数据分页问题,求救

不同意,因为你楼上的,if ($page=="") {$page=1;};

是想要查看是否第一页,而你用的是超链接,那你应该用$_GET['page'],这才能取得超链接得出的值否则都是第一页,还有你查询语句的算法好想有点问题今天我才帮我的同学搞定那个分页问题,很简单的其实......

以上就是土嘎嘎小编为大家整理的php输出数据分页相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章