• ベストアンサー

CGI掲示板の内容を一覧で表示させる方法

CGIの掲示板を使ってるのですが、 その内容を、トップページで簡易的に表示させる 方法がわかりません。。。 新着書き込みなどがあると、タイトルや内容が自動的に更新表示してくれるようなものです。 例えば、PHPで作ってあるページなどは そういったことができるみたい (この教えて!gooのトップみたいなページや、 ブログなどの新着のようなものです。RSSというので しょうか?) なのですが、 MYSQLとかよくわからないので、PHPは自信がありません。 一般的にどうやってるのか、仕組みを教えてほしいです。 JavaScriptやSSIでできるものなのでしょうか? 誰か教えてください。 手探りなので、質問があいまいで本当に申し訳ありません。。。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

スクリプトをこんな感じで作る。 ###一般の掲示板でいうとこのタイトルを短くしたいと考える### #まずデータよ読む open(NOTE,"掲示板データ.dat"); @NAIYOU = <NOTE>; close(NOTE); #5行表示させたい $i=5; #データを読んで foreach $eachdata (@NAIYOU){ ($date,$name,$mail,$title,$comment) = split(/\t/,$eachdata); #5行チェック if($i>0){ #ここまではわかるよね? ##################################### #文字を少なくしたい場合 これがミソかな? ##################################### $title = substr($title,0,$text_size); #タイトルの半角文字数を数える $hankaku = $title =~ tr/\x00-\x7f/\x00-\x7f/; #カットするまでの文字の中に半角が奇数個あれば、 #カットする文字数を1文字分なくすこれしないと化ける場合あり if($hankaku % 2){ $text_size2 = $text_size - 1; }else{ $text_size2 = $text_size; } $dtitle = substr($dtitle,0,$text_size2); #ココまでいったら後は表示さすだけ print "$dtitle…<br>"; #一行書いた $i--; }} substrってのが、簡単に言えば頭からいくつか引っ張り出す関数 $text_sizeってのが、何文字引っ張りだしたいかって数字 10文字なら 20っていれりゃーいい $text_size =20; これを頭にかけばいいよ これで、5行の引っ張り出しができるから(微調整はいるが笑) さて問題のHTMLに表示させたいってことだけど iframe ってので、他の HTML なり.cgiを呼び出せるから手っ取り早くこれがいいんでねーの? <IFRAME width="表示させたい横サイズ120" height="表示させたい縦サイズ200" name="frame1" src="http://www.xxxxx/どっかしらないけど、↑のスクリプトの場所" scrolling="NO"> </IFRAME> 古いブラウザやMACがこの機能をつかえるかはしりません。 参考になるかな?

nack0503
質問者

補足

こんなに詳しく書いてもらって、ほんとにホントにありがとうございます!!!! で、回答をいただいてからずっとやってみてたんですが、基本的にPerlがわからなくて、また行き詰ってしまいました。。。。すみません。 プログラムの内容はなんとなくつかめたので、 下のように直してみました。 sub tes { open(NOTE,"$logfile"); @NAIYOU = <NOTE>; close(NOTE); #5行表示させたい $i=5; #データを読んで foreach $eachdata (@NAIYOU){ ($no,$reno,$date,$name,$mail,$sub,$comment,$url,$host,$pw,$color,$tail,$w,$h,$chk) = split(/<>/,$eachdata); #5行チェック if($i>0){ #ここまではわかるよね? ##################################### #文字を少なくしたい場合 これがミソかな? ##################################### $sub = substr($sub,0,$text_size); #タイトルの半角文字数を数える $hankaku = $sub =~ tr/\x00-\x7f/\x00-\x7f/; #カットするまでの文字の中に半角が奇数個あれば、 #カットする文字数を1文字分なくすこれしないと化ける場合あり if($hankaku % 2){ $text_size2 = $text_size - 1; }else{ $text_size2 = $text_size; } $dtitle = substr($dtitle,0,$text_size2); #ココまでいったら後は表示さすだけ print "$dtitle…<br>"; #一行書いた $i--; }} } $logfile っていうのが、もともと定義してあったログファイルだったので、 それをオープンして、 その中身を見ると、 ($no,$reno,$date,$name,$mail,$sub,$comment,$url,$host,$pw,$color,$tail,$w,$h,$chk) こういう風に並んでたので、変えました。 あ、頭に$text_size =20;も書きました。 それで、この"tes"っていう関数を 呼び出すときは、 上の方にmodeの設定があったので、 そこに elsif ($mode eq "tes") { &tes; } っていうのを書けば、 ***.cgi?mode=tes っていう形で呼び出せるのかなあ・・・と 思ってたんですが、なんか違うみたい(--; どうやって呼び出したらいいのでしょうか? っというか、そもそもメインのcgiに 教えてもらったスクリプトをつけてるのが 間違いなのでしょうか・・・? なんか、またまた変な質問ですみません。。。(><)

その他の回答 (3)

回答No.4

実におしいね笑 sub tes { 今回のスクリプト } で囲ってやれば***.cgi?mode=tesその方法で呼び出せるよ その作業やってないでしょ? んで肝心のHTMLに表示だけど SSIでもよさそうだよね HTMLファイルに <!-- #exec cgi="パス/***.cgi?mode=tes"> で呼び出せるけど、問題が2つ ・拡張子がshtmlである必要がある場合がある ・cgiと同じサーバにないといけない(パスでたどっていくので)参考URLは載せといた あとはがんばってみんしゃい しかしこのgooの掲示板ムカツク 回答する押しても、真っ白になってデータが消えることが多々ありすぎ!2回も打ち込んだわ

参考URL:
http://www.scollabo.com/banban/ssi/index.html
nack0503
質問者

お礼

表示できました~~(T▽T) HTMLのヘッダ情報を関数のはじめに追加してみたら、 ちゃんと表示されました。 まだ調整が必要ですが、 きっかけがつかめて、ほんとによかったです! 本当にやさしく教えてくださって、 ありがとうございました。 また、困ったときはよろしくお願いします!m(vv)m

nack0503
質問者

補足

またまたありがとうございます!!(><) sub tes { 今回のスクリプト } これ、やりましたよー!!下見てください。。。 うーん・・・ 呼び出し方は一応あってたんですね、、、。 トップはshtmlにしてあるので、 SSIで呼び出してみようと思ってました。 だけど肝心の一覧が引き出せてない・・・(--; またがんばってみますぅ。。 ありがとうございました♪

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.2

SSIでPerlを呼び出せばできます。

nack0503
質問者

お礼

回答ありがとうございます! SSIでやるんですね。 わかりました、調べてみます。 きっかけを教えてくださってうれしいです。 もし、参考になるサイトとかありましたら、教えてください(^^)

  • o84
  • ベストアンサー率31% (128/407)
回答No.1

お使いのCGIは、自作ですか? よくあるレンタル掲示板サービスではないですよね? > 新着書き込みなどがあると、 > タイトルや内容が自動的に更新表示して > くれるようなもの ということですが、なさりたいことがイマイチ はっきり掴めないのですが‥‥ 1)Aさんが自分のPCで掲示板を見ています。   Bさんも自分のPCで掲示板を見ています。 2)Aさんが書き込みをしました。   Aさんが書き込みボタンを押して、画面が   再表示すると、当然最新状態になります。 3)この時、Bさんが何も画面操作をしなくとも   Aさんの書き込みのタイミングにあわせて   Bさんの画面が最新状態になります。 ということを考えているわけでは、まさか無いですよね? イ)掲示板に最初にアクセスすると表示される   内容は、各記事の例えばタイトルのみです。 ロ)タイトルをクリックすると、その書き込みの   全文が読めます。 というイメージでしょうか。これならば、ふつうの Perlで出来ている掲示板でもよくある型ですけども。

nack0503
質問者

補足

CGIは、KENTさんのところのスクリプトを自分で多言語に改造したものです。レンタルではないです。 えーっと、、、 例えば、トップページがあって、 そのトップページにヘッドラインのような形で 掲示板に書き込まれたタイトルなどを、新着順に並べてるようなものです。ブログの端っこの方に、テーブルがあって、 「新着書き込み」のタイトル一覧みたいのがありますよね?あれなんですが・・・。 例えばこの「教えて!goo」のトップも、そんな感じだと思うのですが・・・。 つまり、自分で作るhtmlのページに、 自分のところの掲示板の簡易的内容を 並べてみたいわけなんです。。。 cgiの内容を引っ張ってくることになるのでしょうか? 仕組みがいまいちわからなくて・・・。 なんかうまく伝わらないみたいでほんとにすみません。。。

関連するQ&A