Norman Khine, <norman@khine.net>, wrote:
Can someone please point me in the right direction, I have the following python script:
print '<SCRIPT LANGUAGE="JavaScript">' print '<!-- Begin' print """if (!assocArray) var assocArray = new Object();""" regions = context.sql_list_region() for region in regions: print """assocArray["region_list="%d"] = new Array("('Select county','',true,true)",""" % region.region_id counties= context.sql_list_county() for county in counties: print '''"('%d')",''' % county.county_id
print " ); "
print "-->" print "</script>"
return printed
this connects to two z sql methods, sql_list_region and sql_list_county respectively and the result i get is:
<SCRIPT LANGUAGE="JavaScript"> <!-- Begin if (!assocArray) var assocArray = new Object(); assocArray["region_list="2"] = new Array("('Select county','',true,true)", "('1')", "('2')", "('3')", "('4')", "('5')", ........... .......... "('80')", ); assocArray["region_list="3"] = new Array("('Select county','',true,true)", "('1')", "('2')", "('3')", "('4')", "('5')",
and so on..........
"('79')", "('80')", ); --> </script>
Now one of the problems I am having is that I want to be able to for each region_id to be able to list the related counties, so i passed a variable in the sql_list_county ZSQL Method, which is as follows:
arguments: region_id:int=0 select county, county_id from county where region_id=region_id
but this returns the whole list for the counties, where as i want to be able to itarate for each region_id.
also in the above script, how do i return both the county_id and county within the same print statement?
I guess I don't understand why you are constructing a Javascript script? Javascript is a client-side system and (sigh) unstable across browsers. You can (and should) do your entire processing in Zope and not use Javascript unless you absolutely must. I would have thought you'd have a couple of ZSQL methods which return a result plus one or two Python scripts (not Javascript!), DTML-methods, or Templates to present the information an you wish. You should be able to select the information you need with an appropriate query.