My favorite technique is to look at form processing as a set of orthogonal descriptions. In the case of a validating data entry form the first description is the description of the form itself, which I like in XML, and regardless you could use your own notation. The second description is orthogonal to the first and is the description of the processes run against the form, data entry, data validation, data submission, and, perhaps, information rendering. (Unfortunately I know of no non-proprietary sites to reference.)

Bill

On 5/18/2014 1:43 AM, Michael B Allen wrote:
Hi All,

Occasionally I need to do a little web programming and I must admit
after almost 2 decades I still find myself searching for a better way
to handle HTML forms. I blame this mostly on the W3C's invalid
assumption that HTML is for rendering documents and not building
applications. But putting blame aside, I would like to ask the list to
share their best form processing techniques.

There's a particular scenario that bugs me about forms which is that
it is increasingly rare that you have a bunch of fields with just a
submit button. There are usually multiple possible operations that
build up and modify the data before it's submitted. A good example of
this is a shopping cart where there is one form but commands for
removing and item, updating quantities, applying a discount code and
submitting the cart. But the form only has one action.

Currently I've been just using hidden fields and then call a
javascript function to fill in the hidden fields with the desired data
for the particular command and submit the form.

For example:

...
<head>
<script type="text/javascript">
function cart_remove(itemid) {
     document.cartform.cmd.value = 'remove';
     document.cartform.itemid.value = itemid;
     document.cartform.submit();
}
function cart_update_quantities() {
     document.cartform.cmd.value = 'update';
     document.cartform.submit();
}
...
</script>
</head>
<form name="cartform" action=/purchase" method="post">
<input name="tok" type="hidden" value="0eb3397aa9a4055a"/>
<input name="cmd" type="hidden" value="next"/>
<input name="itemid" type="hidden" value=""/>
...
<input name="quantity_3756" type="text" value="1"/>
<a href="javascript:cart_remove(3756)">Remove</a>
...
<a href="javascript:cart_update_quantities()">Update Qty.</a>
...
</form>

So how would you do this sort of thing?

My current technique seems a little hackish because I'm using the
hidden form element "cmd" to modify the action. In practice it might
seem purer to modify the action to call /purchase/remove or
/purchase/update for use with modern routing on the server.

Can you point me to a site that you think illustrates good form
processing technique?

Note that I'm not really interested in frameworks and third party
components. This cart example is just one example. I'm really trying
to arrive at a proper form processing technique in general. So I'm not
really interested in "Just use Acme Cart 2000" sorts of answers.

Ideas?

Mike


_______________________________________________
New York PHP User Group Community Talk Mailing List
http://lists.nyphp.org/mailman/listinfo/talk

http://www.nyphp.org/show-participation

Reply via email to