このコードでページングの実装を考えています。
このコードで問題が二つあります。
「次へ」のボタンと「1 2 3 4 5…10 次へ»」の「...」の部分です。
この「次へ」をクリックしても次のページにいけません。つまり、「次へ」を何回押しても同じページです。2ページや5ページをクリックすれば、そのページにいけます。コードを見た限り、間違っていません。
また、1 2 3 4 5…10 次へ»」の「...」の部分をもう少し改良したいです。つまり、5ページ目をクリックしたら、表示ページ数がそれに関連して前後が「5 6 7 8 9...」になるような仕組みです。このコードだと、5ページ目をクリックしても6ページや7ページの番号が表示されません。
PHP
1<?php 2$key='私のキー'; 3$count='50'; 4$large_area='〇〇'; 5$start =1+($page-1)*10; 6$budget=$_POST ["budget"] 7$format='xml'; 8$url='http://webservice.recruit.co.jp/hotpepper/gourmet/v1/?key='.$key.'&count='.$count.'&large_area='.$large_area.'&start='.$start.'&keyword='.$keyword.'&budget='.$budget.'&format='.$format; 9$xml=simplexml_load_file($url); 10$total_count=$xml->results_available; 11function paging($limit, $page, $disp=5){ 12 global $budget; 13 //$dispはページ番号の表示数 14 $next = $page+1; 15 $prev = $page-1; 16 //ページ番号リンク用 17 $start = ($page-floor($disp/2) > 0) ? ($page-floor($disp/2)) : 1;//始点 18 $end = ($start > 1) ? ($page+floor($disp/2)) : $disp;//終点 19 $start = ($limit < $end)? $start-($end-$limit):$start;//始点再計算 20 21 if($page != 1 ) { 22 print '<a href="?page='.$prev.'&budget='.$budget=$_POST["budget"].'">« 前へ</a>'; 23 } 24 25 //最初のページへのリンク 26 if($start >= floor($disp/2)){ 27 print '<a href="?page=1&budget='.$budget=$_POST["budget"].'">1</a>'; 28 if($start > floor($disp/2)) print "..."; //ドットの表示 29 } 30 31 32 for($i=$start; $i <= $end ; $i++){//ページリンク表示ループ 33 34 $class = ($page == $i) ? ' class="current"':"";//現在地を表すCSSクラス 35 36 if($i <= $limit && $i > 0 )//1以上最大ページ数以下の場合 37 print '<a href="?page='.$i.'&budget='.$budget=$_POST["budget"].'"'.$class.'>'.$i.'</a>';//ページ番号リンク表示 38 } 39 40 //最後のページへのリンク 41 if($limit > $end){ 42 if($limit-1 > $end ) print "..."; //ドットの表示 43 print '<a href="?page='.$limit.'&budget='.$budget=$_POST["budget"].'">'.$limit.'</a>'; 44 } 45 46 if($page < $limit){ 47 print '<a href="?page='.$next.'&budget='.$budget=$_POST["budget"].'">次へ »</a>'; 48 } 49 50 /*確認用 51 print "<p>current:".$page."<br>"; 52 print "next:".$next."<br>"; 53 print "prev:".$prev."<br>"; 54 print "limit:".$limit."<br>"; 55 print "start:".$start."<br>"; 56 print "end:".$end."</p>";*/ 57 58} 59 60$limit =ceil($total_count/$count); //最大ページ数 61$page = empty($_GET["page"])? 1:$_GET["page"];//ページ番号 62 63paging($limit, $page); 64
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/12 07:37