What I want to know is this: how do I perform the following tasks (I've had a look in the DTML user's guide and can't find anything to help me):
1. Pass data as an attribute/property/parameter from a DTML document to a DTML method and hence to a ZSQL method. Do I need to set up some variables, populate them with my data, and pass them to the DTML method which then passes them to the SQL method? 2. Glean data from a query and pass that too (example. We know who the logged in user is, via AUTHENTICATED_USER.name; this is a key in the USERS table in the database and I want to look up the user_id and insert that, not the textual name) 3. Pass the current date/time; I can get it, like this: <dtml-var ZopeTime fmt="rfc822">. How do I squizz this along to the query?
I believe that the solution to all of this (definitely your first example) is to pass the variable to REQUEST. eg. I have a ZSQL method that takes the argument 'category' The ZSQL method is called by DTML method. The DTML method has a variable 'category' (which could come from a DTML document - perhaps submitted from a form; or from a property - you mentioned using the ZopeTime) However, the ZSQL method will fail claiming that the variable 'category' does not exist. Is this the type of problem you encounter ? If so, I do pass the variable to the REQUEST object in the DTML method before calling the ZSQL method. <dtml-call "REQUEST.set('category', category)"> Then call the method : <dtml-in ZSQL_methodname size=10 start=query_start> Why I have to do this I'm not quite sure, especially when the variable should already exist in REQUEST if it was submitted from a web form, but when all else fails I just shove stuff into REQUEST (yeah, I'm the sort of person who had 240 global variables). Does this help ?
Alternatively, am I completely missing the point here?
No, I think you're just discovering how convoluted/complicated this namespace thing is ... detrimentally so, imho.
Many thanks in advance
Well, hope it helps. chas ps. returning to your first sentence :
What I want to know is this: how do I perform the following tasks (I've had a look in the DTML user's guide and can't find anything to help me):
don't worry - it wasn't in there. I think everyone has had to work this out for him or her self :(