WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:一行掲示板を複数行掲示板に改造

0:[投稿] 紅 [MAIL] [2002/11/12 15:52 ][環境:WIN+IE UNIX系+Perl]

初めまして、紅と申します。
この記事を見てくださってありがとうございます。
まず
http://crimsonite.s22.xrea.com/cgi/index.html
にスクリプト&動作中の掲示板があります。
それらを説明します。

(A)http://crimsonite.s22.xrea.com/cgi/original/linebbs.cgi

↑のような一行掲示板を複数行掲示板に改造しようと試みています。そして↓のような掲示板が出来上がりました。

(B)
http://crimsonite.s22.xrea.com/cgi/kaizou/linebbs.cgi

どちらも改行はBRタグで行えます。

(B)は何を改造したかと言うと
1.テキストエリアを複数行に(タグ無し改行は反映されない)
2.(A)は改行を行うと表示が崩れます、
  (B)はテーブルを使っているのでずれません。

例:(A)
テスト>こんにちは僕の
名前はテストです。

例:(B)
テスト>こんにちは僕の
    名前はテストです。


ここまでは良いのですが(B)には二つの難点があります。
これには問題が二つあります。
1.改行するたびにBRタグを挿入するのは面倒
2.テーブルを使っているから表示が重くなる
という点です。

難点1.に対して現在私が考えている対策は
1.javascript(?)のボタンを設置、それを押すたびに<BR>タグを  テキストエリア欄に挿入する。
2.特殊文字(例えば「@」)をCGIが確認するたびにHTM   Lでは改行されて表示される。
  つまり「明日から@夏休みですね」という文を打つと、ログ  の中では「明日から@夏休みですね」とそのままですが、
  HTMLでは「明日から
         夏休みですね」と表示される。

一番のネックである難点2.(テーブルのせいで重い)はテーブル使用を止め、CGIがBRタグを確認するたびに改行&名前の長さと同じ数だけのスペースを改行後の内容に自動で挿入できればと思っています。
つまり
テスト>僕の名前は
〇〇〇〇テストです。

〇の数=テストの文字数+1(>があるので)
という訳です。

とても長くなってしまいましたが、ここまで読んで下さってありがとうございます。
最終的な質問は
1.↑の案で解決すると思いますか?これが一番良い案ですか?
2.↑の案はどうやってプログラムするのでしょうか?

ご回答よろしくお願いします。


1:[回答] さっぱり★ [2002/11/12 16:22 ]

>1.改行するたびにBRタグを挿入するのは面倒
オリジナル169行目(改造スクリプトはないようです)
$text =~ s/\n//g;

$text =~ s/\n/<br>/g;
にするとか。
いっしょに「Lines」という表示も変えないと、わけが分からなくなります。私が


2:[質問] 紅 [2002/11/12 17:42 ]

お返事ありがとうございます。
上記の変更で動きました!

ついでに(テーブルなしだと)表示が崩れるという問題も解決しようと思って
$text =~ s/\n/<br><font color='#000000'>$y2[1]</font>/g;
にしてみした。($y2[1]は名前です)

 名前:発言1<br>発言2
→名前:発言1
 名前(黒なのでで見えない):発言2

になると思っていたのですが、どうやら動作しないようです。
これはなぜだか分かりますか?

とりあえずタグ挿入の件だけでも、いとも簡単に解決しただけでも大喜びです。
LINESは・・「表示行数」とするべきですね(^^)


3:[回答] 紅 [2002/11/12 19:28 ]

↑の例は分かりにくいですね。
つまり

「あいうえお<br>かきくけこ」とAさんが投稿すると
A(選択色):あいうえお
A(黒色)  :かきくけこ
となり、
A:あいうけお
  かきくけこ
と見えるという事です。

どう書けばこれが可能になるでしょうか?


4:[回答] ひじ [2002/11/12 20:48 ]

>>2
>どうやら動作しないようです。
を詳しく説明して下さい。
なにかエラーメッセージが出るのであれば、そのメッセージを書いて下さい。

関係ないですが、文字を隠すならCSSで visibility:hidden とやる方が私的には好みです。


5:[関連] ひじ [2002/11/12 21:07 ]

なぜ color: ffffff; みたいなことを書くのか理解できない。
どうしてこのような明らかな誤りが広まったのか不思議です。
よろしければ、どこでそのような記述を教わったか教えて下さい。
#Yahoo! Japan までがそんな書き方をしているので

a,b,c,d,e,f,0-9の文字だけで構成される3文字、あるいは6文字の色名が
存在したとしたら、どうする気なんだろうか。


6:[質問] 紅 [2002/11/12 21:25 ]

ひじさん、初めまして。

Script Error
The script did not produce proper HTTP headers. Please see the error log to see the detail of the errors. Depending on the server configuration, you can also run this script under CGIWrap debugging. Usually, either rename or link the script temporarily to a file which ends with .cgid extension, or add a AddHandler cgi-script-debug .cgi line to your .htaccess file.

というこのサーバーでは(FORBIDDEN)唯一存在するエラーメッセージです。
$text =~ s/\n/<br><font color='#000000'>$y2[1]</font>/g;
というコードが正しいかどうかが知りたいのです。
そして正しくない場合はどう直せばよいのですか?
ご教授お願いします。


7:[回答] 紅 [2002/11/12 21:51 ]

色々と試して、やっと正しいコードが見つかりました。
なぜこれで動くのかはさっぱりですが(^^;
このコード
$text =~ s/\n/<br><font color=#000000>$name<\/font>/g;
です。

ありがとうございました。


8:[完了] 紅 [2002/11/12 21:51 ]

終了


9:[回答] さっぱり★ [2002/11/12 21:53 ]

>「表示行数」とするべきですね
複数行掲示板にしたら、行数ではなくなるってことですよ。
「表示投稿数」あたり?

>$text =~ s/\n/<br><font color='#000000'>$y2[1]</font>/g;
途中に「/」が入ってますし、そもそも$y2[1]は未定義では?
スクリプト見ていませんが。
スクリプトを公開すれば誰かが改造してくれそうです。

ところで、
http://dream.lib.net/room/cgi/download.html#bbs
には普通の掲示板もあるようですが、どうして一行掲示板を改造するのですか?


10:[完了] さっぱり★ [2002/11/12 21:55 ]

う、書いている間に終わってました……。失礼。


11:[完了] ひじ [2002/11/12 22:22 ]

>>6
>The script did not produce proper HTTP headers.
このスクリプトは正しいHTTPヘッダを生成しなかった。
>Please see the error log to see the detail of the errors.
このエラーの詳細を知るためには、エラーログを見て下さい。
(以下、サーバの設定によりCGIのデバッグを行うことができる、という趣旨のことが書いてある)

>The script did not produce proper HTTP headers.
というエラーは、大抵CGIスクリプトがHTTPヘッダを
出力する前に、スクリプトがエラーメッセージを出力することで起きます。
文法ミスを疑いましょう。

このような文法ミスをチェックするのは、自分のマシンにperlをインストールするのが
一番早いです。perlで実行させようとすれば、syntax errorと出てきて文法ミスが分か
ります。

>>2 でエラーが出るのは
>>9 でさっぱり★さんが書かれた通り、途中で「/」が入っているからです。
そのため、 >>7 のように \ でエスケープしなければならないのです。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World