ホームページ バックエンド開発 PHPチュートリアル PHP ページング表示メソッドの解析 (PHP 一般ページング クラスを使用)

PHP ページング表示メソッドの解析 (PHP 一般ページング クラスを使用)

Jun 01, 2018 pm 01:50 PM
php 分析する ユニバーサル

この記事では、PHP のページング表示の方法を主に紹介し、PHP データベースのクエリとコンテンツの簡単な操作スキルと HTML ページングの表示をサンプルの形で組み合わせています。必要な方は参考にしてください。参照できます

この記事の例では、PHP でページング表示する方法について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

<?php
header("content-type:text/html;charset=utf-8");
$currentpage = 1;
if(isset($_GET[&#39;page&#39;]))
  $currentpage = $_GET[&#39;page&#39;];
//连接数据库
$link = mysql_connect("localhost","root","") or die(&#39;连接失败&#39;);
mysql_select_db(&#39;myschool&#39;);
mysql_query(&#39;set names utf8&#39;);
$sql ="SELECT count(*) as &#39;count&#39; from student";//查询记录的sql语句
$result = mysql_query($sql);
$arr = mysql_fetch_array($result);
$count = $arr[&#39;count&#39;];
$pagesize = 3;
$pages = ceil($count/$pagesize);//共多少页
$prepage = $currentpage -1;
if($prepage<=0)
  $prepage=1;
$nextpage = $currentpage+1;
if($nextpage >= $pages){
 $nextpage = $pages;
}
$start =($currentpage-1) * $pagesize;//起始位置
$sql = "SELECT * from student limit $start,$pagesize";
echo $sql;
// $sql = "select * from student";
$result = mysql_query($sql);
?>
<!-- html部分 -->
<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
</head>
<body>
<table border="1">
 <tr>
 <td>学号</td>
 <td>姓名</td>
 <td>性别</td>
 <td>年龄</td>
 </tr>
<?php while($arr=mysql_fetch_array($result)){ ?>
 <td><?php echo $arr[&#39;number&#39;]; ?></td>
 <td><?php echo $arr[&#39;name&#39;]; ?></td>
 <td><?php echo $arr[&#39;sex&#39;]; ?></td>
 <td><?php echo $arr[&#39;age&#39;]; ?></td>
 </tr>
<?php } ?>
 </table>
 <a href="<?php echo $_SERVER[&#39;PHP_SELF&#39;].&#39;?page=&#39;.$prepage; ?>" rel="external nofollow" >上一页</a>  <a href="<?php echo $_SERVER[&#39;PHP_SELF&#39;].&#39;?page=&#39;.$nextpage; ?>" rel="external nofollow" >下一页</a>
</body>
</html>
ログイン後にコピー

注: ファイル内に php と html の 2 種類がある場合、php ファイルには終了タグが必要です

添付ファイル: PHP の一般的なページング クラスと使用法:

Page.class.php ファイル:

<?php
/**
 * 分页类
 *
 * 调用方式:
 * $p=new Page(总条数,显示页数,当前页码,每页显示条数,[链接]);
 * print_r($p->getPages()); //生成一个页码数组(键为页码,值为链接)
 * echo $p->showPages(1);  //生成一个页码样式(可添加自定义样式)
 *
 */
/*
总条数,需要显示的页数,当前页,每页显示的条数,连接
生成一个一维数组,键为页码 值为连接
返回一个生成好样式的页码(并且可以根据自己需要添加样式)
默认样式 共45条记录,每页显示10条,当前第1/4页 [首页] [上页] [1] [2] [3] .. [下页] [尾页]
*/
class Page{
  protected $count;    //总条数
  protected $showPages;  //需要显示的页数
  protected $countPages; //总页数
  protected $currPage;  //当前页
  protected $subPages;  //每页显示条数
  protected $href;    //连接
  protected $page_arr=array();  //保存生成的页码 键页码 值为连接
  /**
   * __construct 构造函数(获取分页所需参数)
   * @param int $count   总条数
   * @param int $showPages 显示页数
   * @param int $currPage 当前页数
   * @param int $subPages 每页显示数量
   * @param string $href  连接(不设置则获取当前URL)
   */
  public function __construct($count,$showPages,$currPage,$subPages,$href=&#39;&#39;){
    $this->count=$count;
    $this->showPages=$showPages;
    $this->currPage=$currPage;
    $this->subPages=$subPages;
    //如果链接没有设置则获取当前连接
    if(empty($href)){
      $this->href=htmlentities($_SERVER[&#39;PHP_SELF&#39;]);
    }else{
      $this->href=$href;
    }
    $this->construct_Pages();
  }
  /**
   * getPages 返回页码数组
   * @return array 一维数组 键为页码 值为链接
   */
  public function getPages(){
    return $this->page_arr;
  }
  /**
   * showPages 返回生成好的页码
   * @param int $style 样式
   * @return string   生成好的页码
   */
  public function showPages($style=1){
    $func=&#39;pageStyle&#39;.$style;
    return $this->$func();
  }
  /**
   * pageStyle1 分页样式(可参照这个添加自定义样式 例如pageStyle2())
   * 样式 共45条记录,每页显示10条,当前第1/4页 [首页] [上页] [1] [2] [3] .. [下页] [尾页]
   * @return string
   */
  protected function pageStyle1(){
    /* 构造普通模式的分页
    共4523条记录,每页显示10条,当前第1/453页 [首页] [上页] [1] [2] [3] .. [下页] [尾页]
    */
    $pageStr=&#39;共&#39;.$this->count.&#39;条记录,每页显示&#39;.$this->subPages.&#39;条&#39;;
    $pageStr.=&#39;当前第&#39;.$this->currPage.&#39;/&#39;.$this->countPages.&#39;页 &#39;;
    $_GET[&#39;page&#39;] = 1;
    $pageStr.=&#39;<span>[<a href="&#39;.$this->href.&#39;?&#39;.http_build_query($_GET).&#39;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >首页</a>] </span>&#39;;
    //如果当前页不是第一页就显示上页
    if($this->currPage>1){
      $_GET[&#39;page&#39;] = $this->currPage-1;
      $pageStr.=&#39;<span>[<a href="&#39;.$this->href.&#39;?&#39;.http_build_query($_GET).&#39;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >上页</a>] </span>&#39;;
    }
    foreach ($this->page_arr as $k => $v) {
      $_GET[&#39;page&#39;] = $k;
      $pageStr.=&#39;<span>[<a href="&#39;.$v.&#39;" rel="external nofollow" >&#39;.$k.&#39;</a>] </span>&#39;;
    }
    //如果当前页小于总页数就显示下一页
    if($this->currPage<$this->countPages){
      $_GET[&#39;page&#39;] = $this->currPage+1;
      $pageStr.=&#39;<span>[<a href="&#39;.$this->href.&#39;?&#39;.http_build_query($_GET).&#39;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >下页</a>] </span>&#39;;
    }
    $_GET[&#39;page&#39;] = $this->countPages;
    $pageStr.=&#39;<span>[<a href="&#39;.$this->href.&#39;?&#39;.http_build_query($_GET).&#39;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >尾页</a>] </span>&#39;;
    return $pageStr;
  }
  /**
   * construct_Pages 生成页码数组
   * 键为页码,值为链接
   * $this->page_arr=Array(
   *         [1] => index.php?page=1
   *         [2] => index.php?page=2
   *         [3] => index.php?page=3
   *         ......)
   */
  protected function construct_Pages(){
    //计算总页数
    $this->countPages=ceil($this->count/$this->subPages);
    //根据当前页计算前后页数
    $leftPage_num=floor($this->showPages/2);
    $rightPage_num=$this->showPages-$leftPage_num;
    //左边显示数为当前页减左边该显示的数 例如总显示7页 当前页是5 左边最小为5-3 右边为5+3
    $left=$this->currPage-$leftPage_num;
    $left=max($left,1); //左边最小不能小于1
    $right=$left+$this->showPages-1; //左边加显示页数减1就是右边显示数
    $right=min($right,$this->countPages); //右边最大不能大于总页数
    $left=max($right-$this->showPages+1,1); //确定右边再计算左边,必须二次计算
    for ($i=$left; $i <= $right; $i++) {
      $_GET[&#39;page&#39;] = $i;
      $this->page_arr[$i]=$this->href.&#39;?&#39;.http_build_query($_GET);
    }
  }
}
?>
ログイン後にコピー

使用例demo.php:

<?php
/**
 * demo
 */
header("content-type:text/html;charset=utf8");
include(&#39;Page.class.php&#39;);  //引入类
//$p=new Page(总条数,显示页数,当前页码,每页显示条数,[链接]);
//连接不设置则为当前链接
$page=isset($_GET[&#39;page&#39;]) ? $_GET[&#39;page&#39;] : 1;
$p=new Page(100,4,$page,8);
//生成一个页码数组(键为页码,值为链接)
echo "<pre class="brush:php;toolbar:false">";
print_r($p->getPages());
//样式 共45条记录,每页显示10条,当前第1/4页 [首页] [上页] [1] [2] [3] .. [下页] [尾页]
echo $p->showPages(1);
ログイン後にコピー

関連する推奨事項: PHPから画像サイズを圧縮してjpg形式に変換する方法例


以上がPHP ページング表示メソッドの解析 (PHP 一般ページング クラスを使用)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP データベースの操作 CakePHP データベースの操作 Sep 10, 2024 pm 05:25 PM

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP のロギング CakePHP のロギング Sep 10, 2024 pm 05:26 PM

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

See all articles