下記のページ渡しで問題があります。
予算を出すパラメータであるbudget、例えばセレクトボックスの2000円をクリックすると、2000円の1ページ目のデータは表示されます。しかし、ページネーションの2ページ目をクリックすると、2000円のデータではなく全体のデータが現れます。(つまり、デフォルトに戻ってしまいます)
ページのリンクに$budgetのデータが書かれなかったためではと考え(ページのリンクに$pageのデータがあるため検索をしない場合、つまり予算検索をしない場合のページング遷移はできる)、ページのリンクに'&budget='.$budget.を付け加えましたが、問題は解決していません。
$budget=$_POST ["budget"];のリクエストパラメータを書き加えなくてはいけないのですか?
php
1<html> 2<head> 3<title>API_SAMPLE</title> 4</head> 5<body> 6 <form method="GET"> 7 <select name="budget"> 8 <option value="B001">〜2000円</option> 9 <option value="B002">2001円〜3000円</option> 10 <option value="B003">3001円〜4000円</option> 11 <option value="B008">4001円〜5000円</option> 12 <option value="B004">5001円〜7000円</option> 13 <option value="B005">7000円〜10000円</option> 14 <option value="B006">10001円〜</option> 15 </select> <input type="submit" name="search" value="検索" onFocus="this.select()"> 16 </form> 17</body> 18</html> 19<?php 20$key='私のid'; 21$count='50'; 22$large_area='〇〇'; 23$start =1+($page-1)*10; 24$budget=$_POST ["budget"]; 25$format='xml'; 26$url='http://webservice.recruit.co.jp/hotpepper/gourmet/v1/?key='.$key.'&count='.$count.'&large_area='.$large_area.'&start='.$start.'&budget='.$budget.'&format='.$format; 27$xml=simplexml_load_file($url); 28$total_count=$xml->results_available; 29function paging($limit, $page, $disp=5){ 30 global $large_area; 31 //$dispはページ番号の表示数 32 $next = $page+1; 33 $prev = $page-1; 34 //ページ番号リンク用 35 $start = ($page-floor($disp/2) > 0) ? ($page-floor($disp/2)) : 1;//始点 36 $end = ($start > 1) ? ($page+floor($disp/2)) : $disp;//終点 37 $start = ($limit < $end)? $start-($end-$limit):$start;//始点再計算 38 39 if($page != 1 ) { 40 print '<a href="?page='.$prev.'&budget='.$budget.'">« 前へ</a>'; 41 } 42 43 //最初のページへのリンク 44 if($start >= floor($disp/2)){ 45 print '<a href="?page=1&budget='.$budget.'">1</a>'; 46 if($start > floor($disp/2)) print "..."; //ドットの表示 47 } 48 49 50 for($i=$start; $i <= $end ; $i++){//ページリンク表示ループ 51 52 $class = ($page == $i) ? ' class="current"':"";//現在地を表すCSSクラス 53 54 if($i <= $limit && $i > 0 )//1以上最大ページ数以下の場合 55 print '<a href="?page='.$i.'&budget='.$budget.'"'.$class.'>'.$i.'</a>';//ページ番号リンク表示 56 57 } 58 59 //最後のページへのリンク 60 if($limit > $end){ 61 if($limit-1 > $end ) print "..."; //ドットの表示 62 print '<a href="?page='.$limit.'&budget='.$budget.'">'.$limit.'</a>'; 63 } 64 65 if($page < $limit){ 66 print '<a href="?page='.$next.'&budget='.$budget.'">次へ »</a>'; 67 } 68 69 /*確認用 70 print "<p>current:".$page."<br>"; 71 print "next:".$next."<br>"; 72 print "prev:".$prev."<br>"; 73 print "limit:".$limit."<br>"; 74 print "start:".$start."<br>"; 75 print "end:".$end."</p>";*/ 76 77} 78 79$limit =ceil($total_count/$count); //最大ページ数 80$page = empty($_GET["page"])? 1:$_GET["page"];//ページ番号 81 82paging($limit, $page); 83
回答3件
あなたの回答
tips
プレビュー