• 締切済み

次へ 1 2 3 4 5 のような機能をつくるには

Rubyで単純な投稿するだけの掲示板をつくりました。この掲示板ですと、投稿すればするほどページが長くなってしまいます。なので投稿数が10件たまった時点で区切って、googleやアマゾンなどで検索したときに、でるような ⇒ 次へ 1 2 3 4 5 ・・・ 14  のような機能を作りたいのですが、書き方がわかりません。もし、わかりましたら教えてくれると大変嬉しいです。よろしくお願いします。 掲示板のソースコードは下記のようになっています。 keigiban.cgi ----------------------------------- #!/usr/bin/ruby require"cgi" cgi = CGI.new ThisFile = "./keigiban.cgi" puts <<HTML Content-Type: text/html <html> <head> <title>掲示板Test</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <h1>掲示板</h1> HTML if cgi.params["message"][0] then f = open("text.log","a") f.puts"%d:%s"%[Integer(Time.now),cgi.params["message"][0]] f.close end puts <<HTML <form action="#{ThisFile}" method="post"> <input type="text" style=" name="message"> <input type="submit" value="submit"> </form> HTML messages = [] open("text.log").each{ |line| if line =~/^(\d+):(.*)$/ then messages << [Time.at(Integer($1)), $2] end } puts "<dl>" for time, msg in messages do puts "<dt>%s </dt>" % [ String(time)] puts "<dd>%s</dd>" % msg end puts "</dl>" puts <<HTML <hr> 掲示板Test </body></html> HTML

  • Ruby
  • 回答数1
  • ありがとう数1

みんなの回答

回答No.1

関連するQ&A

  • Rubyでの条件分岐について

    登録フォームについての質問です。 ログイン用フォームのhome.cgi と、それにリンクするユーザー登録用フォームのregistration.cgi があり、今回質問するのはユーザー登録用のregistration.cgiの方です。そしてユーザーIDとPasswordはdata.txtに書き込んでいます。書き込み自体は成功するのですが、それ以外のところで問題がでている状態です。条件分岐がうまくいきません。 下記のように書いた時におこる問題点等について教えていただきたいと思います。 (1)IDとPassword のinput に値が空の時に、ボタンを押しても、登録完了しました と表示されてしまうので、この様な場合は、"もういちど確認してください" などの警告文を出したいです。 (2)IDとPassword の文字数に制限を入れたいのですが、分かりませんでした。 双方とも4文字以上8文字以下にしたいです。それ以外の場合は、条件分岐で、"文字数を確認してください"などの警告文を出したいです。 -------- < ここから registration.cgi >-------------------- #!/usr/bin/ruby require "cgi" cgi = CGI.new puts <<HTML Content-Type: text/html <html> <head> <title>練習問題</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <h1>練習(1)</h1> 登録フォーム <form action="registration.cgi" method="post"> ユーザーID:<input type="text" name="login" ><br> パスワード:<input type="text" name="password"><br> <input type="submit" value="submit"> </form> HTML if cgi.params["login"][0] then f = open("data.txt","a") f.puts"%s:%s" %[cgi.params["login"][0],cgi.params["password"][0]] f.close puts "登録完了しました" else end puts <<HTML <br> <a href="./home.cgi">戻る</a> HTML -------- < ここまで >--------------------

    • ベストアンサー
    • Ruby
  • Ruby CGI HTTPヘッダ

    Rubyで、 CGIがクライアント(ブラウザ等)から受けたHttpリクエストヘッダとその値を全て取得して表示したいです。(どのようなヘッダが付与されても) 以下を例に教えてください。 #!/usr/bin/ruby require 'cgi' cgi = CGI.new puts "Content-Type:text/html\n\n" puts "<html>\n" puts "<body>\n" #ここにどのように書いたら良いですか? puts "</body></html>\n"

  • Ruby WEBrick cgiからgifが最後まで送れない。

    以下のようなHTTPサーバをWinXp上で動かしました。 #$ruby = "C:/ruby/bin/ruby.exe" require 'webrick' srv = WEBrick::HTTPServer.new({ :BindAddress => 'xxx.xxx.xxx.xxx', :CGIInterpreter => "c:/ruby/bin/ruby.exe", :Port => 80 }) srv.mount("/", WEBrick::HTTPServlet::FileHandler, "./", {:FancyIndexing=>true}) srv.start そして、以下のようなCGIをよびます。 #!/usr/bin/ruby STDOUT.binmode open("hoge.gif", "r") do |f| f.binmode body = f.read puts "content-type: image/gif" puts "content-length: #{body.size.to_s}" puts "" print body end すると、content-length分のHTTPボディーが送られてきません。 2種類のgifで試しましたが、193byte/724byte、289byte/451byteでした。 バージョンは、ruby 1.8.6、WEBrick 1.3.1です。 何が原因でしょうか?

  • cgiの未入力チェック機能

    プログラムを全て記述すると、長くなりそうなので、 まずは現象だけでも。 下記のURLのようなメールフォームを作りました。 http://life-field.com/mailform/mail.htm 一人目の申込者の氏名の未入力チェックだけでも行いたいのですが、 mail.htm中の、氏名には、 <INPUT size="40" type="text" name="name"> と、指定して、 mail.cgiのチェック部分は、 my $name = $cgi->param('name'); このようにパラメータ変換した後、 if($name =~ /^\s*$/){&error('Input Error!','氏名を入れてください。ブラウザーの戻るボタンで戻って、必要な項目を入力して下さい。');exit;} と、エラーチェックをし、 sub error{ my ($title,$msg) = @_; print<<"END"; Content-type: text/html <HTML> <HEAD> <LINK rel="stylesheet" href="mystyle.css" type="text/css"> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <TITLE>$title</TITLE> </HEAD> <BODY> <P>$title</P> <HR width="700"> $msg <HR width="700"> </BODY> </HTML> END } こうやって、エラー出力しています。 ですが、氏名を入力して「申し込みボタン」を押したにもかかわらず、 「氏名を入れてください。ブラウザーの戻るボタンで戻って、必要な項目を入力して下さい。」 と未入力エラーが返って来てしまうのです。 考えられる原因がいくつかありましたら、 チェックいたしますので、 どうかお助けください・・・。

    • ベストアンサー
    • Perl
  • XREA MySQL CGI Ruby エラー

    XREAの無料サーバーに設定されたMySQLのデータベースをCGIとして設定したRubyからアクセスしたいのですが、require 文を入れると Internal Server Error が出ます。(コメントアウトすると動きます) よろしくお願いします。 #!/usr/local/bin/ruby require 'mysql' #↑ここが問題と思われます puts 'Content-Type: text/html' puts '' puts '<!doctype html>' puts '<html>' puts '<head>' puts '<meta charset="utf-8">' puts '<title>TEST</title>' puts '</head>' puts '<body>' puts 'Hello World' #↓requireでエラーになるのでコメント中 #my = Mysql.new('127.0.0.1', 'id', 'password', 'dbname') #res = my.query('SELECT * from T_test') #res.each do |row| # puts row[0] #end puts '</body>' puts '</html>'

    • ベストアンサー
    • CGI
  • Ruby:CGI Content-Type: の設定方法

    以下に示すcgiの実行結果をContent-Type: application/x-javascriptにしたいのですが、どうしたら良いですか? #!/usr/local/bin/ruby require "cgi" cgi = CGI.new time=Time.new cgi.out do "document.write(\"#{time}\");" end

  • Mac OSX LionでCGI/Ruby動かず

    Mac OSX Lionを使っています。 CGIでRubyを使いたいと思い、 以下のことを試したのですが、 500 Internal Server Error となってしまいます。 ◆やったこと 以下のファイルを /Library/WebServer/CGI-Executables に置きました。 (改行コードはLFとしました) --test.cgi--- #!/usr/bin/ruby print "Content-Type: text/html¥n¥n" puts "Hello Ruby" ----- そしてchmod 777としてブラウザから http://localhost/cgi-bin/test.cgi にアクセスしたところ、 500 Internal Server Error となってしまいます。 その際の/var/log/apache2/error.logは、 Premature end of script headers: test.cgi とだけ表示されます。 なんだか一番最初の所でつまづいてしまい、 めげそうになっております。 よろしくご教授ください。

    • ベストアンサー
    • CGI
  • IEとネスケの見え方

    perlでWeb上にこの掲示板のようなフォームを作っています。 IEでは、きちんと表示されるのですが、ネットスケープでは、 送信ボタン、リセットボタンが表示されません。 下記のように書きましたが、原因がわかりません。 よろしくお願いします。 sub Disp { local($msg) = ''; $msg .= <<END_OF_DATA; <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <HTML> <HEAD> <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=EUC-JP"> <TITLE>登録Form</TITLE> </HEAD> <BODY> <form action="test.pl" method="post"> <INPUT TYPE="hidden" name="proc" value="mailto"> ----中略---- <input TYPE="submit" VALUE=" 送 信 "> <input TYPE="reset" VALUE=" 取 消 "> </form> </BODY> </HTML> END_OF_DATA print "Content-Type: text/html; charset=EUC-JP\n\n"; print $msg; }

  • today = Time.now が動かない

    初心者です。rubyを使ってみたくて、下記サイトからWin7 64bit にインスト-ルしました。 http://www.kkaneko.com/rinkou/ruby/rubyinstaller.html すべてうまくいったように思います。 さらに、http://jp.rubyist.net/magazine/?0011-CGIProgrammingForRubyBeginners を参照に、CGI プログラムとして実行のため、 rubima011-cgi.zipをインストール。無事うごきましたが、 print.rb は動きませんでした。 さたに、HTTPDでもためしてみましたが、同じように、print.rbが動きません。 そして、他さいとから、ダウンした日時表示の time.rb も動きません。 > #!/usr/local/bin/ruby > today = Time.now > wdays = ["日", "月", "火", "水", "木", "金", "土"] > print "Content-type: text/html\n\n" > print <<END 以下略 > END > exit today = Time.now で、エラーを起こしているのだと思います。 > print "Content-type: text/html\n\n" 以下だと正常に表示されます。 どなたか、解決策を教えてください。 よろしくお願いします。

    • ベストアンサー
    • Ruby
  • @PAGESのCGIについて

    @PAGESに登録してみて簡単なcgiをrubyで書いたのですがエラーになり通りません 本当なら@PAGESの掲示板に書くべきなのでしょうが凍結されていて書きこめませんでした わかる方助言をいただけるとありがたいです #!/usr/local/bin/ruby print "Content-type: text/html\n\n" print "Hello World" 拡張子はcgiにしてパーミッションは755です

    • ベストアンサー
    • CGI