【cfparam】変数が存在しない場合はデフォルト値をセット
以下のようなプログラムがあります。
【test1.cfm】
【test2.cfm】
test1.cfmで1と3をチェックした場合、form.chkの値は
1,3
となります。
全然チェックしないでsendボタンを押した場合、form.chkの値はないですが、
問題は、form.chkの変数すら生成されていません。
変数がないので、エラーとなってしまいます。
変数がなかったら変数を生成するようにしないといけません。
変数の存在をチェックし、ない場合にヌルをセットする場合は、
または、
1行で書く場合は、
個人的にもcfparamはよく使っています。
cfparamのドキュメントはこちらです(cf7)。
【test1.cfm】
01: <cfoutput>
02: チェックした数値の合計
03: <form action="test2.cfm" method="post">
04: <cfloop index="idx" from="1" to="10">
05: <input type="checkbox" name="chk" value="#idx#">#idx#<br>
06: </cfloop>
07: <input type="submit" value="send">
08: </form>
09: </cfoutput>
【test2.cfm】
01: <cfset gokei = 0>
02: <cfloop index="idx" list="#form.chk#">
03: <cfset gokei = gokei + idx>
04: </cfloop>
05: <cfoutput>
06: 合計は、#gokei#です。
07: </cfoutput>
test1.cfmで1と3をチェックした場合、form.chkの値は
1,3
となります。
全然チェックしないでsendボタンを押した場合、form.chkの値はないですが、
問題は、form.chkの変数すら生成されていません。
変数がないので、エラーとなってしまいます。
変数がなかったら変数を生成するようにしないといけません。
変数の存在をチェックし、ない場合にヌルをセットする場合は、
01: <cfif not isDefined("form.chk")>
02: <cfset form.chk = "">
03: </cfif>または、
01: <cfif not StructKeyExists(form, "chk")>
02: <cfset form.chk = "">
03: </cfif>
1行で書く場合は、
01: <cfparam name="form.chk" default="">
個人的にもcfparamはよく使っています。
cfparamのドキュメントはこちらです(cf7)。