sample(入力) for cgictrl-0.1


Google

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

[更新]