PHP ページングのアイデアと ZF_PHP チュートリアルでの使用
半分の成功を得るには、2 つの変数を取得するだけで済みます:
各ページに表示されるレコードの数 $pageSize
テーブル内のデータの合計量 $rowCount
上記 2 つの変数を使用して、合計数を取得できます。ページ数 $pageCount
その後、for ループを通して、例えば合計 13 ページある場合、for ループを通してページ数を出力するのは簡単です
上記の for ループは
page 1、page 2、page などを出力します。 3、ページ 4、ページ 5、ページ 6 、ページ 7、ページ 8、ページ 9、ページ 10、ページ 11、ページ 12、ページ 13
一度に 10 ページだけを表示したい場合はどうすればよいでしょうか?たとえば、ページ 1 ~ 10、11 ~ 20 です
これは非常に簡単で、for ループを少し変更するだけで実現できます
たとえば、現在のページ $pageNow が 1 ~ 10 の場合、$step= 0
現在のページ$ pageNowが11から20の間の場合、$step=10
現在のページ$pageNowが21から30の間の場合、$step=20
具体的な実装プロセスのコードを参照すると、簡単にfor ループで毎回 10 だけが表示される状況を実現するには、2 番目の条件に 10 を追加するだけでよいことがわかります。次に、$pageSize を取得するにはどうすればよいでしょうか。 2つの変数と$rowCountの値について教えてください。
$pageSizeはプログラマ自身が指定でき、$rowCountはSQL文を実行する簡単な関数を使用して取得できます
* $sql ステートメント: ① データを取得する ② 総レコード数を取得する
*/
class fenyePage{
public $pageSize=5;// 各ページに表示される番号 --> プログラマによって指定
public $rowCount;// これはデータベースから取得されます (SELECT として形成されます) COUNT(id) FROM TABLE) は、レコードの総数を保存するために使用されます
public $pageNow;//$_GET['page'] によって取得され、現在のページ番号を保存するために使用されます
public $pageCount;//計算され、使用されますto save 合計で何ページあるか
public $res_arr;//ページに表示するデータを保存するために使用します(SELECT * FROM TABLE LIMIT 0,10で取得したデータを保存するなど)
public $nav;/ /どのページとどのページを表示しますか?
/**
* 現在のページのハイパーリンクを取得します
*
* @author Xiaofei 2012/5/30
*/
public function getLink()
{
$this->nav=''; this->rowCount/$this ->pageSize));
$step= フロア(($this->pageNow-1)/10)*10+1;
if ($this->pageNow>10) )
{
$this-> ;nav.=" << ";/ /全体的に 10 ページごとに送ります
}
if ($this->pageNow!=1)
{
$this->nav.=" 前のページ ";
}
if ($this->pageNow!=1)
{
$this->nav.=" ホームページ ";
}
for ($start=$step;$start<$step+10 && $start<=$this-> ;pageCount;$start++)
{
$this->nav.="".$start." ";
}
if ($this->pageNow!=$this->pageCount)
{
$this->nav.="最後のページ ";
}
if ($this->pageNow!=$this->pageCount)
{
$this->nav.=" < ;a href='index.php?page=".($this->pageNow+1)."'>次のページ";
}
if ($this->pageCount>10 && $this- >pageNow<$this->pageCount-8){
$this->nav.=" >>
?>
zfでデータベースを操作する作業はモデル層で完結するので、対応するテーブルモデルに$rowCountの値を取得する関数を入れます
例:注文テーブルを操作します
なので全部表示したいときorder 情報を表示する際には、orderクラスのshoworder()メソッドで$rowCountの値を取得し、pagingクラスの$rowCount属性に渡します。同様にページに表示するデータ情報も渡します。クラス内の $res_arr 属性
このようにして、ページング クラス (fenyePage) を簡単にインスタンス化し、パラメーターを介して showorder() 関数に渡すことができ、関数は次のアクションを完了します。
① ページに表示する情報
② テーブル内のレコードは合計何件あるか
* 指定されたユーザー ID に従って、ユーザーの履歴注文記録をクエリします
*
* @author Xiaofei 2012/5/30
* @param $id ユーザー ID
* @param $fenye ページング処理用にインスタンス化されたオブジェクト
* @todo $sql1 ステートメント "select * from table where * 制限 0,10" この SQL ステートメントは主に、データベース内のデータを取得してビュー レイヤーに表示するために使用されます
* @todo $sql2 ステートメント "select count( id) from table" この SQL ステートメントはデータの総量を取得するために使用されます
*/
public function showorder($id=null,$fenye=null)
{
$db = $this->getAdapter();
$select=$db->select(); 'o' => '注文'),array( 'o.id','o.user_id','o.user_name','o.food_name','o.food_price','o.order_time',' o.order_state'));
if ($id! =null){
$select->where('o.user_id=?',$id);
}
$select->join(array(') d'=>'部門'),'o.dep_id = d.id','d.dep_name');
if($fenye!=null){
$select->limit($fenye-> pageSize,($fenye->pageNow-1)* $fenye->pageSize);
$sql1=$select->__toString();
//この SQL ステートメントは主に合計データを計算するために使用されます。 volume
$sql2="SELECT COUNT(id) FROM `order `";
$fenye->res_arr=$db->fetchAll($sql1);//表示するデータを$res_arr属性に格納簡単に呼び出せるページング クラス
$rowCount=$db->fetchAll ($sql2);//テーブル内のデータの総量をページング クラスの rowCount 属性に保存します
$fenye->rowCount=$rowCount [0]['COUNT(id)'];
$fenye->getLink();
return $fenye->res_arr;
この時点でページングクラス関数が実装されました: WEB開発_シャオフェイ
http://www.bkjia.com/PHPjc/325428.html
www.bkjia.com

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











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

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

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

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

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

2025年、グローバルデジタル仮想通貨取引プラットフォームは、トランザクションのボリューム、セキュリティ、ユーザーエクスペリエンスなどの指標に基づいて、2025年に世界のトップ10のデジタル通貨取引プラットフォームを激しく競争しています。 OKXは、強力な技術的強さとグローバルな運用戦略で最初にランクされており、Binanceは高流動性と低料金に密接に続きます。 Gate.io、Coinbase、Krakenなどのプラットフォームは、それぞれの利点がある最前線にいます。このリストには、Huobi、Kucoin、Bitfinex、Crypto.com、Geminiなどの取引プラットフォームがそれぞれ独自の特徴がありますが、投資は注意する必要があります。プラットフォームを選択するには、セキュリティ、流動性、料金、ユーザーエクスペリエンス、通貨選択、規制コンプライアンスなどの要因を考慮し、合理的に投資する必要があります
