I may not be understanding your needs correctly, but I recently did this: 1. The form builder function switches based on some piece of info in $form_state. 2. If the info is there, present information. If the information is not there, present a form. 3. The submit function contains onlly $form_state['rebuild'] = TRUE. Basically you're giving the form builder function two ways to build the page: With data and without it. -Randy On Mon, May 10, 2010 at 10:37 AM, Bayne, Sam <sbayne@sccd.ctc.edu> wrote:
I'm quite frustrated with the Form API right now, so please forgive my tone.
I've got a form that has a bunch of inputs, all of them multiselects, that allow the user to choose what classes to see in our schedule. (our class schedule is in an external database). I've got a bunch of code in the form_submit function that builds a very elaborate sql query to get the list of requested classes.
Unfortunately, the form_submit function is not actually permitted to display anything except through drupal_set_message().
So I have to either pass my complicated sql query, or all the contents of the form fields to some other page through $form_state['redirect'].
How do I do that without shoving it all into the querystring?
Right now, I'm looking at the performance issues of:
A: storing the query as a string in the database with a query_id, then sending a query_id in the redirect, B: storing the result of the query in the database with a result_id, then sending a result_id in the redirect.
Is there some other way to accomplish what I want?
p.s. I've looked at the search module, it basically shoves the form input into the querystring of the redirect. That'll work for a single input, but multiple array inputs will be a huge pain.
-- Randy Fay Drupal Module and Site Development randy@randyfay.com +1 970.462.7450