ユーザーにアクセスを許可したい多くのレコードを保持する MySQL テーブルがあります。テーブル全体をページにダンプしたくないので、一度に 25 レコードに分割する必要があるため、ページ インデックスが必要です。他のページで見たことがあるかもしれませんが、ページの下部では次のようになっています。
< 1 2 3 4 5 6 7 8 9 >
たとえば、ユーザーが「4」リンクをクリックすると、ページが更新され、オフセットが移動します (4 ページ x 25 レコード)。これが私がすでに持っているものです:
function CreatePageIndex($ItemsPerPage, $TotalNumberOfItems, $CurrentOffset, $URL, $URLArguments = array())
{
foreach($URLArguments as $Key => $Value)
{
if($FirstIndexDone == false)
{
$URL .= sprintf("?%s=%s", $Key, $Value);
$FirstIndexDone = true;
}
else
{
$URL .= sprintf("&%s=%s", $Key, $Value);
}
}
Print("<div id=\"ResultsNavigation\">");
Print("Page: ");
Print("<span class=\"Links\">");
$NumberOfPages = ceil($TotalNumberOfItems / $ItemsPerPage);
for($x = 0; $x < $NumberOfPages; $x++)
{
if($x == $CurrentOffset / $ItemsPerPage)
{
Print("<span class=\"Selected\">".($x + 1)." </span>");
}
else
{
if(empty($URLArguments))
{
Print("<a href=\"".$URL."?Offset=".$x * $ItemsPerPage."\">".($x + 1)."</a> ");
}
else
{
Print("<a href=\"".$URL."&Offset=".$x * $ItemsPerPage."\">".($x + 1)."</a> ");
}
}
}
Print("</span>");
Print(" (".$TotalNumberOfItems." results)");
Print("</div>");
}
明らかに、このコードは動的インデックスを作成しません。使用可能なすべてのページのインデックス全体をページの下部にダンプするだけです。私が必要としているのは、前の 5 ページと次の 5 ページ (存在する場合) のみを表示する動的ソリューションです。
私は車輪を再発明していると感じているので、これを実装するエレガントで再利用可能な方法を見た人はいますか? どんな助けでも大歓迎です。