Thanks Peter,

The conditional within the dtml did the trick.
This is a continuation of this issue (a bit cumbersome):

The solution that I have come to is to simply set a cookie and serve up the correct fields based on the cookie:

<dtml-if "17 in list_map_dir_id and 21 not in list_map_dir_id">
<dtml-call "RESPONSE.setCookie(list_type,'lodge')">
<dtml-elif "21 in list_map_dir_id and 17 not in list_map_dir_id">
<dtml-call "RESPONSE.setCookie(list_type,'resto')">
<dtml-elif "21 in list_map_dir_id and 17 in list_map_dir_id">
<dtml-call "RESPONSE.setCookie(list_type,'restolodge')">
<dtml-call "RESPONSE.setCookie(list_type,'other')">

<dtml-in insert_listing1_sql>
id: <dtml-var newid>
<dtml-call "REQUEST.set('list_map_list_id', newid)">
<dtml-call insert_listing_map_sql>
<dtml-call "RESPONSE.redirect('add_listing2?list_id=%s'%(REQUEST['list_map_list_id']))">

add_listing2 is the form that displays restaurant specific fields (price, cc's accepted) or lodge (type, price range, internet access) or both...those tricky motel/restaurants in rural NM...

It seems that if I try this after the list is inserted, it comes out of MySQL as a string, not integer and therefore I could not iterate to check membership in the list.

I am sure there are more elegant ways to do this - the client wanted the data in a RDBMS for portability....yah yah yah....

Thanks for you help!

Christopher Rivard
Clearwired Web Services

5345 Wyoming NE Suite 200C
Albuquerque, NM 87109

office/ 505.217.3505
mobile/ 505.301.4010
toll-free/ 866.430.2832
fax/ 505.217.3506


Peter Bengtsson wrote:

On 12/4/05, J Cameron Cooper <[EMAIL PROTECTED]> wrote:
Christopher Rivard wrote:

I'm am trying to check for the membership of items in a list and think
I'm missing something.
How is this done in dtml?

List allids: [15,16,17,18]

Check for multiple items in the list:

<dtml-in allids prefix="loop">
<dtml-if expr="loop_item == 17">
<dtml-elif expr="loop_item == 17 and loop_item != 18">
doesn't work

The goal is to check for combinations:
17 and not 18
18 only
17 only
17 and 15
18 and 16

I don't think that I really want to loop through the list, just want to
check membership in the list.
In Python, you can simply ask::

  17 in allids

  18 not in allids

and so forth as boolean expressions.

He can do this in DTML too.
<dtml-if "17 in allids">
 you're here!

Just make sure that the elements of the list you're getting are what you
think they are. If you ask about the integer 17 and the list actually
has a string "17" they won't match. You can either adjust what you test
or use something like the 'int' function to "cast".

Building Websites with Plone
Zope maillist  -
**   No cross posts or HTML encoding!  **
(Related lists - )

Peter Bengtsson,

Zope maillist  -
**   No cross posts or HTML encoding!  **
(Related lists - )

Reply via email to