非常に使いやすい Zend Framework ページング クラス_PHP チュートリアル
ここで、非常に便利な Zend Framework ページング クラスを共有したいと思います
具体的な効果は、このサイトのページング効果に見られます。CSS スタイルは、個人のデザインセンスに応じて変更できます。
ここでは、このクラスの使用方法を示す例を次のように示します。
IndexController.php、Action に次のコードを記述します:
; const PERPAGENUM = 4 //各ページに表示されるアイテムの数
;
パブリック関数indexAction()
{
// $this->_blogModel がブログ Model をインスタンス化しました
// $rows -> 表示されているデータの総エントリ数を取得します
$rows = $this->_blogModel->getTotalRows();
If($pageNum = $this->getRequest()->getParam('page')) {
//値が渡された場合、最初の最初のページを上書きします
$this->_curPage = $pageNum;
}
//データテーブルのデータをフロントエンドに送信
$this->view->blogInfo = $this->_blogModel->getBlogInfo(
) 持っている );
//ページングクラスをインスタンス化してフロントエンドに渡します
$this->view->pagebar = $this->displayPageBar($rows);
}
プライベート関数displayPageBar($totalRows)
{
$Pager = new Zend_Pagination($totalRows,self::PERPAGENUM);
$Pager->getNavigation();
を返す }
Return $this->fetchAll('1 = 1', 'blog_id desc', $perPageNum, $limit)
->toArray();
}
パブリック関数 getTotalRows($where = '1=1')
{
$this->fetchAll($where)->count();
を返す }
コードをコピーします
クラス Zend_Pagination
{
Private $_navigationItemCount = 6 //ナビゲーション バーにはナビゲーション ページの総数が表示されます
; Private $_pageSize = null //ページごとのアイテム数
; private $_align = "right" // ナビゲーションバーの表示位置
; Private $_itemCount = null //アイテムの総数
; Private $_pageCount = null //総ページ数
; Private $_currentPage = null //現在のページ
; private $_front = null //フロントエンドコントローラー
; Private $_PageParaName = "ページ" // ページパラメータ名
;
Private $_firstPageString = "|<<" //ナビゲーションバーの最初のページに表示される文字
Private $_nextPageString = ">>" //ナビゲーションバーの前のページに表示される文字
; Private $_previousPageString = "<<" //ナビゲーションバーの次のページに表示される文字
; Private $_lastPageString = ">>|" //ナビゲーションバーの最後のページに表示される文字
; Private $_splitString = " | " //ページ番号間の区切り文字
;
パブリック関数 __construct($itemCount, $pageSize)
{
If (!is_numeric($itemCount) || (!is_numeric($pageSize))) {
新しい例外をスローします("ページネーション エラー: 数値ではありません");
}
$this->_itemCount = $itemCount;
$this->_pageSize = $pageSize;
$this->_front = Zend_Controller_Front::getInstance();
$ this-&gt; $page = $this->_front->getRequest()->getParam($this->_PageParaName);
If (empty($page) || (!is_numeric($page))) {
// 空か数値ではない場合、現在のページを 1 に設定します
$this->_currentPage = 1;
} else {
if ($page $page = 1;
}
If ($page > $this->_pageCount) {
$page = $this->_pageCount;
}
$this->_currentPage = $page;
}
}
パブリック関数 getCurrentPage()
{
return $this->_currentPage;
}
パブリック関数 getNavigation()
{
$navigation = '
// 現在のページはどの列にありますか? $pageCote = ceil($this->_currentPage / ($this->_navigationItemCount - 1)) - 1; //合計ページング列
$pageCoteCount = ceil($this->_pageCount / ($this->_navigationItemCount - 1));
// ページングバーの開始ページ
$pageStart = $pageCote * ($this->_navigationItemCount -1) + 1; $pageEnd = $pageStart + $this->_navigationItemCount - 1; $pageEnd = $pageStart + $this->_navigationItemCount - 1;
If($this->_pageCount < $pageEnd) {
$pageEnd = $this->_pageCount;
}
$navigation .= "合計: {$this->_itemCount} アイテム 合計 {$this->_pageCount} ページ n ";
if($ pagecote&gt; 0){ $navigation .= '$this->_firstPageString }
If($this->_currentPage != 1) { //前のページへのナビゲーション
$navigation .= '$this->_previousPageString }その他{
$navigation .= $this->_previousPageString . }
($ pagestart&lt; = $ pageend) {
If ($pageStart == $this->_currentPage) {
$navigation .= "$pageStart" . } else {
$navigation .= ' . $this->createHref($this->_currentPage+1)
. " \"="">$this->_nextPageString ";
}else{
$navigation .= $this->_nextPageString;
}
if ($pageCote < $pageCoteCount-1) { //未页导航
$navigation .= '$this->_lastPageString ";
}
$navigation .= ' 到 ';
$navigation .= " 页
$navigation を返します;
}
パブリック関数 getNavigationItemCount()
{
return $this->_navigationItemCount;
}
パブリック関数 setNavigationItemCoun($navigationCount)
{
if(is_numeric($navigationCount)) {
$this->_navigationItemCount = $navigationCount;
}
}
パブリック関数 setFirstPageString($firstPageString)
{
$this->_firstPageString = $firstPageString;
}
パブリック関数 setPreviousPageString($previousPageString)
{
$this->_previousPageString = $previousPageString;
}
パブリック関数 setNextPageString($nextPageString)
{
$this->_nextPageString = $nextPageString;
}
パブリック関数 setLastPageString($lastPageString)
{
$this->_lastPageString = $lastPageString;
}
パブリック関数 setAlign($align)
{
$align = strto lower($align);
if ($align == "中心") {
$this->_align = "中心";
elseif ($align == "右") {
$this->_align = "右";
} その他 {
$this->_align = "左";
}
}
パブリック関数 setPageParamName($pageParamName)
{
$this->_PageParaName = $pageParamName;
}
パブリック関数 getPageParamName()
{
$this->_PageParaName を返す;
}
プライベート関数 createHref($targetPage = null)
{
$params = $this->_front->getRequest()->getParams();
$module = $params["モジュール"];
$controller = $params["コントローラー"];
$action = $params["アクション"];
$targetUrl = $this->_front->getBaseUrl()
。 "/$モジュール/$コントローラー/$アクション";
foreach ($params as $key => $value)
{
if($key != "コントローラー" && $key != "モジュール"
&& $key != "アクション" && $key != $this->_PageParaName) {
$targetUrl .= "/$key/$value";
}
}
If (isset($targetPage)) { //対象ページを指定
$targetUrl .= "/$this->_PageParaName/$targetPage";
} else {
$targetUrl .= "/$this->_PageParaName/";
}
return $targetUrl;
}
}
これは Mysql の制限オフセットの簡単なレビューです
データベース テーブル blog に 13 個のデータがあるとします。
ステートメント 1: ブログの制限 9、4 から * を選択します
ステートメント 2: ブログ制限 4 オフセット 9 から * を選択します
//ステートメント 1 と 2 は両方ともテーブル blog の行 10、11、12、および 13 を返します
//ステートメント 1 の 9 は、テーブルの 10 行目から開始して 4 行を返すことを意味します
//ステートメント 2 の 4 は 4 行を返すことを意味し、オフセット 9 はテーブルの 10 行目から開始することを意味します
次のステートメントはページング効果を示しています:
ステートメント 3: select * from blog limit ($this->_curPage - 1)* self::PERPAGENUM, self::PERPAGENUM;
ステートメント 4: select * from ブログ制限 self::PERPAGENUM offset ($this->_curPage - 1) * self::PERPAGENUM;

ホット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)

ホットトピック

開発者とエンド ユーザーが Windows 上で最新バージョンのアプリケーションを実行するには、.NET Framework 4 が必要です。しかし、.NET Framework 4 のダウンロードとインストール中に、多くのユーザーから、インストーラーが途中で停止し、「ダウンロードがエラー コード 0x800c0006 で失敗したため、.NET Framework 4 はインストールされていません」というエラー メッセージが表示されるという苦情が寄せられました。デバイスに .NETFramework4 をインストールしているときにもこの問題が発生する場合は、正しい場所にいます。

Windows 11 または Windows 10 PC でアップグレードまたはアップデートの問題が発生すると、通常、失敗の背後にある実際の理由を示すエラー コードが表示されます。ただし、エラー コードが表示されずにアップグレードまたはアップデートが失敗すると、混乱が生じることがあります。便利なエラー コードを使用すると、問題の場所が正確にわかるので、修正を試みることができます。ただし、エラー コードが表示されないため、問題を特定して解決することが困難になります。エラーの背後にある理由を見つけるだけでも多くの時間がかかります。この場合、Microsoft が提供する SetupDiag という専用ツールを使用すると、エラーの背後にある本当の理由を簡単に特定できます。
![SCNotification が動作を停止しました [問題を解決する 5 つのステップ]](https://img.php.cn/upload/article/000/887/227/168433050522031.png?x-oss-process=image/resize,m_fill,h_207,w_330)
Windows ユーザーは、コンピュータを起動するたびに「SCNotification は動作を停止しました」というエラーに遭遇する可能性があります。 SCNotification.exe は Microsoft システム通知ファイルであり、アクセス許可エラーやネットワーク障害が原因で PC を起動するたびにクラッシュします。このエラーは、問題のあるイベント名でも知られています。したがって、これは SCNotification が動作を停止したということではなく、バグ clr20r3 として認識される可能性があります。この記事では、SCNotification が動作を停止した問題を修正して再び悩まされないようにするために必要なすべての手順を説明します。 SCNotification.eとは何ですか

Microsoft.NET バージョン 4.5.2、4.6、または 4.6.1 をインストールしている Microsoft Windows ユーザーが、将来の製品更新を通じて Microsoft にフレームワークをサポートさせることを希望する場合は、新しいバージョンの Microsoft Framework をインストールする必要があります。 Microsoft によると、3 つのフレームワークはすべて 2022 年 4 月 26 日にサポートを終了します。サポート期限が終了すると、製品は「セキュリティ修正またはテクニカル サポート」を受けられなくなります。ほとんどのホーム デバイスは、Windows アップデートを通じて最新の状態に保たれます。これらのデバイスには、.NET Framework 4.8 などの新しいバージョンのフレームワークがすでにインストールされています。自動的に更新されないデバイスは、

Windows 11 に KB5012643 をインストールしたユーザーに影響を与える新しいセーフ モードのバグについてお話ししてから 1 週間が経過しました。このやっかいな問題は、Microsoft が発売日に投稿した既知の問題のリストには載っていなかったので、誰もが驚きました。さて、事態がこれ以上悪化するはずはないと思ったそのとき、Microsoft は、この累積的な更新プログラムをインストールしたユーザーに別の爆弾を投下します。 Windows 11 Build 22000.652 はさらなる問題を引き起こす そこで同社は、Windows 11 ユーザーに対し、一部の .NET Framework 3.5 アプリケーションの起動と使用に問題が発生する可能性があると警告しています。おなじみですね?でも驚かないでください

Zend Framework でのアクセス許可制御に ACL (AccessControlList) を使用する方法 はじめに: Web アプリケーションでは、アクセス許可制御は重要な機能です。これにより、ユーザーはアクセスを許可されたページと機能にのみアクセスできるようになり、不正アクセスが防止されます。 Zend フレームワークは、ACL (AccessControlList) コンポーネントを使用してアクセス許可制御を実装する便利な方法を提供します。この記事では、Zend Framework で ACL を使用する方法を紹介します。

PHP 実装フレームワーク: ZendFramework 入門チュートリアル ZendFramework は、PHP によって開発されたオープン ソースの Web サイト フレームワークであり、現在 ZendTechnologies によって保守されています。ZendFramework は、MVC デザイン パターンを採用し、Web2.0 アプリケーションと Web サーブの実装に役立つ一連の再利用可能なコード ライブラリを提供します。 。 ZendFramework は PHP 開発者に非常に人気があり、尊敬されており、幅広い機能を備えています。

12月9日のニュースによると、Cooler Masterは最近、台北コンピューティングショーでのデモンストレーションイベントで、ノートブックモジュラーソリューションプロバイダーのFrameworkと協力して、ミニシャーシキットをデモしました。このキットのユニークな点は、マザーボードと互換性があり、マザーボードを取り付けることができることです。フレームワークノートから。現在、この製品は市場で販売が開始されており、価格は39ドル、現在の為替レートで約279元に相当します。このシャーシキットの型番は「frameWORKMAINBOARDCASE」となります。デザイン面では、わずか297x133x15mmという究極のコンパクトさと実用性を実現しています。そのオリジナルのデザインは、フレームワーク ノートブックにシームレスに接続できるようにすることです。
