Multi-forms, the amazing time saver

I’ve done a couple of things that involve a very similar front end, and a identical back end, the latest of which was a basic quiz system. The front end always involves forms (because the internet was made to fill out pointless data on) and making form and form can be a pain. So, i’ve adapted a technique I made for the quiz to make it a little more clear.

To start, I use a multidimensional array usually, kinda link the one below

So thats the data for the form, it’s very simple but it’s only an example, I’ve done this with large forms over 100 entries and it does make things simpler, I’ve also added default value formulas and if the form is saved (used in conjunction with my javascript ajax auto-saver), you can add any additional variables you want, I usually stick in a save one set true/false to denote if I am saving it, I also usually store this in an external file separate from the document and display code so it can be called in multiple places (for instance, the script that saved this data also calls it and checks it against that save field to determine if it should be included in the mysql_query(). That lets me use one saver file and have it save the data from a bunch of files.

Another advantage of this system is that the from is not generated in a very predictable manner and a less experienced user can change it (either through details instructions or blind “replace this thingy here” methodology) and when properly linked to the saving script neither they or you have to deal with making modifications to the save code (and that can save some serious time if the form changes often or there are many of them to work with)

So how does the saving work? simple, lets say we have loaded the data up into the save script. the array is called $form, and it has the subfeilds type, default, and save as mentioned above, and we’ll send it to the save script via POST. The simplest method of managing this would be something like this:

So that will write the name of the form item into a mysql table with the needed schema, it again is very basic, I have added features to make the sceme as it writes (be careful who can do that or you’ll have a huge mess on your hands), and to overwrite old entries, really all depends on what you need it to do.

So thats the style of the array holding the information and saving it, the display part is the key part though, it too is very simple. If you use any non-input type types (like I did in the first example) it’s best to check for those first, then display the standard type fields afterwards (most often the standard ones I use are text and hidden) A basic outline could be like this

‘; foreach($form as $name => $data){ echo $name.”:”; if($data[‘type’]==’date’){ list($month,$day,$year)=explode(‘/’,$data[‘default’]); echo ‘The dates can be put where, with their own loops, or you could load a JS date module or something’; echo ‘I didn’t put them in here because there long, and this post is long enough already’; }else if($data[‘type’]==’gender’){ echo ”; echo ”; }else{ echo ‘ ‘; } echo ‘
‘; } echo ‘

Modify and needed and you got a form, if you decide to make further changes to the form it’s a lot simpler and faster than going through the html code. You have have someone not experience in HTML at all do it, you can have it output in another language, really anything, it’s all in the output section.

You can also get really fancy with this, I have one that calculates the information in the save file and sends in back to the page to update the non-saved fields (a little slower than a native JS update but it doesn’t requires another et of formulas to update). I’ve also used this concept for a quiz engine, the files are easy to modify and instead of the save engine I have a correction engine which determines the users score. And with a quick $_GET script I can load an infinite number of quizes without ever having to re-look at the correction or display code. It’s all in the implementation of the ideal.

Please note that none of the code on this page has been tested and was written from memory, if there’s one thats not working post a comment and I’ll fix it up for you.

Leave a Reply

Your email address will not be published. Required fields are marked *