sample(入力) for cgictrl-0.1
samp_calc_entry.html(画面定義)
#
# html 定義
#
# o `#'で始まる行はコメント行
# o ファイル名は 画面名称.html とする
# o START=置換対象文字列の指定開始文字列(未指定時は START=@\{ と見なす)
# END=置換対象文字列の指定終了文字列(未指定時は END=\}@ と見なす)
# START, ENDに指定する文字は本分中で使用しない文字を選んで指定する事。
# o 置換対象は @{変数名}@ と記述する(START, END指定時は `@{', `}@'を指定文字列に変える事)
# o 置換対象は @{変数名=既定値}@ と記述することもでき、この場合ユーザCGIから置換が
# 実行されない場合の既定値を指定したことになる。
# o <form>〜</form>の間には必ず以下のinputタグを含める事。
# (START, END指定時は `@{', `}@'を指定文字列に変える事)
#
# <input type="hidden" name="SYS_sessionid" value="@{SYS_sessionid}@">
#
# o <form>には、action="cgictrl.cgiへのパス" を指定する。
#
Content-Type: text/html; charset=utf-8
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>円の面積、球の体積を求める(入力)</title>
</head>
<body>
<div align="center"><h1>円の面積、球の体積を求める(入力)</h1></div>
<form method="post" action="./cgictrl.cgi">
<input type="hidden" name="SYS_sessionid" value="@{SYS_sessionid}@">
半径は? : <input type="text" name="hankei" value="@{hankei}@"> センチメートル
<input type="submit" name="next" value="次へ">
</form>
<div>
<font color="@{msg_color=black}@">@{msg}@</color>
</div>
</body>
</html>
samp_calc_entry.cgi(CGIプログラム)
#! /usr/bin/ruby
#
# cgictrl ver.0.1 2009.07.07 Masahiko Ito <m-ito@myh.no-ip.org>
#
# ユーザコーディングサンプルスクリプト
#
require "cgi"
require "uri"
require "nkf"
require "cgictrl_common"
#--- user coding start ---
#--- user coding end ---
#
# メイン処理
#
def main()
cc = Cgictrl.new
cc.start(cc.default_nkf_param)
sub_open(cc)
if (cc.is_send())
next_tran = sub_send(cc)
else
next_tran = sub_recieve(cc)
end
sub_close(cc)
cc.end(next_tran)
exit 0
end
#
# オープン処理
#
# o DB接続 etc
#
def sub_open(cc)
#--- user coding start ---
#--- user coding end ---
end
#
# 画面編集処理
#
# o spaにより渡されたデータを元に画面を編集する
# o 次に起動するトランザクション(通常は自トランザクションと同じ)を返す
#
def sub_send(cc)
#--- user coding start ---
html_param = {}
html_param["hankei"] = cc.get_spa("hankei")
if (cc.get_spa("err_sw") == "ER01")
html_param["msg_color"] = "red"
html_param["msg"] = "数字を入力して下さい"
end
cc.out_html("samp_calc_entry", html_param)
return "SAMP_CALC_ENTRY"
#--- user coding end ---
end
#
# 入力データ処理
#
# o 入力データを処理する
# o 次のトランザクションに渡すデータをspaにセットする
# o 次に起動するトランザクションを返す
#
def sub_recieve(cc)
#--- user coding start ---
cc.set_spa("err_sw", "")
r = cc.get_input("hankei")
r.strip!
if (/^[+-]*[0-9\.]+$/ !~ r)
cc.set_spa("err_sw", "ER01")
end
cc.set_spa("hankei", r)
if (cc.get_spa("err_sw") == "")
return "SAMP_CALC_RESULT"
else
return "SAMP_CALC_ENTRY"
end
#--- user coding end ---
end
#
# クローズ処理
#
# o DB切断 etc
#
def sub_close(cc)
#--- user coding start ---
#--- user coding end ---
end
#
# その他のユーザ関数定義
#
#--- user coding start ---
#--- user coding end ---
#
# メイン処理開始
#
main()
m-ito@myh.no-ip.org
[更新]