アイテムを表示する

広告

ナビゲーションリンクの作成や現在のページ数の取得方法が分かりましたので、ページ毎にアイテムを表示させてみます。アイテムを表示させるには、全てのアイテムをPagerクラスのオブジェクトを作成する時の「itemData」オプションに全て設定しておく方法もありますが、ここでは総アイテム数だけを設定し、表示すべきアイテムは別で管理する方法を取ります。

今回はサンプルとして11枚ある画像を3枚ずつ分割して表示させるようにしてみます。この場合、「totalItems」は「11」、「pePages」は「3」となります。

$options = array(
  "totalItems" => 11,
  "perPage" => 3
);

$pager =& Pager::factory($options);

画像ファイル名は「no1.png」から「no11.png」としました。ファイル名は「no」+「インデックス番号」+「.png」となります。

1ページ目を表示した時には「no1.png」「no2.png」「no3.png」を表示し、2ページ目を表示した時には「no4.png」「no5.png」「no6.png」を表示します。その為、ページが表示されるたびに表示する画像ファイルのインデックスを取得には次のように計算します。

(ページ番号 - 1) × 1ページに表示されるアイテム数 + 1
(ページ番号 - 1) × 1ページに表示されるアイテム数 + 2
(ページ番号 - 1) × 1ページに表示されるアイテム数 + 3

そこでページが表示される度に次のようなコードを実行します。

$currentPageID = $pager -> getCurrentPageID();
$index = ($currentPageID - 1) * 3 + 1;

print("<p>");
for($i = $index; $i < $index + 3 ; $i++){
  if ($i <= 11){
    print('<img src="./img/no'.$i.'.png">');
    print(" ");
  }
}
print("</p>");

ページ数からインデックス番号を取得した後で、1ページに表示するアイテム数だけfor文で繰り返しを行います。その中ではインデックス番号から画像ファイル名を作成して画面に表示させています。

最後のページだけ1ページに表示されるアイテム数よりも少なくなる場合があるのでif文を使って総アイテム数を超えていないかどうかをチェックしています。

サンプルプログラム

では簡単なサンプルで実際に試してみます。

sample6-1.php

<html>
<head><title>PHP TEST</title></head>
<body>

<p>テスト</p>

<?php
require_once("Pager/Pager.php");

$totalItems = 11;
$perPage = 3;

$options = array(
  "totalItems" => $totalItems,
  "perPage" => $perPage
);

$pager =& Pager::factory($options);
$navi = $pager -> getLinks();
print($navi["all"]);

$currentPageID = $pager -> getCurrentPageID();
$index = ($currentPageID - 1) * $perPage + 1;

print("<p>");
for($i = $index; $i < $index + $perPage ; $i++){
  if ($i <= $totalItems){
    print('<img src="./img/no'.$i.'.png">');
    print(" ");
  }
}
print("</p>");
?>

</body>
</html>

上記をWWWサーバに設置しブラウザで見てみると下記のように表示されます。

アイテムを表示する

他のページをクリックすると次のように表示されます。

アイテムを表示する

アイテムを表示する

( Written by Tatsuo Ikura )