teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

修正

2016/08/12 12:36

投稿

退会済みユーザー
answer CHANGED
@@ -93,7 +93,5 @@
93
93
  return $html;
94
94
  }
95
95
 
96
- $total = ceil($total_count / $count); //最大ページ数
97
-
98
- echo paging($page, $total);
96
+ echo paging($page, $total_count);
99
97
  ```

1

追記

2016/08/12 12:36

投稿

退会済みユーザー
answer CHANGED
@@ -4,4 +4,96 @@
4
4
  $count='50';
5
5
  $large_area='〇〇';
6
6
  $start =1+($page-1)*10; // ← $page に値が入ってこないからでしょう
7
+ ```
8
+
9
+ ---
10
+
11
+ できるだけ元の形を生かそうとしても、無理でした。
12
+
13
+ ```html
14
+ <?php
15
+
16
+ ini_set('display_errors', 1);
17
+ error_reporting(E_ALL);
18
+
19
+ $page = filter_input(INPUT_GET, 'page');
20
+ $budget = filter_input(INPUT_GET, 'budget');
21
+ $keyword = 'うどん';
22
+
23
+ $key = 'APIKEY';
24
+ $count = 10;
25
+
26
+ $large_area = '';
27
+ $start = 1 + ($page - 1) * $count;
28
+
29
+ $format = 'xml';
30
+
31
+ $query = http_build_query(
32
+ array(
33
+ 'key' => $key
34
+ , 'count' => $count
35
+ , 'large_area' => $large_area
36
+ , 'start' => $start
37
+ , 'budget' => $budget
38
+ , 'keyword' => $keyword
39
+ , 'format' => $format
40
+ )
41
+ );
42
+
43
+ $url = 'http://webservice.recruit.co.jp/hotpepper/gourmet/v1/';
44
+ $url .= sprintf('?%s', $query);
45
+
46
+ $xml = simplexml_load_file($url);
47
+ $total_count = $xml->results_available;
48
+
49
+ // 取得結果確認
50
+ var_dump($xml);
51
+
52
+ function paging($page, $total)
53
+ {
54
+ $delta = 3;
55
+ if ($total < 1) {
56
+ return;
57
+ }
58
+ $query = (is_array(filter_input_array(INPUT_GET))) ?
59
+ filter_input_array(INPUT_GET) : [];
60
+ if (isset($query['page'])) {
61
+ unset($query['page']);
62
+ }
63
+ $querystring = http_build_query($query);
64
+ $limit = 10;
65
+ $placeholder = "<span%s><a href=\"?page=%d&%s\">%s</a></span> ";
66
+
67
+ // 最大ページ数
68
+ $maxPage = ceil($total / $limit);
69
+
70
+ $min = max([$page - $delta, 1]);
71
+ $max = min([$page + $delta, $maxPage - 1]);
72
+
73
+ $html = '';
74
+ if ($page > 1) {
75
+ $html .= sprintf($placeholder, '', 1, $querystring, '&laquo;');
76
+ $html .= sprintf($placeholder, '', $page, $querystring, '前へ');
77
+ }
78
+ for ($i = $max - 6; $i < $min + 7; $i++) {
79
+ if ($i > -1 && $i < $maxPage) {
80
+ $html .= sprintf($placeholder
81
+ , ($i == $page - 1) ? ' class = "active"' : ''
82
+ , $i + 1
83
+ , $querystring
84
+ , $i + 1
85
+ );
86
+ }
87
+ }
88
+ if ($page < $maxPage) {
89
+ $html .= sprintf($placeholder, '', $page + 1, $querystring, '次へ');
90
+ $html .= sprintf($placeholder, '', $maxPage, $querystring, '&raquo;
91
+ ');
92
+ }
93
+ return $html;
94
+ }
95
+
96
+ $total = ceil($total_count / $count); //最大ページ数
97
+
98
+ echo paging($page, $total);
7
99
  ```