Forums

Split a form and add save point

Heilong 20 Oct, 2008
Hi everyone,

I have a form which is using for now version 3.0 J1.5 BETA 2, the form is an application form used to collect a large amount of information.

These informations are separated into different section.

I'd like to modify the form to have these sections split as a step by step application form, for each step the informations can be saved in case of the user disconnects or doesn't want to finish the application.

For this modification I need to keep the current data structure or made some changes that can fit perfectly.

Is there any way to make a modification like this or I need to create a new application form ? The most important is I need a step by step for which each steps are saved.

Thanks for help,
GreyHead 20 Oct, 2008
Hi heilong,

I think that if you search here for multi-page forms you will find some examples.

I woudl probably do it with one ChronoForms form using showform() at the end of the Autogenerated code and a switch statement in the form html to show the pages one after another according to the value of a hidden field.

Bob
Max_admin 20 Oct, 2008
Hi heilong,

this feature will come in the next release, because you want data saved per each form then this will make it alittle more complicated if you are going to write some code, if you want the whole multi page form to end in 1 row at the db table at the end then you will need to load the last row index after the first page so you can save to the same table record.

Cheers,
Max
Max, ChronoForms developer
ChronoMyAdmin: Database administration within Joomla, no phpMyAdmin needed.
ChronoMails simplifies Joomla email: newsletters, logging, and custom templates.
Heilong 20 Oct, 2008
What do you mean by showform() is it included in a newer version or a function that uses javascript to display or hide elements ?

By the way, in that case are the steps saved when the user displays a new step ?
Heilong 20 Oct, 2008

this feature will come in the next release


Good to hear that🙂

if you want the whole multi page form to end in 1 row at the db table


It's exactly what I want, all the form data save in one row for the user filling the form. I currently have the table and several fields.

you will need to load the last row index after the first page


What if several people are filling the form ? I don't understand well what do you mean by after the first page ?

Thanks for your help,
GreyHead 20 Oct, 2008
Hi Heilong,

You need to write some PHP (and MySQL) to make this work - or wait for the next version of ChronoForms.

It is not difficult but it's not a simple task for a beginner with PHP or Joomla either.

the showform() function is a ChronoForms function (it's been in every version) that you can use to re-show a form. ChronoForms use it with showform($_POST) if there is a validation problem.

When you have steps in form submission you need a way to make sure that there is continuity between the data used in each step. It's quite possible that someone will take a break between steps and logout of Joomla or have their session ended and so you need to recognise them when they go to the form again - send them to the next page and reload their data.

Bob
Heilong 21 Oct, 2008
Hi,

Actually I don't want to mess up the existing data, so I'd rather wait for the next version. But I'd like to know how to do it, an example of code would be useful, then I can test it on a local version.

A deadline for the next version ?

Thanks,
GreyHead 21 Oct, 2008
Hi heilong,

The deadline . . . when it's ready . . .

Bob
Max_admin 21 Oct, 2008
Hi Heilong,

An example for this will be complicated and may need many file hacks, the next version will just handle it in the code, no deadline is set yet but ASAP, many new features are coming in this one and some has more priority.

Cheers,
Max
Max, ChronoForms developer
ChronoMyAdmin: Database administration within Joomla, no phpMyAdmin needed.
ChronoMails simplifies Joomla email: newsletters, logging, and custom templates.
This topic is locked and no more replies can be posted.