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

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

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

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

Q&A

解決済

4回答

3281閲覧

ページ遷移の方法

uverworld101nm

総合スコア172

PHP

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

1グッド

0クリップ

投稿2016/08/06 09:00

ページネーションが実装できましたが、ページ移動ができません。
$startがページ移動を行うリクエストパラメータです。
$start =$_GET["page"];にしたのは、GETでページ移動をしようと思ったからです。このコードだと、次のページに移動できません。2ページをクリックしたら$start=11(このapiでは2ページめ)に移動するにはどうすればいいですか?
ページネーションに値を渡す方法がわかりません。
お願いします。

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.'">&laquo; 前へ</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.'">次へ &raquo;</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 ?>
mhashi👍を押しています

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

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

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

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

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

guest

回答4

0

というかそもそも、
実際にやりたいことEXCELなり紙になり書き出していけばいいんじゃと思いますがね。

今回の場合に開始位置を求めたいというのであれば一度仮説立てて整理していけばいいんです。

以下は一例
0. 取得データ件数は105件
0. 1ページに表示する件数は10件
0. 最大ページ数は考えない

このルールだと各ページ以下のようになる。
1ページ目に表示するのは1〜10件目
2ページ目は11〜20件目
** === 中略 === **
10ページ目は91〜100件目
11ページ目なら101〜105件目

ここで開始位置を求めたいなら、
太字の数字がどのように移り変わるか法則性を導き出せばいいんです。

少なくとも、

  • 現在の取得データ件数
  • ページ番号
  • 表示データ件数

これだけ材料が揃っていれば開始位置なんて計算できます。

等差数列分かりませんっていうのはいいんですが(知ってる方が早く対応できるから良くもないけど)、
実際に手を動かして整理すれば法則性は導くことが出来るものですよ。

今回その移り変わりの法則を数式として表したのが等差数列と言われるものの考え方です。

これで分かってくれるとは期待してませんが一応書きました。

まぁ結論は先ずは手を動かせってことですね^^

投稿2016/08/06 11:28

編集2016/08/06 11:42
Panzer_vor

総合スコア1636

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

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

0

そもそも 等差数列 は標準仕様

投稿2016/08/06 10:05

asahina_dev

総合スコア610

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

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

uverworld101nm

2016/08/06 10:16

ご回答ありがとうございます。 arrayを使うのですか?
asahina_dev

2016/08/06 10:18

この配列はそのまま使うものじゃないですよ。
takaw

2016/08/06 10:18

ですから、やってみましょうね。 さっき言われたこともうわすれましたか?
uverworld101nm

2016/08/06 10:20

分かりました。 ただ、本当に分からないときは助けて下さい。お願いします。
退会済みユーザー

退会済みユーザー

2016/08/08 02:48

本当に分からない時は助けてくださいって… もう少し色々自力で調べて実際やってみてそれでもだめだった時に言いましょうよ。 理解が足りなさ過ぎでは?何でもかんでも聞けばいいってもんではないと思います。
guest

0

ベストアンサー

投稿2016/08/06 09:03

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

uverworld101nm

2016/08/06 09:09

等差数列、僕知らないのでコードで表してくれないでしょうか?
退会済みユーザー

退会済みユーザー

2016/08/06 09:11

中学生か?
uverworld101nm

2016/08/06 09:13

等差数式をphpコードで表すと言われても、少し分かりません。
退会済みユーザー

退会済みユーザー

2016/08/06 09:24

掛け算は * たし算は + 引き算は - あまりを出すのは % 割り算は /
退会済みユーザー

退会済みユーザー

2016/08/06 09:30

初項が1、交差は10ということ。 $start = 1 + ($page - 1) * 10;
uverworld101nm

2016/08/06 09:31

それはわかりますが、 $start=を掛け算や足し算、割り算で出すのですか?
退会済みユーザー

退会済みユーザー

2016/08/06 09:32

やる前に聞かないでくれ、試してみてどうしてもわからない場合に聞いてくれ。
uverworld101nm

2016/08/06 09:34

その、$start=の等差数列の計算方式がわからないです。 例で構いません。
takaw

2016/08/06 09:36

どうあっても自分でやろうとしないんですね。 絶対諦めないどか言っていたのに、自分でやろうとすることはすぐにあきらめるんですなぁ。
takaw

2016/08/06 09:40

「等差数列」に関しは調べましたか?
uverworld101nm

2016/08/06 09:43 編集

調べましたが、php 等差数列としらべたらわからなくなりました。 わからずに四苦八苦で書きました。 $start=( $page - 1) * $count + 1;
takaw

2016/08/06 09:46

Kosuke_Shibuyaさんの次のセリフは「やってみたんですか?」だッ!!
uverworld101nm

2016/08/06 09:47

いや、間違いなら間違いでいいんですが。 わからずに書いたので
退会済みユーザー

退会済みユーザー

2016/08/06 09:48

何を今更… これまでだって、理解せずにコピペしてたんだろうが。
takaw

2016/08/06 09:49

やってみれば間違いかどうかわかるとおもうのてですが?
uverworld101nm

2016/08/06 09:53

いや、こうかなと思い書きました。
takaw

2016/08/06 10:01

ここに書かずにソースコードに書きましょう。 そして動かしましょう。 結果を確認しましょう。 動かなかったら、なにが悪いのかを考えましょう。 そしてまた考えて、作って、動かして、確認して、、、、。 その繰り返しです。
退会済みユーザー

退会済みユーザー

2016/08/06 10:41 編集

http://unkode-mania.net/ ここに書いたソースあげたら、ここがおかしいって、マークしてくれますよ。
Panzer_vor

2016/08/06 10:53

相変わらず祭ってますね。 > Kosuke_Shibuyaさん ウンコードww マークの意味すらわかりませんって言われそうで怖いです(
guest

0

ちゃんとほかの方の言葉を聴いていますか?プログラム以前の問題だと思いますよ。
ググって色々ちゃんと調べてください。そして自分でやってください。
そしてそれをせずにただ聞くのはやめてください。そんな事の為に回答者さんの時間を盗らないで下さい。

投稿2016/08/08 04:48

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問