ページング処理についてです。
ホットペーパーapiを使っていますが、ページ遷移のところでつまずいいています。
1ページ毎に50件の店舗を表示しようと思います。ただセレクトボックスでページ番号を表示するのではなく、ページネーションでページ番号を表示したいのです。
下記は次のページに行くためのコードです。一つはセレクトボックスでページ番号を表示した番号でもう一つのコードはページネーションでページ番号を表示したコードです。
セレクトボックスは使えますが、ページネーションの方はページネーションは表示されますがページ番号をクリックしても、例えば2ページをクリックしても1ページ目に戻ってしまいます。
HTML
1<html> 2<body> 3 <form method="POST"> 4 <select name="start"> 5 <option value="1">1</option> 6 <option value="2">2</option> 7 <option value="3">3</option> 8 <option value="4">4</option> 9 <option value="5">5</option> 10 <option value="6">6</option> 11 <option value="7">7</option> 12 <option value="8">8</option> 13 <option value="9">9</option> 14 <option value="10">10</option> 15 </select> <input type="submit" name="search" value="検索"> 16 </form> 17</body> 18</html>
PHP
1<?php 2$key='私のid'; 3$count='50'; 4$large_area='〇〇'; 5$start =$_GET["page"]; 6$format='xml'; 7$url='http://webservice.recruit.co.jp/hotpepper/gourmet/v1/?key='.$key.'&count='.$count.'&large_area='.$large_area.'&start='.$start.'&format='.$format; 8$xml=simplexml_load_file($url); 9function paging($limit, $page, $disp=5){ 10 $next = $page+1; 11 $prev = $page-1; 12 13 $start = ($page-floor($disp/2) > 0) ? ($page-floor($disp/2)) : 1; 14 $end = ($start > 1) ? ($page+floor($disp/2)) : $disp; 15 $start = ($limit < $end)? $start-($end-$limit):$start; 16 17 if($page != 1 ) { 18 print '<a href="?page='.$prev.'">« 前へ</a>'; 19 } 20 21 if($start >= floor($disp/2)){ 22 print '<a href="?page=1">1</a>'; 23 if($start > floor($disp/2)) print "..."; 24 } 25 26 27 for($i=$start; $i <= $end ; $i++){ 28 29 $class = ($page == $i) ? ' class="current"':""; 30 31 if($i <= $limit && $i > 0 )// 32 print '<a href="?page='.$i.'"'.$class.'>'.$i.'</a>'; 33 34 } 35 36 if($limit > $end){ 37 if($limit-1 > $end ) print "..."; 38 print '<a href="?page='.$limit.'">'.$limit.'</a>'; 39 } 40 41 if($page < $limit){ 42 print '<a href="?page='.$next.'">次へ »</a>'; 43 } 44 45 46} 47 48$limit = 10; 49$page = empty($_GET["page"])? 1:$_GET["page"]; 50 51paging($limit, $page); 52 53if(!$xml->shop){ 54 echo '見つかりませんでした'; 55 } else { 56 foreach($xml->shop as $r){ 57echo '<table>' ; 58 echo '<tr>'; 59 echo '<td>'; 60 echo $r->name; 61 echo '</td>'; 62 echo '<td>'; 63 echo $r->access; 64 echo '</td>'; 65 echo '</tr>'; 66 echo '</table>'; 67} 68} 69 ?>
回答3件
あなたの回答
tips
プレビュー