より効率的に実行できると確信しているフォーム処理があり、結果セットにエラーがありますが、「生命を脅かす」だけでなく、正しくありません。
B
このページの目的は、アイテムをプログラムに関連付けると同時に、プログラム内の指定を関連付けるF
ことです。フィールドはチェックボックスであり、アイテムを複数のプログラムおよびその特定のプログラム内の指定に関連付けることができます。(わかりやすくするために編集) 例:
アイテム:ライトセーバー
- プログラム: ジェダイの訓練
- 名称: ツール(b) (はい)
指定: 武器(f) (いいえ)
プログラム:ジェダイマスター
- 名称: ツール(b) (はい)
指定: 武器(f) (はい)
番組名:スマグラー
- 名称: ツール(b) (いいえ)
- 指定: 武器(f) (いいえ)
形:
<form action="#CGI.SCRIPT_NAME#" method="post" name="program">
<label>Item</label>
<select id="item" name="item">
<!---//loop through and display items --->
<cfloop query="getitems">
<option value="#itemid#">#itemname#</option>
</cfloop>
</select>
<table>
<!---//loop through and display programs --->
<cfloop query="getprogram">
<tr>
<td>#programname#</td>
<td><input type="checkbox" id="B#programid#" name="B#programid#"></td>
<td><input type="checkbox" id="F#programid#" name="F#programid#"></td>
</tr>
</cfloop>
</table>
<input type="submit">
</form>
アクションページ:
<!---// is there is a form being processed --->
<cfif #CGI.REQUEST_METHOD# is 'post'>
<!---// create program list from query --->
<cfset pl = ValueList(query.var, ','>
<!---// set addtl form var's --->
<cfset listassid = 'form.item'>
<!---// loop over program list --->
<cfloop list="#pl#" index="i">
<!---// loop over form fields --->
<cfloop list="form.fieldnames" index="field">
<cfif #field# EQ 'B'&#i#>
<!---// if field is B and var, set designation true --->
<cfset b = 1>
<cfelse>
<!---// it's not, set to null --->
<cfset b = 'null'>
</cfif>
<cfif #field# EQ 'F'&#i#>
<!---// if field is F and var, set designation true --->
<cfset f = 1>
<cfelse>
<!---// it's not, set to null --->
<cfset f = 'null'>
</cfif>
<cfif b EQ 'null' AND f EQ 'null'>
<!---// if both are null then skip --->
//do nothing
<cfelse>
<!---//insert record into table --->
insert into table (table fields)
(#i#, #listassid#, #b#, #f# )
</cfif>
</cfloop>
</cfloop>
</cfif>
結果は次のようになります。
id item_id program_id B F
1 24 1 x
2 32 2 x x
実際の結果は次のとおりです。
id item_id program_id B F
1 24 1 x
2 32 2 x
3 32 2 x
提案できる説明と効率について、事前に感謝します。