題名の通り、PHPでページング機能の仕組みを知りたいです。主にページ番号が表示されるページング機能が知りたいです。
wordpressで実装するためです。
どうすればGoogleの1 2 3 4 5…10 次へ»というように「現在地がどこか」とページ番号が表示されるぺージングが作れますか?
pagingについての知識がないため、実装する方法がわかりません。
下記にあるphpコードはwebで調べたものですが、僕が作成したphpコードのどこに挿入すればいいかわかりません。
またpagingを使う際、sqlは利用するのですか?
僕が作成したphpコードも表示します。
ページング処理はできましたが、<<前へ>><<次へ>>が連続して表示されます。原因を教えてください。
PHP
1 function paging($limit, $page, $disp=5){ 2 //$dispはページ番号の表示数 3 $next = $page+1; 4 $prev = $page-1; 5 6 //ページ番号リンク用 7 $start = ($page-floor($disp/2) > 0) ? ($page-floor($disp/2)) : 1;//始点 8 $end = ($start > 1) ? ($page+floor($disp/2)) : $disp;//終点 9 $start = ($limit < $end)? $start-($end-$limit):$start;//始点再計算 10 11 if($page != 1 ) { 12 print '<a href="?my_page='.$prev.'&my_filter='.$area.'">« 前へ</a>'; 13 } 14 15 //最初のページへのリンク 16 if($start >= floor($disp/2)){ 17 print '<a href="?my_page=1&my_filter='.$area.'">1</a>'; 18 if($start > floor($disp/2)) print "..."; //ドットの表示 19 } 20 21 22 for($i=$start; $i <= $end ; $i++){//ページリンク表示ループ 23 24 $class = ($page == $i) ? ' class="current"':"";//現在地を表すCSSクラス 25 26 if($i <= $limit && $i > 0 )//1以上最大ページ数以下の場合 27 print '<a href="?my_page='.$i.'&my_filter='.$area.'"'.$class.'>'.$i.'</a>';//ページ番号リンク表示 28 29 } 30 31 //最後のページへのリンク 32 if($limit > $end){ 33 if($limit-1 > $end ) print "..."; //ドットの表示 34 print '<a href="?my_page='.$limit.'&my_filter='.$area.'">'.$limit.'</a>'; 35 } 36 37 if($page < $limit){ 38 print '<a href="?my_page='.$next.'&my_filter='.$area.'">次へ »</a>'; 39 } 40 41 /*確認用 42 print "<p>current:".$page."<br>"; 43 print "next:".$next."<br>"; 44 print "prev:".$prev."<br>"; 45 print "limit:".$limit."<br>"; 46 print "start:".$start."<br>"; 47 print "end:".$end."</p>";*/ 48 49} 50 51$limit = 10;//最大ページ数 52$page = empty($_GET["my_page"])? 1:$_GET["my_page"];//ページ番号 53 54paging($limit, $page); 55 56
wordpress
1« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »« 前へ次へ »
PHP
1function paging($limit, $page, $disp=5){ 2 //$dispはページ番号の表示数 3 $next = $page+1; 4 $prev = $page-1; 5 6 //ページ番号リンク用 7 $start = ($page-floor($disp/2) > 0) ? ($page-floor($disp/2)) : 1;//始点 8 $end = ($start > 1) ? ($page+floor($disp/2)) : $disp;//終点 9 $start = ($limit < $end)? $start-($end-$limit):$start;//始点再計算 10 11 if($page != 1 ) { 12 print '<a href="?page='.$prev.'">« 前へ</a>'; 13 } 14 15 //最初のページへのリンク 16 if($start >= floor($disp/2)){ 17 print '<a href="?page=1">1</a>'; 18 if($start > floor($disp/2)) print "..."; //ドットの表示 19 } 20 21 22 for($i=$start; $i <= $end ; $i++){//ページリンク表示ループ 23 24 $class = ($page == $i) ? ' class="current"':"";//現在地を表すCSSクラス 25 26 if($i <= $limit && $i > 0 )//1以上最大ページ数以下の場合 27 print '<a href="?page='.$i.'"'.$class.'>'.$i.'</a>';//ページ番号リンク表示 28 29 } 30 31 //最後のページへのリンク 32 if($limit > $end){ 33 if($limit-1 > $end ) print "..."; //ドットの表示 34 print '<a href="?page='.$limit.'">'.$limit.'</a>'; 35 } 36 37 if($page < $limit){ 38 print '<a href="?page='.$next.'">次へ »</a>'; 39 } 40 41 /*確認用 42 print "<p>current:".$page."<br>"; 43 print "next:".$next."<br>"; 44 print "prev:".$prev."<br>"; 45 print "limit:".$limit."<br>"; 46 print "start:".$start."<br>"; 47 print "end:".$end."</p>";*/ 48 49} 50 51$limit = 10;//最大ページ数 52$page = empty($_GET["page"])? 1:$_GET["page"];//ページ番号 53 54paging($limit, $page); 55 56
PHP
1<?php 2 if ( isset( $_GET[ 'my_filter' ] ) && preg_match( '![0-9]{5}!', $_GET[ 'my_filter' ] ) ) { 3 $area = $_GET[ 'my_filter' ]; 4 } else { 5 $area = '13'; 6 } 7 if ( isset( $_GET[ 'my_page' ] ) && is_numeric( $_GET[ 'my_page' ] ) ) { 8 9 $my_page = absint( $_GET[ 'my_page' ] ); 10 } else { 11 $my_page = 1; 12 } 13 $id= '私のid'; 14 $item_per_page = 100; 15 $ct = '01'; 16 $start = ( $my_page - 1) * $item_per_page + 1; 17 $url = 'http://search.olp.yahooapis.jp/OpenLocalPlatform/V1/localSearch?appid=' . $id . '&ac=' . $area .'&gc='. $ct.'&results=' . $item_per_page . '&start=' . $start . '&detail=full'; 18 $xml = simplexml_load_file( $url ); 19 $total_count = $xml->ResultInfo->Total; 20 21 echo '<table class="left">'; 22 echo '<caption>' . $start . '件目から' . $item_per_page . '件 表示中 / 総件数 ' . $total_count . '</caption>'; 23 echo '<style scoped>.paging, table{width:70%;margin:auto;}td{border-bottom:1px solid #ccc;}td{color:#2980b9;}form{text-align:center;padding:2em;} 24 .page-link{padding:0em;margin:.2em;display:inline-block;width:3em;border:1px solid #ccc;word-wrap:normal;}h2{text-align:center;margin:1em 0;}</style>'; 25 26 $html = ' <tr><th>店舗名</th><th>読み</th><th>電話番号</th><th>住所</th><th>路線</th><th>最寄駅</th><th>PCUrl</th></tr> 27 <tr><td>%1$s</td><td>%2$s</td><td><a href=tel:\"%3$s\"></a></td><td>%4$s</td><td>%5$s</td><td>%6$s</td><td><a href="%7$s">サイトはこちら</a></td><td><a href=\"%8$s\"</td></tr>'; 28 $i = 1; 29foreach ( $xml->Feature as $key => $item ) { 30 31 printf( $html, $item->Name, $item->Property->Yomi, $item->Property->Tel1, $item->Property->Address, $item->Property->Station->Railway, $item->Property->Station->Name . '駅', $item->Property->Detail->PcUrl1,$item->Property->Detail->Image1); 32 33 $i++; 34} 35echo '</table>'; 36?> 37 38 39 40 41
回答4件
あなたの回答
tips
プレビュー