68user's page 掲示板

Prev< No. 1695〜1700> Next  [最新発言に戻る] [過去ログ一覧]
No. 1695 # けんす 2001/02/04 (日) 00:23:41
こんばんわ。先日はどうもでした。

掲示板の改ページのとこがいまいちよく分からないのですが、
とほほラウンジの

http://www.wakusei.ne.jp/twn/wwwlng.cgi?print+199901/99010207.txt

68userさんの、スマートでよさげなので参考にしたいのですが、
「次」だけでなく「前」と、「以上 31 から 58 番目の発言です。」
みたいなの付けたいのですが、まったく分からないです。。
よかったらご教授くださいませ、、。

No. 1696 # 68user 2001/02/04 (日) 01:09:16
>>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 と
なりますが、これは宿題ということで。

No. 1697 # BOSS [E-mail] 2001/02/04 (日) 16:53:51
私は、ネットワーク管理をやっている者ですが・・どうしても原因の分からない問題にぶつかったので、分かる方いたら教えてください。
    とある、プロバイダーの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側は、異常は無いと言い張っているので、原因がさっぱり分かりません・・。 
    どなたか、分かる方なにが考えられるか教えてください。

No. 1698 # 68user 2001/02/04 (日) 21:34:03
>>1697 BOSS
> CliantからTracertしても異常は無く
> DNSも問題なく引けてます、WWWは問題なく
qpopper が IP アドレスから FQDN を逆引きしようとして、
逆引きできないか、タイムアウトしている、というのは
考えられませんか? qpopper は何かログを吐いてませんか?

No. 1699 # けんす 2001/02/05 (月) 03:10:16
>>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 ){

にしてみたら、いちおうできたみたいです、、
もしよかったら、正解を教えてくださいませ。

あとちょっと気づいたことなんですが、
「次へ」で見てみると、前のページの一番最後にあった発言が
また最上部へでてくるのですが、これは仕様ですか??
ちゃんと次のページへきたという安心感があってべつに問題ないのですが、
いちおうきいてみました。

ではー

No. 1700 # 68user 2001/02/06 (火) 00:48:42
>>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 的な書き方になってしまうのだなぁと思いました。

Prev< No. 1695〜1700> Next  [最新発言に戻る] [過去ログ一覧]