Brandy Whine wrote:
Hi everyone. You have all helped me as a lurker for almost a year, but now my PHP has advanced a bit and I need to ask a specific question if that's ok. I don't know AJAX but I think I need it now.

You can certainly do this with Javascript; actual AJAX, involving a call to a server, may or may not be necessary.

It's easy to change the "display" attribute of a <div> element in Javascript to show or hide the element:

http://support.internetconnection.net/CODE_LIBRARY/Javascript_Show_Hide.shtml

The idea is that you put <div> elements containing all the form elements that could ever be displayed on the page: use onChange handlers on controlling form form elements to "morph" the form, say, somebody chooses an option from a dropdown.

Libraries like prototype, scriptaculous, moo and such smooth over differences between broswers, make this kind of code more maintainable, and can also give you really cool effects (parts of the form can slide or fade in.)

AJAX can enter if you'd like to pull information in from the web in the process of updating the form. For instance, a user might a state from a list of US states, and then the page uses AJAX to populate a list of counties from that state. You can accomplish the same thing, in this case, by including a big array with lots of states and counties in the page -- it saves bandwidth to send just the counties that are needed.

---

It's old-school, but you can get accomplish the same aims without Javascript. The idea here is to make a "wizard" interface that has more than one form... Let's call them form1, form2, and form3:

form1: asks some really basic questions that help determine what to display on form2
form2: asks more questions to determine what's on form3
form3: collects the last information and "submits" the form for real.

You can pass answers from form1 into form2 by using hidden form variables... Make your life easy and write a function like

function hide_variable($name,$value) {
print "<input type=hidden name=$name value=".htmlspecialchars($value).">\n";
}

I still think that most people find this kind of interface to be the easiest to use, when it's designed right.




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

NYPHPCon 2006 Presentations Online
http://www.nyphpcon.com

Show Your Participation in New York PHP
http://www.nyphp.org/show_participation.php

Reply via email to