|
Posted by David Haynes on 11/19/07 11:46
stathis gotsis wrote:
> Hello everyone,
>
> I am tying to come up with an elegant way to process some input data that
> come from a form. When the user hits the 'Submit' button, i want the form to
> appear again with the already entered valid data filled in and prompt the
> user to re-enter the non-valid data. If all data is valid, i will forward to
> an other .php page which enters the data into a database.
>
> I tried to do this in the following way: the form always hits back on
> itself, but when all data is valid i use the PHP:header() to redirect to the
> data.php that performs the database insertion. The problem is that the data
> is not available to data.php in the $_POST variable. How can i overcome this
> problem? Any other subtle way to handle the whole thing? Any help
> appreciated.
>
>
I would break the function a little differently.
1. Have a form (view) that is sensitive to $SESSSION. That is, it will
use the values in SESSION to populate any dynamic values to be displayed
in the form.
2. Have another process (controller) that:
a) processes $_POST or $_GET
b) if all is valid, does the insert/update and redirects to another
page (Your data has been saved.)
c) if all is not valid, populates the $SESSION with good values and
then redirects to the view form.
The whole thing is started by calling the controller. Since no data is
valid, it will redirect to the view.
The view then presents a form for filling in.
The user fills in the form and submits which then calls the controller.
The controller processes the form data and either updates/inserts it or
calls the view again.
If you encapsulate your database accesses into a class or set of classes
which are called from the controller, you will have a light-weight
implementation of a classic Model-View-Controller (MVC2) architecture.
-david-
[Back to original message]
|