質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

3回答

3899閲覧

次のページに遷移

uverworld101nm

総合スコア172

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2016/08/12 07:05

このコードの「次へ」のボタンをクリックしても次のページにいけません。同じページを表示します。
しかし、2ページや5ページをクリックすれば、そのページにいけます。コードを見た限り、間違っていません。

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"].'">&laquo; 前へ</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"].'">次へ &raquo;</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);

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaz.Suenaga

2016/08/12 08:38 編集

質問者さんのコードで出力したいHTML(例えば20ページある場合の、7ページ目を指定した場合のもの)を、質問文に追記していただけますか。
kaz.Suenaga

2016/08/12 10:34

何が本当にわかっていないことなのかを理解できるような情報の追加依頼をしたつもりでしたが、それにはご対応いただける気がないようですので、ここまでとしてもう何も言いません。
guest

回答3

0

同じ内容で、次々に質問をしても、おそらくは解決につながりません。質問を打つ労力、読む労力、いずれも無駄に消費されるだけです。

投稿2016/08/12 07:15

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

uverworld101nm

2016/08/12 07:19

次のページへ遷移できません。 コードが間違っていますか?
maisumakun

2016/08/12 07:21

それとは別次元の問題として、「質問の仕方」が間違っていると思います。
kaz.Suenaga

2016/08/12 07:31 編集

まもなく2ヶ月ですね、一連の質問をされ始めてから。 > コードが間違っていますか? 当たり前ですね。正しく動いていないなら間違っていますよね。
kaz.Suenaga

2016/08/12 09:45

> Lhankor_Mhyさん それは別人だそうですから。。
Lhankor_Mhy

2016/08/12 09:50

そ れ は 無 理 が あ る
退会済みユーザー

退会済みユーザー

2016/08/24 02:25

長いですね。勉強になっているといいのですが…
guest

0

ベストアンサー

php

1<?php 2$key='私のキー'; 3$count='50'; 4$large_area='〇〇'; 5$start =1+($page-1)*10; // ← $page に値が入ってこないからでしょう

できるだけ元の形を生かそうとしても、無理でした。

html

1<?php 2 3ini_set('display_errors', 1); 4error_reporting(E_ALL); 5 6$page = filter_input(INPUT_GET, 'page'); 7$budget = filter_input(INPUT_GET, 'budget'); 8$keyword = 'うどん'; 9 10$key = 'APIKEY'; 11$count = 10; 12 13$large_area = ''; 14$start = 1 + ($page - 1) * $count; 15 16$format = 'xml'; 17 18$query = http_build_query( 19 array( 20 'key' => $key 21 , 'count' => $count 22 , 'large_area' => $large_area 23 , 'start' => $start 24 , 'budget' => $budget 25 , 'keyword' => $keyword 26 , 'format' => $format 27 ) 28); 29 30$url = 'http://webservice.recruit.co.jp/hotpepper/gourmet/v1/'; 31$url .= sprintf('?%s', $query); 32 33$xml = simplexml_load_file($url); 34$total_count = $xml->results_available; 35 36// 取得結果確認 37var_dump($xml); 38 39function paging($page, $total) 40{ 41 $delta = 3; 42 if ($total < 1) { 43 return; 44 } 45 $query = (is_array(filter_input_array(INPUT_GET))) ? 46 filter_input_array(INPUT_GET) : []; 47 if (isset($query['page'])) { 48 unset($query['page']); 49 } 50 $querystring = http_build_query($query); 51 $limit = 10; 52 $placeholder = "<span%s><a href=\"?page=%d&%s\">%s</a></span> "; 53 54 // 最大ページ数 55 $maxPage = ceil($total / $limit); 56 57 $min = max([$page - $delta, 1]); 58 $max = min([$page + $delta, $maxPage - 1]); 59 60 $html = ''; 61 if ($page > 1) { 62 $html .= sprintf($placeholder, '', 1, $querystring, '&laquo;'); 63 $html .= sprintf($placeholder, '', $page, $querystring, '前へ'); 64 } 65 for ($i = $max - 6; $i < $min + 7; $i++) { 66 if ($i > -1 && $i < $maxPage) { 67 $html .= sprintf($placeholder 68 , ($i == $page - 1) ? ' class = "active"' : '' 69 , $i + 1 70 , $querystring 71 , $i + 1 72 ); 73 } 74 } 75 if ($page < $maxPage) { 76 $html .= sprintf($placeholder, '', $page + 1, $querystring, '次へ'); 77 $html .= sprintf($placeholder, '', $maxPage, $querystring, '&raquo; 78 '); 79 } 80 return $html; 81} 82 83echo paging($page, $total_count);

投稿2016/08/12 07:20

編集2016/08/12 12:36
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

uverworld101nm

2016/08/12 07:29

それは、$start =1+($page-1)*10;に原因があるってことですか? 他のページ遷移はできます。
退会済みユーザー

退会済みユーザー

2016/08/12 07:30

そうですね。問題ありますね。
uverworld101nm

2016/08/12 07:34

どうすれば、$pageに値が入れるように書けばいいですか?
退会済みユーザー

退会済みユーザー

2016/08/12 07:36 編集

回答の前に、あなたの認識を聞かせてください。2ページ目を表示したいときに、$page にはどのような値が入っていなければならないと考えていますか?
uverworld101nm

2016/08/12 07:48

$startや$budgetの値が入っていなくてはいけないと思います。
退会済みユーザー

退会済みユーザー

2016/08/12 07:50

あまりにも予想外の答えが返ってきて戸惑ってます…。
uverworld101nm

2016/08/12 08:00 編集

すみません、質問の内容がわからなかったもので
退会済みユーザー

退会済みユーザー

2016/08/12 08:01

テストじゃないんだし、山勘で答えられても困ります。 なんとかご自身で解決できるようにと思って、どうやってプログラミングするものなのかを理解してもらおうと考えているんですけどねェ… では、ちょっと質問を変えてみますね。 2ページ目を表示したいとき、 ホットペッパーAPIには、どんなURLで問い合わせすれば良いですか? $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; var_dump($url); // ← ここの返す値はどのようにならなければなりませんか?
uverworld101nm

2016/08/12 08:03

2ページ目を表示したい場合、$pageにはもともと数字が入っていなくてはいけないのでは $next = $page+1; $prev = $page-1;
退会済みユーザー

退会済みユーザー

2016/08/12 08:08

聞いているのはそこの $page ではありません。 $start =1+($page-1)*10; この行を実行するときに、$page に入っているべき値を聞いています。
退会済みユーザー

退会済みユーザー

2016/08/12 08:10

$url の値がそんな風に帰ってきていますか?本当に?想像で回答しないでくださいよ。
uverworld101nm

2016/08/12 08:13

pageに入るべき値は、ホットペーパーのページ数です。 しかし、ホットペーパーにはページ数を出す値がありません。
退会済みユーザー

退会済みユーザー

2016/08/12 08:16

2ページ目を表示したいときには、$page はいくつ?
uverworld101nm

2016/08/12 08:19

$start =1+($page-1)*10; だと、1+(2-1)×10になるので
退会済みユーザー

退会済みユーザー

2016/08/12 08:20

その2という値は、どうやって取得するの?
uverworld101nm

2016/08/12 08:25

そうですよね。 確かに取得するところがないですよね。
退会済みユーザー

退会済みユーザー

2016/08/12 08:27

では、どうすれば良いかを考えましょう。
uverworld101nm

2016/08/12 08:33

$page=$startをかいて、 $start =1+($page-1)*10; を使えようにするのはどうですか?
退会済みユーザー

退会済みユーザー

2016/08/12 08:36 編集

実行してみれば? 前にも注意しましたが、聞く前に試してください。
uverworld101nm

2016/08/12 08:54

実行しましたが、ダメでした。
退会済みユーザー

退会済みユーザー

2016/08/12 08:57

そもそも、$start は $page の値が決まっていて初めて、具体的な値がセットされるのだから、それでうまくいくはずがありません。 $start =1+ ($page - 1) * 10; $page が 1 なら、$start は 1 になる。
uverworld101nm

2016/08/12 09:16

そういうことですか。 わからなくなりました。
kaz.Suenaga

2016/08/12 09:18

なったんじゃなくて、はじめから「何がわからないか」がわかってないじゃないですか。。 > Kosuke_Shibuyaさん おつかれさまです。頭が下がります。
退会済みユーザー

退会済みユーザー

2016/08/12 09:22

他の方も書いているけど、プログラムは書いたとおりに動くということ。 意味を理解せずに書いているつもりになっているだけでは、プログラムは作れません。 ページャーで「2」を押した時、URL のパラメータに page=2 を渡しているのだから、 $page = $_GET['page']; $start =1+ ($page - 1) * 10; こうすれば、良いということ。同じコードをページャー部分で書いているのだから、これくらいは気づいて欲しい。意味もわからずにコピペしている証拠ですよ。 論理的にものを考えるのが苦手だと、正直プログラミングは厳しいよ。
uverworld101nm

2016/08/12 09:29

$page = $_GET['page']; ですが、これはどこに書けばいいですか?
uverworld101nm

2016/08/12 09:29

リクエストパラメータに$pageは存在しないので
退会済みユーザー

退会済みユーザー

2016/08/12 09:30

> これはどこに書けばいいですか? わかるように回答しているつもりだけど。
uverworld101nm

2016/08/12 09:32 編集

$page = $_GET['page']; $start =1+ ($page - 1) * 10; と書いて、パラメータのurlにも$pageを追加しましたが、ページ遷移ができません。
退会済みユーザー

退会済みユーザー

2016/08/12 09:34

どう回答したらあなたは理解出来るのでしょう? 逆に聞いてみたいわ。 $page = (empty($_GET['page'])) ? 1 : $_GET['page']; $start =1+ ($page - 1) * 10;
退会済みユーザー

退会済みユーザー

2016/08/12 09:48

$start =1+ ($page - 1) * 10; の行の前に $page = (empty($_GET['page'])) ? 1 : $_GET['page']; を追加する
uverworld101nm

2016/08/12 09:51

それを追加しても変わらないんです。
退会済みユーザー

退会済みユーザー

2016/08/12 09:51

ページャークリックしなきゃ、変わるわけないでしょ。
uverworld101nm

2016/08/12 09:54

つまり、a href=に追加するのですか?
退会済みユーザー

退会済みユーザー

2016/08/12 09:56

なんでそういう思考になるんでしょ…。もうダメポ…誰か…。
uverworld101nm

2016/08/12 09:58

それが、次へをクリックしても本当に変わらないんです。
kaz.Suenaga

2016/08/12 09:58

> Kosuke_Shibuyaさん おつかれさまでした。 > 質問者さん 「情報の追加・修正の依頼をする」のところに追記のお願いをしてありますので、まずどう出力したいのか、出力したいHTMLを質問文に追記してくださいますか。 そもそもどう出力したいのかがわからないようであれば、この質問内での解決はできませんから。
退会済みユーザー

退会済みユーザー

2016/08/12 09:59

じゃあ、ページャーが間違っているんでしょうね。
退会済みユーザー

退会済みユーザー

2016/08/12 10:03

もう無理。疲れました。
uverworld101nm

2016/08/12 10:03

2ページや3ページをクリックすることはできます。
uverworld101nm

2016/08/12 10:05

すみません、あなたに対する質問は最後にするのでお願いします。
kaz.Suenaga

2016/08/12 10:05

> Kosuke_Shibuyaさん お見積書を発行して前払いしてもらう、という解決方法はいかがですか。
kaz.Suenaga

2016/08/12 10:19

それでも解決していない、ということで、需要はあるのでしょう。 需要があれば価値はあるということで。。。
退会済みユーザー

退会済みユーザー

2016/08/12 10:21

手切れの悪い仕事は受けたくないですw
uverworld101nm

2016/08/12 10:27

リクエストパラメータに$pageを追加しても、本当にページ遷移ができません。
kaz.Suenaga

2016/08/12 10:32

質問者さん> ということで、これだけ詳細に回答を目の前に何度も何度も、何人にも何人にも提示されているのが理解できないのであれば、今の質問者さんにはこの質問が適切な質問ではない、ということです(それ以前が足りなすぎる)。 選択肢は2つ、 - 誰かに作ってもらう - 「それ以前」の部分をまず埋める いずれの選択肢も本来は対価を払って手に入れるものです。 ただし、上記のように既に「対価をもらっても受けたくない」というような対応を質問者さんがされてきた、という実例もあります。 一旦、ご自身に問題があるという前提で、0から積み上げてみてはいかがですか。
uverworld101nm

2016/08/12 10:34

$pageを追加し、パラメータにも$pageを追加しましたがダメでした。
退会済みユーザー

退会済みユーザー

2016/08/12 10:39

> $pageを追加し、パラメータにも$pageを追加しましたがダメでした。 でしょうね。
退会済みユーザー

退会済みユーザー

2016/08/12 10:46

詳しく回答し、粘り強く回答続けようとしましたが、ダメでした。
kaz.Suenaga

2016/08/12 10:48

> Kosuke_Shibuyaさん おつかれさまでした。 ピラミッドを頂上から作ろうとするのは無理ってことですよね。
退会済みユーザー

退会済みユーザー

2016/08/12 10:54

> kaz.Suenaga さん そうですね。何よりそのことを質問者さんに理解してもらいたいのですが… > uverworld101nm さん もう、自分にはお手上げです。 どう回答したら、あなたが理解出来るのかわかりません。自分にはこれ以上わかりやすく説明することはできません。 他の方が言うように、あなたが質問以前の基礎知識がないのが理由なのか、私に教える技術がないのが理由なのか、そんなことはどうでもいい。 あなた自身は、どうしても理解できない理由が、どちらなのか、どうお考えですか?
uverworld101nm

2016/08/12 12:45

僕の元のコードだと、ダメですか?
退会済みユーザー

退会済みユーザー

2016/08/12 12:47 編集

最低限動くものにするのにこれだけ書き換えなきゃ動かないということです。 お話にならないレベルです。
退会済みユーザー

退会済みユーザー

2016/08/12 13:02

あ、あと、自分の都合のいいものにだけ反応するのはやめようね。 あなた自身は、どうしても理解できない理由が、どちらなのか、どうお考えですか?
uverworld101nm

2016/08/12 13:06

いやそうではなく、function pagingを少し変えて$pageに値を渡したいんです。
退会済みユーザー

退会済みユーザー

2016/08/12 13:07

少し変える程度じゃ動きませんから
退会済みユーザー

退会済みユーザー

2016/08/12 13:10

あなたの質問は、まるで軽自動車で空を飛べるようにしたいと言っているようなもの。ちょっとの改造で飛べるわけありません。
uverworld101nm

2016/08/12 13:27

説明不足ですみません。 あなたのコードをみると全部変えなくてはいけないみたいですが・・・ $keyや$budgetなどのリクエストパラメータの書き方も変えなくてはいけないんですか?
退会済みユーザー

退会済みユーザー

2016/08/12 13:31

そうですね。最低限、ネットに公開しても許されるレベルにするには必要です。セキュリィティ的にも。 ここまで書き換えなきゃいけないんだということを素直に聞けないんでしょうか? 書き直すのがめんどくさいんですか?
kaz.Suenaga

2016/08/12 13:36 編集

説明は足りていますよ。 足りていないのは質問者さんの、回答への理解です。 理解できない理由もすでに再三言われていますよね。
退会済みユーザー

退会済みユーザー

2016/08/12 13:44 編集

どうしても 動かんコードがおしいなら 動かんことを良しとせよ 動かしたいなら - 書き換えろ + 書き変えるべし 字足らずだったので修正 rev#1
退会済みユーザー

退会済みユーザー

2016/08/12 13:58

そもそも、かきかえるのを嫌がっている部分だって http://tenderfeel.xsrv.jp/php/639/ ここから持ってきたコピペでしょ?
uverworld101nm

2016/08/12 14:01

書き換えるの嫌がっている部分は、リクエストパラメータです。
退会済みユーザー

退会済みユーザー

2016/08/12 14:06 編集

好きにアレンジするのは勝手です。どうぞお好きに。 回答が気にくわないというのであれば、こんなところで回答を求めないでください。 最低限動くコードが書けるようになってから、自分の好みでやればいい。
kaz.Suenaga

2016/08/12 14:07

見事にどうでもいいことにだけ返答しますねえ。 この図太さなのか鈍感力なのかは、ある意味感心しますねえ。 ただ、エンジニアとしては、デスマーチに突入する悪いパターンそのものですねえ。 間違いを指摘されても立ち止まりも戻りもしないでそのままどうにかしようとするの。
uverworld101nm

2016/08/12 14:10

function pagingは書き換えようと思っています。
退会済みユーザー

退会済みユーザー

2016/08/12 14:12 編集

> kaz.Suenaga さん 会社の新人とかでもそうだけど、素直なタイプは技術も伸びますね。素直だと教えている方も気分がいいし、教えがいもある。 経験則としてほぼ間違いない事実かと。 素直じゃないやつは、たいてい会社を去る…
kaz.Suenaga

2016/08/12 14:14

> Kosuke_Shibuyaさん そうですよねえ。 まあそれ以前に、自分で手を動かして試してみればわかることを「こうですか」とか聞いてからしかやらないような人は、どうにもなりませんねえ。 伸びる人は何より、あれこれ試してますもの。
退会済みユーザー

退会済みユーザー

2016/08/12 14:18

かえって、嫌な奴でもいいから、したたかなくらいの「教えられ上手」になってくれればいいのにw
kaz.Suenaga

2016/08/12 14:25

まあ https://teratail.com/questions/44151 こういうこと繰り返すようなのでそれは期待できないでしょうね。 これ以上、回答者側の被害者を増やしたくないんですが。
退会済みユーザー

退会済みユーザー

2016/08/12 14:35 編集

提示したソースコードから始めてくれれば、少しは進展するだろうし、回答者側のメリットにもなるかと思ったけど、全くコードに反映されていませんしねぇ… もはや新手のサイバーテロ…
退会済みユーザー

退会済みユーザー

2016/08/12 15:26

それにしてもこのプロマネ、レビュー厳しいw
退会済みユーザー

退会済みユーザー

2016/08/18 04:46

素直でない上に教えられ上手でもない、さらには質問の仕方も…笑うしかないですね…
guest

0

今はザッと眺めるしかできない環境なので具体的な問題点には行きついていませんが、
次へと前へだけがおかしいのなら、$prevと$nextの値を調整すれば良いのではないですか($page +1ではなく+2にするなど。

表示、非表示の部分も合わせて直す必要はあるとは思いますが。

$next, $prevの値が、1から始まるのか0から始まるのか(0 なら1ページを意味するのか)を併せて(修正しながら)確認してみると何かわかるかもしれません。

(検証用に表示はしてみているようですし)。

投稿2016/08/12 07:19

flied_onion

総合スコア2604

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

uverworld101nm

2016/08/12 07:28

$prevと$nextの値を$page +1ではなく+2に調整したりしましたが、次へをクリックすると3ページをずっと表示します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問