Great! Thanks to all who responded...and to those that did not but were thinking of the answer. I must have picked up brain waves, too. I am still stuck in the old-fashioned, outdated, etc. world of DTML, so I took parts of the responses and did this (I will try the Python scripts later): <form action="<dtml-var URL>" method="get"> <select name="yr:list" onChange="submit();" multiple size="5"> <option>Year</option> <dtml-in zGetYEAR> <option value="<dtml-var CYEAR>"><dtml-var CYEAR></option> </dtml-in> </select> <dtml-if bt> <dtml-in bt> <input type="hidden" value="<dtml-var sequence-item>" name="bt"> </dtml-in> </dtml-if> ... ... ... </form> There are 6 other little forms like this one each displaying a different vehicle property. I made sure to use the name:list= convention for setting up the main variable on each of the forms. It works fine now no matter what comes in from the dropdown selections. One, none or many...it all works. Thanks again!!! -----Original Message----- From: Chris Kratz [mailto:chris.kratz@vistashare.com] Sent: Friday, June 21, 2002 10:05 AM To: zope@zope.org Subject: Re: [Zope] Restatement of list problem Hello Allen, We have two tiny utility python scripts we use all the time. toList() is used in cases where we don't know whether we will be getting back a list or a string, but we always want a list for processing. toList(parField) if same_type(parField, []): return parField else: return [parField] and we also created isList() which is usefull for testing. isList(parField) if same_type(parField, []): return 1 else: return 0 We can use both of them in python scripts or dtml. We've found that they make the code more readable and are quite handy. Good luck. -Chris On Friday 21 June 2002 09:20 am, Phil Harris wrote:
You need to use the Python type() function:
if type(your_list) is type([]): do something here
or the Zope same_type() function:
t=[]
if same_type(your_list,t): do something here
see http://www.zopelabs.com/cookbook/995873707 for more info
hth
On Fri, 21 Jun 2002 09:10:52 -0400
"Schmidt, Allen J." <aschmidt@nv.cc.va.us> wrote:
So then is there ANY way to definitively determine that something is a list or not?
Have not tried but on first look it seems Dieter's solution would blow up if not a list, correct?
-----Original Message----- From: Jens Vagelpohl [mailto:jens@zope.com] Sent: Friday, June 21, 2002 8:53 AM To: Schmidt, Allen J. Cc: 'zope@zope.org' Subject: Re: [Zope] Restatement of list problem
string.find will blow up if this is really a list. if it is a string it will be OK. however, the dtmlin will blow up if you have a string. it will be fine if you have a list.
jens
On Friday, June 21, 2002, at 08:35 , Schmidt, Allen J. wrote:
You are correct in how the hidden fields were set up. In your example, what if 'br' comes in as a single...not a list? Won't the dtml-in throw an error if it's not a list??
My thought was to try this (semi-pseudo code):
<if br> <if string.find(br,'[')> //then it's a list <in br> type=hidden name=sequence-item </in> <else> // not a list but a single type=hidden name=br </if> </if>
Won't using the string.find expose the list so the dtml-in won't blow up?
Thanks!!
-Allen
-----Original Message----- From: Dieter Maurer [mailto:dieter@handshake.de] Sent: Wednesday, June 19, 2002 1:49 PM To: Schmidt, Allen J. Cc: 'zope@zope.org' Subject: Re: [Zope] Restatement of list problem
Schmidt, Allen J. writes:
Maybe I over-complicated my original request.
I have a form field that is a list: ['2 DR CONVERTIBLE','2 DR COUPE','2 DR HATCHBACK']
The URL looks like this: vehicleList?bt=2+DR+CONVERTIBLE&bt=2+DR+COUPE&bt=2+DR+HATCHBACK
When I pick for years 2002 and 2001 for the above body types, the URL changes a bit:
vehicleList?yr%3Alist=2002&yr%3Alist=2001&bt%3Alist=%5B%272+DR+CONVERTIBL
E%2
7%2C+%272+DR+COUPE%27%2C+%272+DR+HATCHBACK%27%5D
This looks as if you would have your list in a hidden variable of the form
<input name="bt:list" type="hidden" value="&dtml-bt;">
When this arrives at the Zope server, you will get a list with one string that respresents the former list as a string.
You need instead:
<dtml-in br> <input name="bt:list" type="hidden" value="&dtml-sequence-item;"> </dtml-else> <input name="bt:tokens" type="hidden" value=""> </dtml-in>
i.e. each list element must gets its one "input" control.
Dieter
_______________________________________________ Zope maillist - Zope@zope.org http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev )
_______________________________________________ Zope maillist - Zope@zope.org http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev )
_______________________________________________ Zope maillist - Zope@zope.org http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev )
_______________________________________________ Zope maillist - Zope@zope.org http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev )
-- Chris Kratz Systems Analyst/Programmer VistaShare LLC www.vistashare.com ------------------------------------------------------- -- Chris Kratz Systems Analyst/Programmer VistaShare LLC www.vistashare.com _______________________________________________ Zope maillist - Zope@zope.org http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev )