平成30/ 2018-12-10 16:39
paging

$ROW_TOTAL = 0;  // レコード総数
$ROW_MAX   = 20; // 1ページの最大レコード数( ROW_MAX1P, PER_PAGE_NUM )
$P         = 1;  // 現在のページ数
$P_TOTAL   = 0;  // ページ総数
$P_RANGE   = 15; // ページ数の幅( 何件までページ数を表示させるか )
$P_CENTER  = 8;  // ページ中央( ページONを中央の位置に保ちたい場合 )

if(
!empty($_GET["p"])
){
    $P = $_GET["p"];
}

$limit = ($P-1)*$ROW_MAX;
$sql = "
select sql_calc_found_rows * from sample
limit {$limit}, {$ROW_MAX}
";

$res = mysql_query($sql);
$SAMPLE_LI = array();
while($row = mysql_fetch_assoc($res)){
    $SAMPLE_LI[] = $row;
}

$sql = "select found_rows() as ct";
$res = mysql_query($sql);
$row = mysql_fetch_assoc($res);
$ROW_TOTAL = $row["ct"];

# ページ総数
$P_TOTAL  = floor($ROW_TOTAL / $ROW_MAX) + 1;
if(
!($ROW_TOTAL % $ROW_MAX)
){
    $P_TOTAL--; //割り切れちゃうときは減算

}
##

# 前ページ、次ページ
$P_START = ($P - $P_CENTER)+1;
$P_END   = ($P + $P_CENTER)-1;

if(
$P_START < 1
){
    $P_START = 1;
}
if(
$P_END > $P_TOTAL
){
    $P_END = $P_TOTAL;
}
##


$htm = array();

# 前ページ
if(
$P > 1
){
        $htm[] = '<a href="javascript:void(0);" onclick="document.getElementById(\'p\').value='.h($P-1).';userFieldChg();return false;">';
        $htm[] = '&nbsp;&lt;&lt;&nbsp;';
        $htm[] = '</a>';
        $htm[] = '&nbsp;&nbsp;';
}

# ページ数表示
for($p=$P_START;$p<=$P_END;$p++){
    $htm[] = '<a href="javascript:void(0);" onclick="document.getElementById(\'p\').value='.h($p).';userFieldChg();return false;"';
    if(
    $p == $P
    ){
        $htm[] = ' style="background-color:blue;color:white;padding:1px 0px 2px 0px"';
    }
    $htm[] = '>';
    $htm[] = '&nbsp;'.h($p).'&nbsp;';
    $htm[] = '</a>';
    if(
    $p < $P_END
    ){
        $htm[] = '&nbsp;&nbsp;';
    }
}

# 次ページ
if(
$P_TOTAL > $P_END
){
    $htm[] = '&nbsp;&nbsp;';
    $htm[] = '<a href="javascript:void(0);" onclick="document.getElementById(\'p\').value='.h($P+1).';userFieldChg();return false;">';
    $htm[] = '&nbsp;&gt;&gt;&nbsp;';
    $htm[] = '</a>';
}

$P_HTM = implode($htm);