|
こんばんわ。先日はどうもでした。 掲示板の改ページのとこがいまいちよく分からないのですが、 とほほラウンジの http://www.wakusei.ne.jp/twn/wwwlng.cgi?print+199901/99010207.txt 68userさんの、スマートでよさげなので参考にしたいのですが、 「次」だけでなく「前」と、「以上 31 から 58 番目の発言です。」 みたいなの付けたいのですが、まったく分からないです。。 よかったらご教授くださいませ、、。 |
|
>>1695 けんす B-Cus 1999/01/27(水) 03:02:50 の形だと、 発言が 40 件あるときに start=30 とすると「次の10件」が 表示されない (41件目かどうかで判定しているから) という問題点があるので、ちょっと構成を変えて、 $start=1; $count=1; $next_page_exist = 0; # 次ページが存在するか $messages_per_page = 10; # 1ページ 10件ずつ表示 if ( $ENV{QUREY_STRING} =~ m/start=(\d+)/ ){ $start = $1; } open(IN,"data.txt"); while (<IN>){ if ( $count >= $start ){ ($name,$content) = split(/,/,$_); print "名前:$name 内容:$content<br>\n"; if ( $count == $start+$messages_per_page ){ $next_page_exist = 1; last; } } $count++; } if ( $start != 1 ){ # 1件目から表示しているときは「前のxx件」を出さない printf qq(<a href="hoge.cgi?start=%d">前の$messages_per_page件</a>), $start-$messages_per_page ? ; } if ( $next_page_exist == 1 ){ # 次ページが存在しない場合は「次のxx件」を出さない printf qq(<a href="hoge.cgi?start=%d">次の$messages_per_page件</a>), $start+$messages_per_page; } printf "以上 %d から %d 番目の発言です。\n", $start, $count-1; という感じになります。動かしていないのでバグがあるやも しれません。 あと、start=7 のときに「前の10件」が hoge.cgi?start=-3 と なりますが、これは宿題ということで。 |
|
私は、ネットワーク管理をやっている者ですが・・どうしても原因の分からない問題にぶつかったので、分かる方いたら教えてください。 とある、プロバイダーのMailサーバーを管理しているのですが、全国いろんな環境からサーバーにMailを取りにきます。OCN-エコ-128kで接続してくるお客さんだけが、POPを取りにくるときタイムアウトしてしまいます・・同一症状が5カ所で出ております。トラフィック上は何の問題もなく、症状が現れたのは、4日前サーバーセンターに異常が出て、同一センター内にサーバーを設置している別会社がネットワーク構成を変えてからです。 弊社Mail+DNSサーバー(同一マシーン)に使っているOSはFREE-BSD3.3 qpopper3.1.2を利用中・・。 問題の出ているCliantからTracertしても異常は無く、DNSも問題なく引けてます、WWWは問題なく好調です・・。 関係有るかは分かりませんが、OCNのその5カ所は211.***.***.***のネットワークになっています。 それ以外のネットワークのOCNでは問題は起こっておりません。 OCN側は、異常は無いと言い張っているので、原因がさっぱり分かりません・・。 どなたか、分かる方なにが考えられるか教えてください。 |
|
>>1697 BOSS > CliantからTracertしても異常は無く > DNSも問題なく引けてます、WWWは問題なく qpopper が IP アドレスから FQDN を逆引きしようとして、 逆引きできないか、タイムアウトしている、というのは 考えられませんか? qpopper は何かログを吐いてませんか? |
|
>>1696 68user ばっちりでしたー。 すばらしいっす。感謝です68userさん。 http://www.kensu.com/bin/plywood.php ごめんなさい。Perlじゃないです。 いつもここの掲示板、参考にしてますm(_ _)m > あと、start=7 のときに「前の10件」が hoge.cgi?start=-3 と > なりますが、これは宿題ということで。 あまり自信ないですけど、、 if ( $start != 1 ){ # 1件目から表示しているときは「前のxx件」を出さない の部分を if ( $start - $messages_per_page >= 1 ){ にしてみたら、いちおうできたみたいです、、 もしよかったら、正解を教えてくださいませ。 あとちょっと気づいたことなんですが、 「次へ」で見てみると、前のページの一番最後にあった発言が また最上部へでてくるのですが、これは仕様ですか?? ちゃんと次のページへきたという安心感があってべつに問題ないのですが、 いちおうきいてみました。 ではー |
|
>>1699 けんす ああそうか…、ログの先頭が新しい書き込みで、最後が古い 書き込みなのね。僕は、この方式に start=xx 式の管理を 組み合わせるのはまずい仕様だと思います。 例えば、現在 http://www.kensu.com/bin/plywood.php?start=30 とすると、No.64〜34 が表示されます。 しかし、今後書き込みがあると、同じ URL でも No.65〜35、 No.66〜36 とだんだんずれていきます。これでは特定の話題を 指して URL を示すことができません。 一方、 http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?log=601-700 のように、古い順から数えて 601〜700 であれば、今後 いくら発言があろうと発言内容は変わりません。 # この点を仕様として考えておられるのでしたら失礼。 > if ( $start - $messages_per_page >= 1 ){ > にしてみたら、いちおうできたみたいです これだと http://www.kensu.com/bin/plywood.php?start=10 のときに、「前」リンクが表示されません。まぁ、これを バグと取るか仕様と取るかは人によるかもしれません。 > 前のページの一番最後にあった発言がまた最上部へ > でてくるのですが、これは仕様ですか?? いえ、バグです (笑) あと、ソースを公開されておられるのは大変素晴らしいですね。 僕は php を使ったことはありませんが、概要くらいは知ることが できました。 # そして、php であっても、一つのスクリプトにまとめようとすると # 結局 perl 的な書き方になってしまうのだなぁと思いました。 |