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/zh-hk/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

發表回復

登錄後才能評論