RE: [PHP] Redirect upon execution of script...
| From: | Daniel Alsén | Date: | Sun, 25 Nov 2001 18:03:08 +0000 |
| Subject: | RE: [PHP] Redirect upon execution of script... | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-75657@lists.php.net to get a copy of this message | ||
Hmm...either i don´t really get what you mean, or you missed the problem.
This is the situation:
I have a form which results is to be inserted in a db. When the form is
submitted the page calls itself and does a db INSERT based on if a couple of
statements is true - otherwise it displays a proper error message.
So far everything is fine and is working like a charm.
But:
I want a redirection after a successfull db INSERT. After the INSERT is made
(which is what the page is for) i set a variable, $done, to 1.
Right now i only use $done to display a message at the bottom of the screen
saying that the INSERT worked. But i want the page to redirect itself as
soon as $done is set to 1.
The problem i have is: I can only send headers (wich i use for redirection -
right??) at the top of the page - before all the other code. But since $done
is set far down in the code, after my form and db-statements, the header
will never know when to be sent.
Is there a way of calling a headerfunction in the top of the page?
- Daniel
> -----Original Message-----
> From: Christian Dechery [mailto:cdechery@easynet.com.br]
> Sent: den 25 november 2001 18:41
> To: Daniel Alsén; PHP; Miles Thompson
> Subject: RE: [PHP] Redirect upon execution of script...
>
>
> sorry if I'm not understanding correctly your problem... but it
> seems quite
> simple to me...
> I've created like 10.000 php forms that does that... I don't see a prob...
>
> what do you want to do?
>
> process a form:
> if something's wrong, print error message and go back
> if everything is fine go to another page... that's it?
>
> well... database inserts has nothing to do with headers...
>
> you can easily do something like
>
> <?php
> switch ($action)
> {
> case "process-form": if( ProcessForm() )
> header("Location:
> next-page.php");
> else
> {
> ShowHeader(); // function to
> display all the HTML you want
> printErrMessage();
> ShowFooter();
> }
> break;
> default: ShowForm();
> break;
> }
> ?>
>
> where ProcessForm returns true or false depending on the DB operation...
>
> of course there cannot be any output before the switch?
>
> did it help?
>
> At 18:24 25/11/01 +0100, Daniel Alsén wrote:
> > > 2. User fills in a form, clicks "submit" which calls the same script,
> > > passing itself the values. Depending on the value passed by the submit
> > > button, the script processes the information (INSERT or
> UPDATE) and sets
> > > $done = 1 if successful.
> > >
> > > The second scenario is easier to handle.
> > > Call the same script, passing it $done, and depending on
> whether or not
> > > $done is set you redirect.
> > >
> > > Juli Meloni has done an excellent tutorial on just this at
> > > http://www.thickbook.com. look in the tutorials for
> > > something
> like "Form
> > > With Error Message". You just have to adapt the logic to suit
> your needs.
> >
> >The second scenario is correct. I am actually already using the method in
> >Melonis tutorial for error messages. But i can´t do a
> redirection that way
> >since $done isn´t set until after the db INSERT. My if-statement for the
> >header is at the top of the page (wich is the only place i can
> put it) and
> >will never know if $done is set or not below.
> >
> >- Daniel
> >
> >
> >--
> >PHP General Mailing List (http://www.php.net/)
> >To unsubscribe, e-mail: php-general-unsubscribe@lists.php.net
> >For additional commands, e-mail: php-general-help@lists.php.net
> >To contact the list administrators, e-mail: php-list-admin@lists.php.net
>
>
> _____________________________
> . Christian Dechery
> . . Gaita-L Owner / Web Developer
> . . http://www.webstyle.com.br
> . . http://www.tanamesa.com.br
>