*****ページングとは?******
ブログ等で10ページの記事があったとすると、
その10ページ中で、現在見ているページが何ページにあたるかを表示したりします。
また、その現在見てるページの次のリンクを表示したり、戻るリンクを表示したりします。
******ソース*******
ちょっと作ったんでアップします。
<?php
$max = 5;//1ページあたりの表示数
$count;//記事の数が配列が代入されます
$logdata = array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z");
$count = count($logdata);//記事数をカウント
$limit = ceil($count/$max);//最大ページ数
$page = empty($_GET["page"])? 1:$_GET["page"];//ページ番号がなければ1、あればそのままで
//記事の配列を表示
for($i = 0 ; $i < count($logdata) ; $i++) {
print "[".($i+1) ;
print $logdata[$i]."]";
}
function disp_page($page,$max){
global $logdata,$count;
$start = ($page == 1)? 0 : ($page-1) * $max;
$end = ($page * $max);
print "<p>";
print "count:".$count."<br>";
print "max:".$max."<br>";
print "start:".$start."<br>";
print "end:".$end."</p>";
print "<p>";
for($i=$start;$i<$end;$i++){
if($i>= $count){break;}
print $logdata[$i]."<br>";
}
print "</p>";
}
disp_page($page,$max);
paging($limit, $page);
function paging($limit, $page, $disp=5){
//$dispはページ番号の表示数
$next = $page+1;
$prev = $page-1;
//ページ番号リンク用
$start = ($page-floor($disp/2)> 0) ? ($page-floor($disp/2)) : 1;//始点
$end = ($start> 1) ? ($page+floor($disp/2)) : $disp;//終点
$start = ($limit <$end)? $start-($end-$limit):$start;//始点再計算
if($page != 1 ) {
print '<a href="?page='.$prev.'">« 前へ</a>';
}
//最初のページへのリンク
if($start>= floor($disp/2)){
print '<a href="?page=1">1</a>';
if($start> floor($disp/2)) print "..."; //ドットの表示
}
for($i=$start; $i <= $end ; $i++){//ページリンク表示ループ
$class = ($page === $i) ? ' class="current"':"";//現在地を表すCSSクラス
if($i == $page){print "<b>";}//現在のページは大文字で表示
if($i <= $limit && $i> 0 ){//1以上最大ページ数以下の場合
print '<a href="?page='.$i.'"'.$class.'>'.$i.'</a>';//ページ番号リンク表示
}
if($i == $page){print "</b>";}//現在のページは大文字で表示
}
//最後のページへのリンク
if($limit> $end){
if($limit-1> $end ) print "..."; //ドットの表示
print '<a href="?page='.$limit.'">'.$limit.'</a>';
}
if($page <$limit){
print '<a href="?page='.$next.'">次へ »</a>';
}
/*確認用
print "<p>current:".$page."<br>";
print "next:".$next."<br>";
print "prev:".$prev."<br>";
print "limit:".$limit."<br>";
print "start:".$start."<br>";
print "end:".$end."</p>";*/
}
?>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" >
<input type="text" name="page" value="">
<input type="submit">
</form>
わたしの教科書的に本です
ブログ等で10ページの記事があったとすると、
その10ページ中で、現在見ているページが何ページにあたるかを表示したりします。
また、その現在見てるページの次のリンクを表示したり、戻るリンクを表示したりします。
******ソース*******
ちょっと作ったんでアップします。
<?php
$max = 5;//1ページあたりの表示数
$count;//記事の数が配列が代入されます
$logdata = array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z");
$count = count($logdata);//記事数をカウント
$limit = ceil($count/$max);//最大ページ数
$page = empty($_GET["page"])? 1:$_GET["page"];//ページ番号がなければ1、あればそのままで
//記事の配列を表示
for($i = 0 ; $i < count($logdata) ; $i++) {
print "[".($i+1) ;
print $logdata[$i]."]";
}
function disp_page($page,$max){
global $logdata,$count;
$start = ($page == 1)? 0 : ($page-1) * $max;
$end = ($page * $max);
print "<p>";
print "count:".$count."<br>";
print "max:".$max."<br>";
print "start:".$start."<br>";
print "end:".$end."</p>";
print "<p>";
for($i=$start;$i<$end;$i++){
if($i>= $count){break;}
print $logdata[$i]."<br>";
}
print "</p>";
}
disp_page($page,$max);
paging($limit, $page);
function paging($limit, $page, $disp=5){
//$dispはページ番号の表示数
$next = $page+1;
$prev = $page-1;
//ページ番号リンク用
$start = ($page-floor($disp/2)> 0) ? ($page-floor($disp/2)) : 1;//始点
$end = ($start> 1) ? ($page+floor($disp/2)) : $disp;//終点
$start = ($limit <$end)? $start-($end-$limit):$start;//始点再計算
if($page != 1 ) {
print '<a href="?page='.$prev.'">« 前へ</a>';
}
//最初のページへのリンク
if($start>= floor($disp/2)){
print '<a href="?page=1">1</a>';
if($start> floor($disp/2)) print "..."; //ドットの表示
}
for($i=$start; $i <= $end ; $i++){//ページリンク表示ループ
$class = ($page === $i) ? ' class="current"':"";//現在地を表すCSSクラス
if($i == $page){print "<b>";}//現在のページは大文字で表示
if($i <= $limit && $i> 0 ){//1以上最大ページ数以下の場合
print '<a href="?page='.$i.'"'.$class.'>'.$i.'</a>';//ページ番号リンク表示
}
if($i == $page){print "</b>";}//現在のページは大文字で表示
}
//最後のページへのリンク
if($limit> $end){
if($limit-1> $end ) print "..."; //ドットの表示
print '<a href="?page='.$limit.'">'.$limit.'</a>';
}
if($page <$limit){
print '<a href="?page='.$next.'">次へ »</a>';
}
/*確認用
print "<p>current:".$page."<br>";
print "next:".$next."<br>";
print "prev:".$prev."<br>";
print "limit:".$limit."<br>";
print "start:".$start."<br>";
print "end:".$end."</p>";*/
}
?>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" >
<input type="text" name="page" value="">
<input type="submit">
</form>
わたしの教科書的に本です
0 件のコメント:
コメントを投稿