読者です 読者をやめる 読者になる 読者になる

ITの隊長のブログ

ITの隊長のブログです。いや、まだ隊長と呼べるほどには至っていないけど、日々がんばります。CakePHPとPlayFrameworkを使って仕事しています。最近はAngular2をさわりはじめたお(^ω^ = ^ω^)

PHPでPaginate

PHP SQL

スポンサードリンク

一回ドットインストールの動画を見て理解していたつもりだったけど、昨日やってみると全然覚えてなかったという話。フレームワークに慣れすぎってのも問題ですね。。。

dotinstall.com

github.com

とりあえずもう一度見なおして、即席でクラスを用意してみました。

Paginateで大切と思うのは、SQLの理解(そもそもlimit offsetの書き方を覚えていなかった。。。orz)

mysql> SELECT * FROM table_name limit 0, 5;

上のSQLは、「1から5までのレコードを取得する」SQLです。この123と増やしていくと、記事が6〜10(2ページ目)、11〜15(3ページ目)、16〜20(4ページ目)、、、と取得できるようになる。動画内ではoffsetと呼ばれていました。

また大切なことがもうひとつ。このoffsetを決める処理。

<?php
...
$offset = $this->contentsPerPage * ($this->page - 1);

$this->contentsPerPageは1ページにいくつ取得して表示する任意の値です(今回1ページに5記事表示したいので5と書いています)。

$this->pageは現在のページ数です。デフォルトで1を入れているので、マイナスの値になることはありません。

これを理解すればPaginateの処理は大丈夫だはず。