Cookieを使ったメモと計算 ColdFusion編
元記事はこちらです。
■Application.cfm
<cfsetting enableCFoutputOnly="yes"> <cfapplication name="#hash(GetDirectoryFromPath(GetCurrentTemplatePath()))#"> <cfset request.cookie_st = "t001"> <!--- 他のシステムとCookie変数がかぶらないようにするためのもの --->
■index.cfm
<cfset cst_exec()> <!---================================================================= cst_exec ※output="no"の場合、呼んだ関数で表示しても、表示されない ==================================================================---> <cffunction name="cst_exec" returnType="void" output="yes"> <cfset var local = structNew()> <!--- 変数セット ---> <cfset cst_setValue("u", "0")> <cfset cst_setValue("r", "0")> <cfset cst_setValue("k", "0")> <cfloop index="local.idx" from="1" to="6"> <cfset cst_setValue("title#local.idx#", "title#local.idx#")> </cfloop> <cfloop index="local.idx" from="1" to="6"> <cfset cst_setValue("memo#local.idx#", "")> </cfloop> <cfset cst_dsp()> <!--- 画面表示 ---> </cffunction> <!---================================================================= cst_dsp ==================================================================---> <cffunction name="cst_dsp" returnType="void" output="yes"> <cfset var local = structNew()> <cfoutput> <html> <head> <title>test</title> </head> <body> <script> <!-- function js_keyChk(obj) { var str = obj.value; var str2 = ""; for(i=str.length;i--;) { if(str.charCodeAt(i) >= '0'.charCodeAt(0) && str.charCodeAt(i) <= '9'.charCodeAt(0)) { str2 = str.charAt(i) + str2; } } obj.value = str2; } //--> </script> <style type="text/css"> <!-- input.num { text-align:right; } input.t_clr { border: 0; background: lightskyblue; } table { margin:5px 5px 0px 0px; padding:5px 5px 0px 5px; border: 1px black solid; border-collapse: collapse; border-spacing: 0; } table th { white-space: nowrap; padding: 5px; border: black solid; border-width: 0 0 1px 1px; background: lightskyblue; font-weight: bold; line-height: 120%; text-align: center; } table td { white-space: nowrap; background: white; padding: 5px; border: 1px black solid; border-width: 0 0 1px 1px; } //--> </style> <!--- 計算 ---> <cfset local.mr = Ceiling(form.r / 10000)*10000> <cfset local.ms = 0> <cfset local.m = 0> <cfset local.zan = form.u - local.mr> <cfif local.zan gt form.k> <cfset local.tmp = local.zan - form.k> <cfset local.ms = int(local.tmp / 10000)*10000> </cfif> <cfset local.m = local.mr + local.ms> <form name="frm" action="#cgi.script_name#" method="post"> <table> <tr> <td colspan="2"> </td> <th>memo</th> </tr> <tr> <th> <input type="text" name="title1" size="15" class="t_clr" value="#form.title1#"> </th> <td> <input type="text" name="u" size="10" maxlength="10" class="num" value="#form.u#" onKeyup="js_keyChk(this)"> </td> <td> <input type="text" name="memo1" size="30" value="#form.memo1#"> </td> </tr> <tr> <th> <input type="text" name="title2" size="15" class="t_clr" value="#form.title2#"> </th> <td> <input type="text" name="r" size="10" maxlength="10" class="num" value="#form.r#" onKeyup="js_keyChk(this)"> </td> <td> <input type="text" name="memo2" size="30" value="#form.memo2#"> </td> </tr> <tr> <th> <input type="text" name="title3" size="15" class="t_clr" value="#form.title3#"> </th> <td align="right">#numberformat(local.mr)#</td> <td> <input type="text" name="memo3" size="30" value="#form.memo3#"> </td> </tr> <tr> <th> <input type="text" name="title4" size="15" class="t_clr" value="#form.title4#"> </th> <td> <input type="text" name="k" size="10" maxlength="10" class="num" value="#form.k#" onKeyup="js_keyChk(this)"> </td> <td> <input type="text" name="memo4" size="30" value="#form.memo4#"> </td> </tr> <tr> <th> <input type="text" name="title5" size="15" class="t_clr" value="#form.title5#"> </th> <td align="right">#numberformat(local.ms)#</td> <td> <input type="text" name="memo5" size="30" value="#form.memo5#"> </td> </tr> <tr> <th> <input type="text" name="title6" size="15" class="t_clr" value="#form.title6#"> </th> <td align="right">#numberformat(local.m)#</td> <td> <input type="text" name="memo6" size="30" value="#form.memo6#"> </td> </tr> </table> <input type="submit" value="CALC"> </form> </body> </html> </cfoutput> </cffunction> <!---================================================================= cst_setValue 変数セット(form,cookie) ==================================================================---> <cffunction name="cst_setValue" returnType="void" output="no"> <cfargument name="v_nm" type="string" required ="yes"> <cfargument name="def" type="string" required ="yes"> <!--- formがあった場合 ---> <cfif StructKeyExists(form, arguments.v_nm)> <cfcookie name="#request.cookie_st#.#arguments.v_nm#" expires="never" value="#form[arguments.v_nm]#"> <cfelse> <cfset form[arguments.v_nm] = arguments.def> <!--- cookieがあった場合 ---> <!--- NG cookieの配下には構造体はないらしい。ドットがはいったキー名 <cfif StructKeyExists(cookie, request.cookie_st)> <cfif StructKeyExists(cookie[request.cookie_st], arguments.v_nm)> <cfset form[arguments.v_nm] = cookie[request.cookie_st][arguments.v_nm]> </cfif> </cfif> ---> <!--- OK <cfif isDefined("cookie.#request.cookie_st#.#arguments.v_nm#")> <cfset form[arguments.v_nm] = evaluate("cookie.#request.cookie_st#.#arguments.v_nm#")> </cfif> ---> <!--- OK ---> <cfif StructKeyExists(cookie, "#request.cookie_st#.#arguments.v_nm#")> <cfset form[arguments.v_nm] = cookie["#request.cookie_st#.#arguments.v_nm#"]> </cfif> </cfif> </cffunction>