RE: [PHP] EXAMPLE: Redirect upon execution of script...

From: Date: Mon, 26 Nov 2001 00:58:26 +0000
Subject: RE: [PHP] EXAMPLE: Redirect upon execution of script...
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-75689@lists.php.net to get a copy of this message
Doing this is very simple, although a pain in the rear... For those of you that have any confusion on this issue, pay very close attention to this script. It effectivly demonstrates how to deal with a form, and display intellegent errors WITHOUT any of that "...Please click your browsers back button..." crap. Have a hidden field in your form - ACTION=SAVE This will tell your script when to look for input. Write your script like this **************************************************** <? //Make sure your ID is of int type. //If ID > 0 then you are in UPDATE mode. if ID == 0 then you are in INSERT MODE $ID = intval($ID); //The main reason that I use a switch instead of an IF is that you can break out at any time. switch($ACTION) case 'SAVE': {
        //Validate all fields here
        if(empty($field1)) $oErr->field1 = 'Required';
        if(empty($field2)) $oErr->field2 = 'Required';
        //If the variable $oErr is set, then break
        if(isset($oErr)) break;
        //We are okay, add slashes to all fields...
        $field1 = addslashes($field1);
        $field2 = addslashes($field2);
        if($ID)
        {       //UPDATE MODE
                $sQuery = "UPDATE table SET field1='field1', field2='field2 WHERE id=$ID";
                //Do the UPDATE query here (however you do that)
        }
        else
        {       //INSERT MODE
                $sQuery = "INSERT INTO table VALUES ('field1', 'field2');
                //Do the INSERT query here (however you do that)
                //Grab the newly inserted ID
                $ID = mysql_insery_id();
        }
        //We have success, Do the redirect here
        header("Location: http://www.yourdomain.com/nextscript.php?ID=$ID");
        exit;
} ?> <html> <body>
      <form name="frmInput" action="<?= $PHP_SELF ?>" method="post">
         <input type="hidden" name="ACTION" value="SAVE">
         <input type="hidden" name="ID" value="<?= $ID ?>">
         Field 1: <? if(isset($oErr->field1)) echo($oErr->field1); ?><br>
         <input type="text" name="field1" value="<?= addslashes($field1) ?>">
         Field 2: <? if(isset($oErr->field2)) echo($oErr->field2); ?><br>
         <input type="text" name="field2" value="<?= addslashes($field2) ?>">
      </form>
</body> </html> ****************************************************** At 06:24 PM 11/25/2001 +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


« previous php.general (#75689) next »