プロが教えるわが家の防犯対策術!

はじめまして、
現在ページング処理で悩んでます。ご協力お願いします。
PHP4.4.6とMySQLを使用し
1ページ10件 MAXページ99ページ
前次12345・・・のように表示させ・・・の部分をクリックすると
データが51件以上 前次45678・・・
データが60件以下 前次23456
データが70件以下 前次34567
のように表示させるにはどのような処理、考え方をしたらよいでしょうか?
なんとか自力で 前次12345 は表示、動作できたのですがその先どうしたらいいか解かりません。質問解かりにくいかもしれませんが、どうかお知恵をお貸しください。よろしくお願いします。

A 回答 (4件)

#3です。


もう一度読み直したのですが、、
>前次12345・・・
は1をクリックした場合どこへ飛ぶのでしょうか。
現在1ページ目が表示されているとすれば前という表示もあるとおかしいので、
次23456・・・
となるのではないでしょうか?
2ページ以降を表示しているとしても1というのはどういう状況でなら表示するのかが思い浮かびませんでした。。
その辺が気になったのですがとりあえず自分の解釈の前提で説明させていただきます。参考程度に目を通してください。

どこまで出来ているのかちょっとわからないのでどこから説明したらよいのかもわかりませんが、私はSQLにLIMITをかけて処理をする方法を普段使っています。
最初のページからスタートした場合私の場合なら
次 2 3 4 5 6 ・・・
という表示にします。
次と2は同じリンクが張られます。
10件ずつ表示することを前提に、
LIMITに使うオフセット数は
2→offset=10
3→offset=20
4→offset=30
以下6まで続く
となります。
つまり(ページ数-1)*10がそのページに張られるリンクのオフセット数となります。
で本題というか
60<データ件数<=70 なら 前次34567
の考え方ですが、仮にデータ件数が68だとするとページ数は7ですよね。
なので(7-1)*10=60が最後のページのオフセット数です。
表示させたいのは
34567
なのですが、表示が34567となるためには3の前にある2をクリックした時ですよね。
ということは2に張るリンクのオフセット数と同じオフセット数ということになります。
長くなってしまいましたが
・・・に張るリンクのオフセット数は
最後のページのオフセット数 - (10*5)
となります。
この例の場合は60 - 50 = 10
ですね。

$onepage = 10; //1ページの表示件数
$self = $_SERVER['SCRIPT_NAME'];
$lastofst = ($lastpage-1)*10; //最終ページオフセット
$jumpofst = $lastofst - 50; //リンクに張られるオフセット
//リンク先文字列生成
$jump = $self . "?ofst=" . $jumpofst . "&onepage=" . $nepage;
$str .= '<a href="'.$jump.'">'."・・・".'</a>';
echo " ".$str;

こんな感じかと思います。
34567自体の表示は
最後が7とわかればスタートが7-5から1を加えながら7になるまでforで生成してあげればいいですよね。
    • good
    • 0
この回答へのお礼

ご連絡遅くなりすいませんでした。
うまくいきました。
ご協力ありがとうございました。

お礼日時:2007/05/22 23:34

>データが51件以上 前次45678・・・


ここの意味がわからないのですが・・・。

下の二つは
50<データ件数<=60 なら 前次23456
60<データ件数<=70 なら 前次34567
ということですよね。
要は最後のデータを表示するページを合わせて後ろから5ページのリンクということでしょうか。
それならできそうな感じがしますけど。。
でも
>MAXページ99ページ
ということは10×99=990なのでデータ件数は991~1000の間の件数あるってことになってしまうんですけど。。
随時増えていくデータで、増え続けても最大1000件までってことなんでしょうか。
日本語は難しいです。。

この回答への補足

日本語下手ですいませんです。
データが51件以上 前次45678・・・
一旦おいといて、
50<データ件数<=60 なら 前次23456
60<データ件数<=70 なら 前次34567
だとどのように考えたらよろしいでしょうか?
よろしくお願いします。
>MAXページ99ページ
データが1000件以上あった場合99ページということなのですが
本当に日本語下手ですいません

補足日時:2007/05/18 19:08
    • good
    • 0

pearのpager なんかはいかがでしょうか?



http://www.go-pear.org/manual/ja/package.html.pa …

やりたいことは、これのスライド型じゃないですか?

参考URL:http://www.go-pear.org/manual/ja/package.html.pa …

この回答への補足

すいません素人なので
pearってプログラム言語なんでしょうか?
PHPの中に書いても問題ないのでしょうか?

補足日時:2007/05/18 19:07
    • good
    • 0

まずこのページの内容を理解しましょう。



参考URL:http://lolipoking.lolipop.jp/php/patio.cgi?mode= …
    • good
    • 0
この回答へのお礼

早速貴重な情報ありがとうございました。何度も読み返し前次12345の処理はうまくいきました。
色々自分で考えテストしたのですが
・・・の処理については解決できませんでした。どのように考えたらよいのでしょうか?ご協力お願いいたします。

お礼日時:2007/05/18 15:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!