Re: how to do a loop? ...or something.
Aimee You're right. Actually, now that I think of it, the way I've handled this situation is to append the ID number to the name of the field, e.g.: INPUT TYPE=text NAME=Name_#ID# VALUE=#Name# and do the same for the address, then just loop through all the fieldnames that start with Name_, use the Eval function to get the name value in each case, parse out the ID number (using List functions with the underscore as the delimiter) and then use that same ID number with Address_#ID# to determine with the corresponding Address value. The logic would go something like this: CFLOOP through the fieldnames If the field begins with Name_, determine its value and parse out the ID number. Use the same ID number and plug it into Address_#ID# to determine the address value. Update that record. /CFLOOP Others may have a better way... Gene Kraybill On 21 Jun 2001, at 23:20, Aimee Abbott wrote: Gene, Thanks! Unfortunately not that simple. It doesn't pass a null value. If I have three of them and only two addresses I get a list with only two elements in it, not two and a null. My *current* idea is to put the default input type=text value=--None-- etc... for any field that does not have a value. Then use basically your script to parse it out. This will break though if someone enters something and then decides it was a mistake, deletes it, and types it on the next line. I thought maybe I could count the list elements to make sure they were correct but then what? Does CFinput work the same way I wonder? At 11:39 PM 6/21/2001 -0700, you wrote: Aimee, Here's one possible way: The form fields for the addresses, all named address, will produce a comma-delimited list with as many elements as people. That is, even if some of the address fields are blank, the form will still pass those to the action template. I assume you're also using a unique ID number for each contact, so you could populate the initial form with hidden input fields, like this, to pass the ID numbers retrieved via your second query: INPUT TYPE=hidden NAME=ContactID VALUE=#ContactID# Then you should be able to loop through the ContactIDs using LIST functions, something like this to save the info: CFSET Counter=0 CFLOOP INDEX=ThisContactID LIST=#Form.ContactID# CFSET Counter=Counter+1 CFQUERY NAME=SaveContact DATASOURCE=yourdb UPDATE Contacts SET Name=#ListGetAt(Form.Name, Counter)#, Address=#ListGetAt(Form.Address, Counter)# WHERE ContactID=#ThisContactID# /CFQUERY /CFLOOP ListGetAt combined with the Counter number will keep the information in sync... Gene Kraybill LPW Associates Mansfield, PA On 21 Jun 2001, at 20:27, Aimee Abbott wrote: Hello everyone! I have a database of companys, names, contacts and addresses. Not all companys have contact addresses. I am setting up a form that will allow people to come and change their address. They will get to the form by entering a url with a primary key at the end of it. This will query up the company and then a second query will get the people. The second gets the contact names and addresses -- there can be as many as a dozen contacts. That is the one I am having trouble with. What I have done is set it up so (in simple form) form action...whatever cfoutput query=first !--- company info up here. Only one company per web page. --- /cfoutput cfoutput query=second name: input type=text name=person value=#name# address: input type=text name=address value=#address# /cfoutput /form Now, like I said there can be a lot of contact names. So, then on the next page where I save it in the database, what do I do? I get the information in the form of a list. Where #name#=bob, mary, alice, harry, john but not everyone has an address so I might get #address#=chicago, minneapolis, rome I need to some how match these up somehow and update the record. Any idea how I can go about doing this? I have thought about the first page having some sort of number appended on to the end of the variable name so the form would somehow have name1, name2, name3, name4 but I don't actually know how to do that. Or from the second page, can I access individual list elements? And even if I could, how could I know that bob is from chicago, mary is blank and alice is from minneapolis? If I haven't explained this well enough please let me know! Thanks much! ~~ Structure your ColdFusion code with Fusebox. Get the official book at http://www.fusionauthority.com/bkinfo.cfm Archives: http://www.mail-archive.com/cf-talk@houseoffusion.com/ Unsubscribe: http://www.houseoffusion.com/index.cfm?sidebar=lists
how to do a loop? ...or something.
Hello everyone! I have a database of companys, names, contacts and addresses. Not all companys have contact addresses. I am setting up a form that will allow people to come and change their address. They will get to the form by entering a url with a primary key at the end of it. This will query up the company and then a second query will get the people. The second gets the contact names and addresses -- there can be as many as a dozen contacts. That is the one I am having trouble with. What I have done is set it up so (in simple form) form action...whatever cfoutput query=first !--- company info up here. Only one company per web page. --- /cfoutput cfoutput query=second name: input type=text name=person value=#name# address: input type=text name=address value=#address# /cfoutput /form Now, like I said there can be a lot of contact names. So, then on the next page where I save it in the database, what do I do? I get the information in the form of a list. Where #name#=bob, mary, alice, harry, john but not everyone has an address so I might get #address#=chicago, minneapolis, rome I need to some how match these up somehow and update the record. Any idea how I can go about doing this? I have thought about the first page having some sort of number appended on to the end of the variable name so the form would somehow have name1, name2, name3, name4 but I don't actually know how to do that. Or from the second page, can I access individual list elements? And even if I could, how could I know that bob is from chicago, mary is blank and alice is from minneapolis? If I haven't explained this well enough please let me know! Thanks much! ~~ Structure your ColdFusion code with Fusebox. Get the official book at http://www.fusionauthority.com/bkinfo.cfm Archives: http://www.mail-archive.com/cf-talk@houseoffusion.com/ Unsubscribe: http://www.houseoffusion.com/index.cfm?sidebar=lists
Re: how to do a loop? ...or something.
Aimee, Here's one possible way: The form fields for the addresses, all named address, will produce a comma-delimited list with as many elements as people. That is, even if some of the address fields are blank, the form will still pass those to the action template. I assume you're also using a unique ID number for each contact, so you could populate the initial form with hidden input fields, like this, to pass the ID numbers retrieved via your second query: INPUT TYPE=hidden NAME=ContactID VALUE=#ContactID# Then you should be able to loop through the ContactIDs using LIST functions, something like this to save the info: CFSET Counter=0 CFLOOP INDEX=ThisContactID LIST=#Form.ContactID# CFSET Counter=Counter+1 CFQUERY NAME=SaveContact DATASOURCE=yourdb UPDATE Contacts SET Name=#ListGetAt(Form.Name, Counter)#, Address=#ListGetAt(Form.Address, Counter)# WHERE ContactID=#ThisContactID# /CFQUERY /CFLOOP ListGetAt combined with the Counter number will keep the information in sync... Gene Kraybill LPW Associates Mansfield, PA On 21 Jun 2001, at 20:27, Aimee Abbott wrote: Hello everyone! I have a database of companys, names, contacts and addresses. Not all companys have contact addresses. I am setting up a form that will allow people to come and change their address. They will get to the form by entering a url with a primary key at the end of it. This will query up the company and then a second query will get the people. The second gets the contact names and addresses -- there can be as many as a dozen contacts. That is the one I am having trouble with. What I have done is set it up so (in simple form) form action...whatever cfoutput query=first !--- company info up here. Only one company per web page. --- /cfoutput cfoutput query=second name: input type=text name=person value=#name# address: input type=text name=address value=#address# /cfoutput /form Now, like I said there can be a lot of contact names. So, then on the next page where I save it in the database, what do I do? I get the information in the form of a list. Where #name#=bob, mary, alice, harry, john but not everyone has an address so I might get #address#=chicago, minneapolis, rome I need to some how match these up somehow and update the record. Any idea how I can go about doing this? I have thought about the first page having some sort of number appended on to the end of the variable name so the form would somehow have name1, name2, name3, name4 but I don't actually know how to do that. Or from the second page, can I access individual list elements? And even if I could, how could I know that bob is from chicago, mary is blank and alice is from minneapolis? If I haven't explained this well enough please let me know! Thanks much! ~~ Structure your ColdFusion code with Fusebox. Get the official book at http://www.fusionauthority.com/bkinfo.cfm Archives: http://www.mail-archive.com/cf-talk@houseoffusion.com/ Unsubscribe: http://www.houseoffusion.com/index.cfm?sidebar=lists
Re: how to do a loop? ...or something.
Gene, Thanks! Unfortunately not that simple. It doesn't pass a null value. If I have three of them and only two addresses I get a list with only two elements in it, not two and a null. My *current* idea is to put the default input type=text value=--None-- etc... for any field that does not have a value. Then use basically your script to parse it out. This will break though if someone enters something and then decides it was a mistake, deletes it, and types it on the next line. I thought maybe I could count the list elements to make sure they were correct but then what? Does CFinput work the same way I wonder? At 11:39 PM 6/21/2001 -0700, you wrote: Aimee, Here's one possible way: The form fields for the addresses, all named address, will produce a comma-delimited list with as many elements as people. That is, even if some of the address fields are blank, the form will still pass those to the action template. I assume you're also using a unique ID number for each contact, so you could populate the initial form with hidden input fields, like this, to pass the ID numbers retrieved via your second query: INPUT TYPE=hidden NAME=ContactID VALUE=#ContactID# Then you should be able to loop through the ContactIDs using LIST functions, something like this to save the info: CFSET Counter=0 CFLOOP INDEX=ThisContactID LIST=#Form.ContactID# CFSET Counter=Counter+1 CFQUERY NAME=SaveContact DATASOURCE=yourdb UPDATE Contacts SET Name=#ListGetAt(Form.Name, Counter)#, Address=#ListGetAt(Form.Address, Counter)# WHERE ContactID=#ThisContactID# /CFQUERY /CFLOOP ListGetAt combined with the Counter number will keep the information in sync... Gene Kraybill LPW Associates Mansfield, PA On 21 Jun 2001, at 20:27, Aimee Abbott wrote: Hello everyone! I have a database of companys, names, contacts and addresses. Not all companys have contact addresses. I am setting up a form that will allow people to come and change their address. They will get to the form by entering a url with a primary key at the end of it. This will query up the company and then a second query will get the people. The second gets the contact names and addresses -- there can be as many as a dozen contacts. That is the one I am having trouble with. What I have done is set it up so (in simple form) form action...whatever cfoutput query=first !--- company info up here. Only one company per web page. --- /cfoutput cfoutput query=second name: input type=text name=person value=#name# address: input type=text name=address value=#address# /cfoutput /form Now, like I said there can be a lot of contact names. So, then on the next page where I save it in the database, what do I do? I get the information in the form of a list. Where #name#=bob, mary, alice, harry, john but not everyone has an address so I might get #address#=chicago, minneapolis, rome I need to some how match these up somehow and update the record. Any idea how I can go about doing this? I have thought about the first page having some sort of number appended on to the end of the variable name so the form would somehow have name1, name2, name3, name4 but I don't actually know how to do that. Or from the second page, can I access individual list elements? And even if I could, how could I know that bob is from chicago, mary is blank and alice is from minneapolis? If I haven't explained this well enough please let me know! Thanks much! ~~ Structure your ColdFusion code with Fusebox. Get the official book at http://www.fusionauthority.com/bkinfo.cfm Archives: http://www.mail-archive.com/cf-talk@houseoffusion.com/ Unsubscribe: http://www.houseoffusion.com/index.cfm?sidebar=lists