phpmysql分页显示(mysql水平分表后分页查询)

本文目录一览:

PHP+MYSQL怎么弄分页显示

不清楚你说的需求是不是这样的。就是想让分页只显示一部分。

1.显示后10条

echo “div class=’f_count'”;

for($i=$page;$i=$page+10;$i++){

$show=($i!=$page)?”a href=’index.php?page=”.$i.”‘$i/a”:”b$i/b”;

echo $show.” “;

}

echo “/div”;

2.显示前5条和后5条。

echo “div class=’f_count'”;

$pageprv=($page-5);

$i=$pageprv0?0:$pageprv;

for($i;$i=$pageprv+10;$i++){

$show=($i!=$page)?”a href=’index.php?page=”.$i.”‘$i/a”:”b$i/b”;

echo $show.” “;

}

echo “/div”;

公司电脑没有配置环境,不能帮你测试。对不起啦!

PHP和MYSQL查询和分页显示

!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “”

html xmlns=””

head

meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″ /

title无标题文档/title

/head

body

!–分页开始–

?php

if(isset($_GET[‘page’])) //由GET方法获得页面传入当前页数的参数

{

$page = $_GET[‘page’];

}

else

{

$page = 1;

}

$page_size = 2; //每页显示两条数据

//获取数据总量

$db_host = ‘localhost’; //数据库主机

$db_user = ‘tianchunli’;//数据库用户帐户

$db_passw = ‘58816828’; //数据库帐户密码

$db_name = ‘jiaoyou’ ;//数据库名称

//连接数据库

$conn=mysql_connect($db_host,$db_user,$db_passw) or die(“数据库连接失败!”);

//设置字符集,如utf8和gbk等, 根据数据库的字符集而定

mysql_query(“set names gb2312”);

//选定数据库

mysql_select_db($db_name,$conn) or die(‘数据库选定失败!’);

$xuesheng_xm =$_POST[xuesheng_xm];//对应姓名

$xuesheng_xb =$_POST[xuesheng_xb];//对应性别

$xuesheng_sg1=$_POST[xuesheng_sg1];//对应最低身高

$xuesheng_sg2=$_POST[xuesheng_sg2];//对应最高身高

$sql = “select * from biao1 where 1=1”;

if($xuesheng_xm !=”){

$sql .= ” and xuesheng_xm like ‘%$xuesheng_xm%’ “;

}

if($xuesheng_xb !=”){

$sql .= ” and xuesheng_xb = $xuesheng_xb “;

}

if($xuesheng_sg1 != -1 $xuesheng_sg2 != -1){

$sql .= ” and xuesheng_sg between $xuesheng_sg1 and $xuesheng_sg2 “;

}

$result=mysql_query($sql);

$total = mysql_num_rows($result);

$start=($page-1)*$pageSize;

$result = mysql_query($sql);

//echo $total;

//开始计算总页数

if($total)

{

if($total $page_size)

$page_count = 1;

if($total % $page_size)

{

$page_count = (int)($total/$page_size) + 1;

}

else

{

$page_count = $total/$page_size;

}

}

else

{

$page_count = 0;

}

//翻页链接

$turn_page = ”;

if($page == 1)

{

$turn_page .= ‘首页 | 上一页 | ‘;

}

else

{

$turn_page .= ‘a href=2.php?page=1 首页/a | a href=2.php?page=’.($page-1).’上一页/a | ‘;

}

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

{

$turn_page .= ‘下一页 | 尾页’;

}

else

{

$turn_page .= ‘a href=2.php?page=’.($page+1).’下一页/a | a href=2.php?page=’.$page_count.’尾页/a’;

}

$sql = $sql.” limit “. ($page-1)*$page_size .”, “.$page_size;

echo $sql;

$result = mysql_query($sql);

?

?php

while($row = mysql_fetch_array($result))

{

echo $row[‘xuesheng_xm’];

}

?

br /

?php echo $turn_page?

/body

/html

这个,数据查询语句根据你自己的需要改吧!我是用我自己建立的数据库

php 如何对mysql的文本分页

1、前言

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

2、原理

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

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

当前是第几页($CurrentPageID)?

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

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

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

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

第11至20条记录:select * from table limit 10,10

第21至30条记录:select * from table limit 20,10

……

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

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

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

3、简单代码

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

?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 ){ $page_count = 1; } //如果总数据量小于$PageSize,那么只有一页

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

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

}else{

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

}

}

else{

$page_count = 0;

}

// 翻页链接

$page_string = ”;

if( $page == 1 ){

$page_string .= ‘第一页|上一页|’;

}

else{

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

}

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

$page_string .= ‘下一页|尾页’;

}

else{

$page_string .= ‘a href=?page=’.($page+1).’下一页/a|a href=?page=’.$page_count.’尾页/a’;

}

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

if( $amount ){

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

$result = mysql_query($sql);

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

$rowset[] = $row;

}

}else{

$rowset = array();

}

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

?

4、OO风格代码

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

?php

// 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 ){ $this-numPages = 1; }

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

{

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

}

else

{

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

}

}

else

{

$this-numPages = 0;

}

switch ( $this-CurrentPageID )

{

case $this-numPages == 1:

$this-isFirstPage = true;

$this-isLastPage = true;

break;

case 1:

$this-isFirstPage = true;

$this-isLastPage = false;

break;

case $this-numPages:

$this-isFirstPage = false;

$this-isLastPage = true;

break;

default:

$this-isFirstPage = false;

$this-isLastPage = false;

}

if ( $this-numPages 1 )

{

if ( !$this-isLastPage ) { $this-NextPageID = $this-CurrentPageID + 1; }

if ( !$this-isFirstPage ) { $this-PreviousPageID = $this-CurrentPageID – 1; }

}

return true;

}

/***

*

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

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

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

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

*

***/

function getDataLink()

{

if ( $this-numItems )

{

global $db;

$PageID = $this-CurrentPageID;

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

$count = $this-PageSize;

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

return $link;

}

else

{

return false;

}

}

/***

*

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

*

***/

function getPageData()

{

if ( $this-numItems )

{

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

{

if ( $res-numRows() )

{

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

{

$result[] = $row;

}

}

else

{

$result = array();

}

return $result;

}

else

{

return false;

}

}

else

{

return false;

}

}

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;

}

}

return true;

}

}

?

?php

// FileName: test_pager.php

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

require “Pager.class.php”;

if ( isset($_GET[‘page’]) )

{

$page = (int)$_GET[‘page’];

}

else

{

$page = 1;

}

$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 = “首页|上一页|”;

}

else

{

$turnover = “a href=’?page=1numItems=”.$pager-numItems.”‘首页/a|a href=’?page=”.$pager-PreviousPageID.”numItems=”.$pager-numItems.”‘上一页/a|”;

}

if ( $pager-isLastPage )

{

$turnover .= “下一页|尾页”;

}

else

{

$turnover .= “a href=’?page=”.$pager-NextPageID.”numItems=”.$pager-numItems.”‘下一页/a|a href=’?page=”.$pager-numPages.”numItems=”.$pager-numItems.”‘尾页/a”;

}

?

需要说明的地方有两个:

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

?php

Class MemberPager extends Pager

{

function showMemberList()

{

global $db;

$data = $this-getPageData();

// 显示结果的代码

// ……

}

}

/// 调用

if ( isset($_GET[‘page’]) )

{

$page = (int)$_GET[‘page’];

}

else

{

$page = 1;

}

$sql = “select * from members order by id”;

$pager_option = array(

“sql” = $sql,

“PageSize” = 10,

“CurrentPageID” = $page

);

if ( isset($_GET[‘numItems’]) )

{

$pager_option[‘numItems’] = (int)$_GET[‘numItems’];

}

$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 mysql查询结果分页显示

?php

    $mysql_server_name=”localhost”;

    $mysql_username=’root’;

    $mysql_password=”;

    $mysql_database=’hp’;

    $conn=mysql_connect($mysql_server_name,$mysql_username,$mysql_password);

    @mysql_connect(“localhost”,”root”,””) or die(“数据库连接失败”);

    @mysql_select_db(“hp”) or die(“数据库不存在”);

    mysql_query(“set names utf8”);

$pagesize = $_GET[‘pagesize’]  0 ? $_GET[‘pagesize’] : 10; //默认情况下每页显示10条数据

$pagenum = $_GET[‘pagenum’]  0 ? $_GET[‘pagenum’] : 0;

$query_start = $pagesize * $pagenum;

if($_POST[‘submit’]){

$strsql_add = ”;

$strsql_add .=$_POST[‘idc’] ? ” and idc=’$_POST[idc]’ “:””;

$strsql_add .=$_POST[‘jiguihao’] ? ” and jiguihao=’$_POST[jiguihao]’ “:””;

$strsql_add .=$_POST[‘neicun’] ? ” and neicun=’$_POST[neicun]’ “:””;

$strsql_add .=$_POST[‘yingpan’] ? ” and yingpan=’$_POST[yingpan]’ “:””;

$strsql_add .=$_POST[‘xinghao’] ? ” and xinghao=’$_POST[xinghao]’ “:””;

$strsql_add .=$_POST[‘cpu’] ? ” and cpu=’$_POST[cpu]’ “:””;

$strsql_add .=$_POST[‘guishu’] ? ” and guishu=’$_POST[guishu]’ “:””;

$strsql_add .=$_POST[‘ip’] ? ” and ip=’$_POST[ip]’ “:””;

}

    $strsql=”select * from zichan where 1=1 $strsql_add limit $query_start, $pagesize”;

$result=mysql_db_query($mysql_database,$strsql,$conn);

    $row=mysql_fetch_row($result);

        $nextpage_num = $pagenum++;

$lastpage_num = ceil(count($row)/$pagesize);

  echo ‘font face=”verdana”‘;

    echo ‘table border=”1″ cellpadding=”1″ cellspacing=”2″‘;

    // 显示字段名称

    echo “/btr/b”;

    for ($i=0; $imysql_num_fields($result); $i++)

    {

      echo ‘td bgcolor=”#00FF00″b’.

      mysql_field_name($result, $i);

      echo “/b/td/b”;

    }

    echo “/tr/b”;

 // 定位到第一条记录

    mysql_data_seek($result, 0);

    // 循环取出记录

    while ($row=mysql_fetch_row($result))

    {

      echo “tr/b”;

      for ($i=0; $imysql_num_fields($result); $i++ )

      {

        echo ‘td bgcolor=”#00FF00″‘;

        echo $row[$i];

        echo ‘/td’;

      }

        echo ‘tda href=\’xiugai.php?id=’.$row[0].’\’修改/a’;

        echo ‘/td’;

        echo ‘tda href=”javascript:void(0)” onclick=”if(window.confirm(\’确认删除?\’)){window.location.href=\’del.php?id=’.$row[0].’\’}”删除/a’;

        echo ‘/td’;

      echo “/tr/b”;

    }

    echo “/table/b”;

    echo “/font”;

    // 释放资源

    mysql_free_result($result);

    // 关闭连接

    mysql_close($conn);

   

?

html页面要增加的参数:

首页 增加 pagenum=0 或者 不加

下一页 pagenum= $nextpage_num

尾页 pagenum= $lastpage_num

原创文章,作者:VFXTN,如若转载,请注明出处:https://www.506064.com/n/325369.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
VFXTN的头像VFXTN
上一篇 2025-01-13 13:24
下一篇 2025-01-13 13:24

相关推荐

  • jQuery Datatable分页中文

    jQuery Datatable是一个非常流行的数据表插件,它可以帮助您快速地在页面上创建搜索、过滤、排序和分页的数据表格。不过,它的默认设置是英文的,今天我们就来探讨如何将jQu…

    编程 2025-04-29
  • uniapp分页第二次请求用法介绍

    本文将从多个方面对uniapp分页第二次请求进行详细阐述,并给出对应的代码示例。 一、请求参数的构造 在进行分页请求时,需要传递的参数体包含当前页码以及每页显示的数据量。对于第二次…

    编程 2025-04-27
  • 如何提高自己在编程领域的技能水平

    作为一个编程开发工程师,在不断学习、提高自己的技能水平是必不可少的。本文将从多个方面,分享一些提高编程技能的方法和建议。 一、积累实践经验 编程领域是一个需要经验积累的领域。可以通…

    编程 2025-04-27
  • Flex布局水平居中详解

    在网页开发中,常常需要对网页元素进行居中操作,而其中水平居中是最为常用和基础的操作。Flex布局是一个强大的排版方式,为水平居中提供了更为灵活和便利的解决方案。本文将从多个方面对F…

    编程 2025-04-25
  • Mybatis Plus分页失效问题及解决方案

    一、分页失效的原因 Mybatis Plus是一款优秀的ORM框架,使用简单方便。但是,在使用它进行分页时,有时会出现分页失效的问题,原因可能有以下几个方面: 1、Mybatis …

    编程 2025-04-24
  • Mybatis分页查询SQL详解

    一、Mybatis分页查询介绍 Mybatis是一款优秀的持久层框架,支持动态SQL和参数映射等功能,而分页查询也是其中非常重要的功能之一。 分页查询是指将大量的数据按照需要的记录…

    编程 2025-04-23
  • Java 手动分页的实现

    一、什么是手动分页 手动分页是指在对一份文档进行分页时需要手动进行制定分页标记的过程。在Java中,手动分页可以通过计算、遍历等方式实现,而实现手动分页的主要目的是方便用户对数据进…

    编程 2025-04-23
  • r7 4750u相当于英特尔什么水平

    在当前市场上,r7 4750u是一款比较受欢迎的处理器,那么它相当于英特尔什么水平呢?从多个方面来分析。 一、CPU性能方面 首先,我们先来看看r7 4750u在CPU性能方面与英…

    编程 2025-04-22
  • Kubernetes水平自动扩展(HPA)的综述

    在容器和云原生应用程序生态系统中,Kubernetes已经成为一个广泛使用的容器编排工具。水平自动扩展(HPA)是Kubernetes中的一个很有用的功能,它可以根据CPU利用率或…

    编程 2025-04-12
  • C# List分页 – 实现数据分页的方法

    一、什么是数据分页 数据分页是指将一定量的数据分成多个页面来显示,从而降低页面的加载时间和用户对数据的阅读难度。在Web开发中,数据分页是常用的数据处理方式之一。 而C#语言中的L…

    编程 2025-03-12

发表回复

登录后才能评论