去年、ウェブサイトファイルのページ設定を作成しましたが、これを実際に使用する必要はありませんでした。PHPのページネーション機能をより高速に実行するためにアップグレードする
しかし、今ではより大きなアプリケーションで使用する必要があります。また、膨大な量のmysql行で本当にうまく動作しないことは恐れています。わかりません。
私はコードをアップグレードする必要があるかどうかを誰かが教えてもらえれば嬉しいです。
/* Connection file */
include('config.php');
/* Get the amount of all rows */
$mqc = "SELECT COUNT(*) AS total FROM table";
$mqe = mysql_query($mqc);
$mqn = mysql_fetch_array($mqe);
$total = $mqn['total'];
/* Rows per page */
$perPage = 10;
/* Range for the pagination */
$range = 5;
/* Actual page */
$page = isset($_GET['page']) &&
is_numeric($_GET['page']) &&
!empty($_GET['page']) ?
((int)$_GET['page'] * $range) : 0;
/* Query */
$mqc = "SELECT * FROM table
LIMIT " . $page . ", " . $perPage . " ";
$mqe = mysql_query($mqc);
/* Show results */
while($l = mysql_fetch_object($mqe))
{
echo $l->id . ' - ' . $l->title . '<br />';
}
/* Function for pagination */
function pages($total = false, $perPage = false, $page = false, $range = false)
{
/* Number of pages */
$totalPages = (ceil($total/$perPage)) - 1;
/* The range * 2 */
$range = $range;
/* The real param $_GET['page'] */
$realGetPage = !empty($page) ? ($page/$range) : 0;
/* Show the first page */
if($realGetPage >= 7)
{
echo ' <a href="?page=0"> 1 </a> ... ';
}
/* Loop to create the range */
for($i = ($realGetPage - $range); $i < ($range + $realGetPage); $i++)
{
/* Check out if the value isn't outta range */
if($i > 0 && $i < $totalPages)
{
/* Highlight the actual page */
if(($i - 1) == $realGetPage)
{
echo ' [ <a href="?page=' . ($i - 1) . '"> ' . $i . ' </a> ] ';
}
else
{
echo ' <a href="?page=' . ($i - 1) . '"> ' . $i . ' </a> ';
}
}
/* Store the number of the last page */
$lastPage = ($i + 1);
}
/* Hack to show 5678910 */
if($lastPage < ($range * 2) + 1)
{
for($j = $lastPage; $j <= ($range * 2); $j++)
{
if(($j - 1) == $realGetPage)
{
echo ' [ <a href="?page=' . ($j - 1) . '"> ' . $j . ' </a> ] ';
}
else
{
echo ' <a href="?page=' . ($j - 1) . '"> ' . $j . ' </a> ';
}
}
}
/* Last page */
echo ' ... <a href="?page=' . $totalPages . '"> ' . $totalPages . ' </a> ';
}
/* Show the pagination */
pages($total, $perPage, $page, $range);
あなたはどう思いますか?
を結合の数を減らすために非正規化を使用することを検討してください。具体的な心配はありますか? – Tchoupi
私は巨大なアプリケーションで作業したことはありません...私はそれが100万以上の行になると思っています。そして、他の多くのテーブルでは巨大なので... INNERと物を使って一緒に選択します – Foreba