ラウンジの質問一覧に番号を順につけるには?

[上に] [前に] [次に]
北海道の"えい" [E-Mail] 1998/10/21(水) 23:33:47
こんばんは。北海道在住のえいというものです。
今までこちらのサイトにある「ラウンジ」のようなプログラムを求め
てさまよっていましたが、こちらに希望のものがあり今はとてもうれ
しいです。
それで初書き込みでいささか失礼かと思いますが、「ラウンジ」の質
問一覧画面には、皆さんからのいろいろな質問がずらっと並んで居る
わけですが、その発言順に番号を振ることはできないでしょうか。
日付の横、つまり一番左側に発言順ですから、一番下から1.2.3.4・・・
というようにです。そうするとこんなに沢山書き込みがあるのかとの
ちのち実感が出来るのですが。
もし、よろしかったらお教えくださいませ。
よろしくお願いします。
また当方、このラウンジプログラムをいわば、地域ニュースを書き込
むために使用したいと考えています。
そこで、「ラウンジ」の目玉でもある「済」マークを「市内」「市外」
と2つ選択できるようにし、「市内」のほうを選択すると「市内」と
表示され、「市外」だと同じように・・・ということは出来ますでしょうか。
のっけから2つも質問してしまい恐縮ですが、どうかよろしくお願いします。


Aurai [E-Mail] 1998/10/22(木) 03:36:19
    @items = sort { $b cmp $a; } @items;

このあとに各々の行の始めに番号を振ってやればいいと思います

for (0..$#items){
  $cnt = $#items - $_ + 1;
  $items[$_] = "<TD>$cnt</TD>".$items[$_];
}

こんなかんじでしょうか

Aurai [HomePage] 1998/10/22(木) 03:54:59
そういえば、市内/市外と似たようなことを
私のページでやっているかもしれません
ご期待に沿えば改めて書き込むことにします
テスト書き込みはご容赦願います

えい [E-Mail] 1998/10/23(金) 06:57:56
Auraiさん、早速のレスありがとうございます。
番号のほうは解決しました。
それからお話にあったAuraiさんのホームページに設置してある
ラウンジを拝見させていただきました。とてもよくカスタマイズ
されていて感激です。僕もあのようにカスタマイズできるのか心
配ですが、頑張って見ます。もしソースなどを見せていただけた
ら参考になるのですが・・・まぁそれは失礼になりますので、も
しよろしかったらまたご教授ください。よろしくおねがいたします。

Aurai [E-Mail] 1998/10/24(土) 03:27:03
例を一つ

    #
    # サブジェクトを書き込む
    #

    print OUT "Subject: $FORM{'SUBJECT'}\n";
の下に
    print OUT "Type: $FORM{'TYPE'}\n";
を加える

#
# ラウンジファイルの一覧を表示する
#

        $title = <IN>;
        $title =~ s/^Subject: //;
の下に
        $type = <IN>;
        $type =~ s/^Type: //;
を追加

printfの中の「$solved」を「$type」に変更

新規作成フォームにNAME=TYPEの項目を新たに作成

#
# サブジェクトを表示する
#

    $_ = <IN>;
    $_ =~ s/^Subject: //;
の下に
    $type = <IN>;
    $type =~ s/^Type: //;
を追加

    print "<H3>$_</H3>\n";
のあたりに「$type」を出力してやる

私はだいたいこんなかんじにしています。

もぐもぐ99 1998/11/11(水) 16:24:08
お初に書き込みさせていただきます。
ラウンジの発言に番号をつけるということですが、この発言した方は
解決されたようですが、私はいまいちよくわかりません。
Auraiさんのご指導のとおり以下の部分を追加してみました。

>for (0..$#items){
>$cnt = $#items - $_ + 1;
>$items[$_] = "<TD>$cnt</TD>".$items[$_];
>}

そうすると確かに番号がつきますが、発言すると、番号の部分とその他
の部分(発言者名や発言日、タイトル部分など)が、ずれてしまいます。
1.
print "<TABLE BORDER=1>\n";
    print "<TR><TH><NOBR>番号</NOBR></TH>"; ←ここを追加
  print "<TH><NOBR>最終<BR>更新日</NOBR></TH><TH>※</TH>";    if ($managemode) {
        print "<TH><FONT COLOR=red><NOBR>ファイル名</NOBR></FONT></TH>";    } else {
        print "<TH><FONT COLOR=red><NOBR>最終<BR>発言者</NOBR></FONT></TH>";    }
    print "<TH>解<BR>決</TH>";    if ($managemode) {
        print "<TH>削<BR>除</TH>";        print "<TH>送<BR>信</TH>";    }
    print "<TH><NOBR>題名</NOBR></TH></TR>\n";    for $item (@items) {
        print $item;    }    print "</TABLE>\n";

かといって、上の部分に番号という新しい項目を作っても、やはりずれて
しまいます。これは一体なぜでしょうか。

ちなみに馬鹿な話ですが、
2.
        $items[$cnt++] = sprintf(
                "<TR><TD>%s<!-- %s --></TD>"
                . "<TD><INPUT TYPE=checkbox NAME=\"%s\"></TD>"
                . "<TD><FONT COLOR=red>%s</FONT></TD><TD>%s</TD>"
                . "<TD><A HREF=\"wwwlng.cgi?print+%s\">%s</A> (%d件)</TD>"
                . "</TR>\n",
                $cnt, $date, $time, $file, $from, $solved, $file, $title, $count);←$cnt追加
上の部分の最後の行の初めに$cntを加えるとカウントすることができますが、それで喜んでいると
発言が10以上になると、10の発言が発言1の次に来てしまい、なんともみっともないことになって
しまいます。

Auraiさんのご指導だと、上の2.の部分の個所の下の部分
@items = sort { $b cmp $a; } @items;
の次にAuraiさん指定の部分を組み込むことで番号が表示されますが、これを2.の部分の初めか
それより以前に書くことで解決できないかと思いやってみましたが、無理でした。

いろいろいじってもう1週間になります。できればどなたかのお知恵をお借りしたいのですが。
長々と申し訳ありませんが、よろしくお願いいたします。

もぐもぐ99 1998/11/11(水) 16:38:26
あの追加発言ですが、ずれるというのは、たとえば下の様にです。

番号|最終更新日|※|最終発言者|済| 題 名
2 |     
  |98/11/22       きたら        FTPソフトについて(2件)
1 |
  |98/11/11     もぐもぐ99  ラウンジについて(600件)
上のように、
番号の部分とその他の表示部分が段違いになってしまいます。
よろしくお願いします。

Aurai [E-Mail] 1998/11/12(木) 01:27:42
私のミスですね。
sprintfの<TR>を消して
$items[$_] = "<TR><TD>$cnt</TD>".$items[$_];
としてみてください。

[上に] [前に] [次に]