我有一個動態表單,有多個複選框,並提交我想運行一個CFSTOREDPROC
在另一個cfloop
只使用改變狀態的複選框值。Coldfusion從動態表單複選框創建數組
到目前爲止,下面是一個粗略的概念,我試圖測試,但我確信我創建我的數組的方式會有問題。如果任何人都可以提供可能的解決方案的反饋,我會感激。
HTML/CF FORM:
<form action="self.cfm" method="post" name="permissions">
<input type="hidden" name="User_ID" value="<CFOUTPUT>#User_ID#</CFOUTPUT>">
<table>
<CFLOOP QUERY="getNthPermission">
<tr><td>#getNthPermission.Permission_Name#</td><td><input type="checkbox" value="#getNthPermission.Permission_ID#" name="#getNthPermission.Permission_Name#" <CFIF LISTVALUECOUNT(VARIABLES.UserPermission_ID_List,getNthPermission.Permission_ID) NEQ 0>CHECKED</CFIF>></td></tr>
</CFLOOP>
</table>
<input type="submit" name="submit" value="Update">
</form>
COLDFUSION ACTION:
<CFSET VARIABLES.Permission_ID_List = ValueList(getUserPermission.Permission_ID)>
<cfset changed_permissions=ArrayNew()>
<CFLOOP QUERY="getNthPermission">
//If it was checked when the form was created but was unchecked by the user add it to my array.
<CFIF LISTVALUECOUNT(VARIABLES.UserPermission_ID_List,getNthPermission.Permission_ID) NEQ 0 AND !IsDefined(FORM.#getNthPermission.Permission_Name#)>
<cfset changed_permissions[getNthPermission.Permission_ID]>
<CFELSEIF LISTVALUECOUNT(VARIABLES.UserPermission_ID_List,getNthPermission.Permission_ID) EQ 0 AND IsDefined(FORM.#getNthPermission.Permission_Name#)>
//If it wasn't checked when the form was built but was checked by the user add it to my array.
<cfset changed_permissions[getNthPermission.Permission_ID]>
</CFIF>
</CFLOOP>
通過剛創建並通過存儲過程我的值的陣列//現在環路
<CFLOOP from="1" to="#arrayLen(changed_permissions)#" index="i">
<CFSTOREDPROC DATASOURCE="#MYDB_DSN#" PROCEDURE="Update_UserPermission">
<CFPROCPARAM DBVARNAME="@PermissionList" VALUE="#changed_permissions[i]#" TYPE="IN" CFSQLTYPE="cf_sql_longvarchar">
<CFPROCPARAM DBVARNAME="@User_ID" VALUE="#FORM.User_ID#" CFSQLTYPE="cf_sql_integer">
</CFSTOREDPROC>
</CFLOOP>
更新:
我正與一個數據庫配置工作,我是不設立,其中有這些表的一部分:
- 權限表(PERMISSION_NAME,ID) - 權限名單
- 用戶表(USER_NAME ,ID)
- User_Permissions表(Permissions_ID,User_ID) - 包含用戶有權訪問的每個權限的條目。
因此,作爲複選框被選中/未選中我需要添加新條目或刪除一個。哪一個已經存在的存儲過程(或者我希望它存在)。
它只是一組可以分配/取消分配給單個用戶的權限嗎?如果沒有涉及到實際值的樣本,那麼很難直觀地看到*精確*關係。另外,這些權限如何存儲在數據庫中,單獨的行或作爲csv列表(希望不是)? – Leigh
不幸的是,我正在使用一個數據庫配置,而我並不是設置的一部分。有一個包含權限列表(permission_name,ID)和用戶表(user_name,ID)和User_Permissions表(Permissions_ID,User_ID)的表,其中包含用戶有權訪問的每個權限的條目。所以當複選框被選中/取消選中時,我可以添加一個新條目或刪除一個。哪一個已經存在的存儲過程(或者我希望它) – Denoteone