PEARを使わないページング - PHPプロ!Q&A掲示板

2372

  • 0P

PEARを使わないページング

質問日時 / 2009年11月25日 12:15    回答数 / 5件

Questioner:  mata336  このエントリーをはてなブックマークに追加 

キーワード / ページング    MySQL   

ページング処理を用いてリンクを作成し、動的に表示を変更させることには成功しますが、
google,yahooの検索結果の画面のような「前 1 2 3 4 5 6 7 8 9 10 次」を作ることが出来ません。

上記のようなリンク先を作るには現在のページと表示する検索ページ結果を作り出すことは
わかるのですが、どうやって求めていけばいいのかわかりません。

もしご存知の片がいらっしゃいましたらご教授頂ければ幸いに御座います。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┣A01lieserl単純なアルゴリズムだと思うのです Googleを例にす
┃┗A01-1mata336返信有難うございます。 アルゴリズムはわかってい
┃ ┗A01-1-1shimixうーん・・。とりあえずは >アルゴリズムはわかっ
┗A02shimixlieserlさんのレスに追記として(汗 検索条件など
 ┗A02-1mata336海外サイトにて検索してみました。 こちらの掲示板に

回答一覧

並び替え:

A01
answererlieserl [11月25日 21:18]

単純なアルゴリズムだと思うのです

Googleを例にすると、表示されるページ番号の範囲は、
現在ページ-10から現在ページ+9までみたいですから、

・前が表示される条件は、現在のページ番号が1より大きい場合
・次が表示される条件は、現在のページ番号が最終ページの番号より小さい場合
・MAX(1, 現在ページ-10)から、MIN(最終ページ, 現在ページ+9)までループすればよい

この意見に回答する

ツリーへ TOPへ

A01-1
replyermata336 [11月27日 11:23]

返信有難うございます。

アルゴリズムはわかっているのですが、プログラミングが出来ないので質問しました。
どのように書くのか?それを調べていても考えても出来ない状態でした。

この意見に回答する

ツリーへ TOPへ

A01-1-1
replyershimix [11月27日 12:59]

うーん・・。とりあえずは

>アルゴリズムはわかっているのですが、プログラミングが出来ないので質問しました。

早くこの状態を脱却しないと。いくつかの定型的な記法を覚えていれば『ロジックをソースにする』ことを繰り返していくしかないです。たくさん書く→検証するだけですね。

#自分がどうやって覚えたのかは、すでに忘却の彼方ですが(汗

この意見に回答する

ツリーへ TOPへ

A02
answerershimix [11月26日 18:10]

lieserlさんのレスに追記として(汗

検索条件などはQueryStringでURLに埋め込むかセッションで持ち回るかのどちらにするかを決めておいてください。フォームが使えないのでhiddenというわけにはいきませんので(絶対に使えないわけじゃないけど、ページ番号をanchor要素にするとJavaScriptとかのお世話にならないといけないので避けたい)。GoogleなどはQueryStringでの持ち回りですね。

#ページ遷移している途中で件数が変わったりするのもGoogleならではですが(汗

表示開始するレコードまでにスキップする件数(最初は0)を、2ページ目以降は(ページ番号-1)×(1ページあたりの表示数)としてQueryStringで渡します。ページ番号のanchor要素にスクリプトで付与します。何ページ分のデータがあるかは検索条件でcount(*)を取得すればいいでしょう(実際の表示用の取得時はlimitで表示する分だけ取得)。これもGoogleはstart=n(nは0,10,20,30・・と表示数の倍数)といった形になっています。

渡されたスキップ数(渡されなければ「0」)から、今から表示するページのページ番号は(スキップ数/表示数)+1で求められます。あとはlieserlさんのレスを参考に前後どこまで表示すればいいかを算出してください。


このあたりのロジックは、ページあたりスレッド数が固定の掲示板などでも同様の処理を書くハズなので、一度キチンと作っておくと使い回しが効きます(というかロジックが自然に出てきます)。管理画面でデータ編集するようなときでも一覧表示から選択なんてときは前後のページへのリンクとか使いますしね。

この意見に回答する

ツリーへ TOPへ

A02-1
replyermata336 [11月27日 11:28]

海外サイトにて検索してみました。
こちらの掲示板に返信を頂いた方の説明を読んだのですがいまいち上手く自分が理解できず、
また、googleの検索におきましても大体50件ぐらいは見てみましたがそれでも理解出来ませんでした。

かなり需要があるはずのページングは皆さん、理解してるのでしょうか?自分が理解出来ないだけなのか?
それともPEARのPager使っているのかわかりませんけど。

時間ばかりが過ぎて行きどうにもならなくなったので、いっそのこと「paging php mysql」で日本語ではなく、
英語で探してみたところ、かなりわかりやすいチュートリアルを見つけました。そちらを読んで大体8割方は
理解出来たので、もう少し理解を深めることに今はしています。

お答え、有難うございました。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
動的なURLを静的に見せる方法
 このエントリーをはてなブックマークに追加 
A
普通に考えて、mod_rewrite でしょうね。 http://www.nishishi.com/blog/2006/01/mod_rewrite_url.html...

>>続きを読む

GETのままでは検索エンジンのロボットが拾ってくれなかったためにSEO対策として有効だと言われていますね。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)