views:

178

answers:

1

I have no idea how to handle this in coldfusion 9, I have a form being submitted (POST) with element checkboxes, called items[].

When I do a <cfdump var="#form#" /> no-problem, I get all the items shown with the proper names like items[] eg:

struct 
ITEMS[] 13,14  
FIELDNAMES ITEMS[] 

however doing a <cfdump var="#form.items[]#" /> results in an error. How do I access the CF9 field values? Somehow loop through it?

I cannot seem to do anything with the array to get the id's out of it? Thoughts, I'm kindof stumped and coldfusion isn't the easiest language to find examples / references on the net ;)

Is there a correct way to deal with this? I need to get the ID's out of there so I can referenc what lines were checked in the form, so I can follow up with an action.

Thanks!

+11  A: 

There's no Form Array’s in ColdFusion. Having '[]' at the end doesn't make it an array. You can access the checkbox values from form scope like this:

FORM["ITEMS[]"]

Dot notation doesn't work 'cause of the '[]'. See: http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec22c24-7fb2.html

Values from checkboxes are just comma separated values, which is a List in ColdFusion

To loop through it, use cfloop list=:

<cfoutput>
  <cfloop index="i" list="#FORM['ITEMS[]']#">    
    #i#
  </cfloop>
</cfoutput>

To convert a list to array, use ListToArray(). There are list functions like listGetAt(), but if you're doing lots of random access, it'd be smarter to convert the list into an array first.

Thoughts, I'm kindof stumped and coldfusion isn't the easiest language to find examples / references on the net ;)

Henry
FWIW, PHP interprets form elements named with a "[]" as an array. CF treats form elements of the same name as a comma-delimited list.
iKnowKungFoo