¿Cómo puedo mantener las variables de URL después del envío del formulario con PHP Form Builder Class?

For some reason, if a mistake is made on my form the url variables disappear and there must be a way to keep them. I am newer to PHP and very new to PHP Form Builder Class so I can't figure this out. My form page looks like:

<?php
require_once '../site_globals/FirePHP.class.php';
ob_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Step Two: Physician Supervisor Feedback</title>
<link rel="stylesheet" type="text/css" href="../css/view.css" media="all" />
</head>
<body id="main_body" >
<img id="top" src="../images/top.png" alt="" />
<div id="form_container">
  <div id="form_container" style="background-color: #004F79; height:45px;"></div>
  <div style="padding:30px;">
    <div class="form_description">
      <h2>Step Two: Physician Supervisor Feedback</h2>
      <p></p>
    </div>
    <?php
session_start();
$hide  = $_GET['id'];
$hide1 = $_GET['hash'];
include '../site_globals/dbc.php';
error_reporting(0);
include("../PFBC/Form.php");
if (isset($_POST["form"])) {
    if (Form::isValid($_POST["form"])) {
        /*The form's submitted data has been validated.  Your script can now proceed with any 
        further processing required.*/
        $name       = filter($_POST['name']);
        $title      = filter($_POST['title']);
        $email      = filter($_POST['email']);
        $fina       = filter($_POST['fina']);
        $status     = filter($_POST['status']);
        $comments   = filter($_POST['comments']);
        $date       = filter($_POST['date+']);
        $hidden     = filter($_POST['hidden']);
        $hiddenhash = filter($_POST['hiddenhash']);
        //Run first query to input POSTS into table
        $query_1    = "UPDATE usc_table SET name_2='$name', title_2='$title', email='$email', financial='$fina', status_2='$status', comments='$comments', date_2='$date' WHERE submission_id='$hidden'";
        $things = mysql_query($query_1) or die(mysql_error());
        //Run second query to update feedback column in submissions
        $query_2 = "UPDATE submissions SET feedback=3 WHERE submission_id=$hidden";
        mysql_query($query_2) or die(mysql_error());
        INCLUDE '../site_hospital01/pdfmaker_2.php';
        echo "Thank You, Your Feedback Has Been Submitted.";
    } else {
        /*Validation errors have been found.  We now need to redirect back to the 
        script where your form exists so the errors can be corrected and the form
        re-submitted.*/
        $hide    = $_GET['id'];
        $hide1   = $_GET['hash'];
        $firephp = FirePHP::getInstance(true);
        $firephp->log("$hide", 'Iterators');
        $pageURL = $_SERVER['REQUEST_URI'] . "?id=" . $hide . "&&hash=" . $hide1;
        header("Location: " . $pageURL);
    }
    exit();
}
?>
 <?php
$hide     = $_GET['id'];
$hide1    = $_GET['hash'];
$options  = array(
    "Order as needed",
    "Shelf Stock",
    "Consignment"
);
$options1 = array(
    "Approved",
    "Denied"
);
$form     = new Form("anything", 700);
$form->addElement(new Element_Hidden("form", "anything"));
$form->addElement(new Element_Textbox("Name:", "name", array(
    "required" => 1
)));
$form->addElement(new Element_Textbox("Title:", "title", array(
    "required" => 1
)));
$form->addElement(new Element_Textbox("Email:", "email", array(
    "required" => 1
)));
$form->addElement(new Element_YesNo("Do you have a financial interest in the manufacturer of this product:", "fina", array(
    "required" => 1
)));
$form->addElement(new Element_Radio("Status of this request:", "status", $options1, array(
    "inline" => 1,
    "required" => 1
)));
$form->addElement(new Element_Textarea("Comments:", "comments", array(
    "required" => 0
)));
$form->addElement(new Element_Date("Date:", "date+"));
$form->addElement(new Element_Hidden("hidden", "$hide"));
$form->addElement(new Element_Hidden("hiddenhash", "$hide1"));
$form->addElement(new Element_Button);
$form->render();
//var_dump(get_defined_vars());
?>
 </div>
</div>
<img id="bottom" src="../images/bottom.png" alt="" />
</body>

</html>
<?php
ob_end_flush();
?> 

It is live at http://supplychex.com/site_hospital01/feedback_2.php?id=&&hash=

Any ideas on how to keep the URL Variables available after the form submission if there are errors? I've tried several things and they disappear every time. I'm hoping someone smarter than me can tell me how they would handle this. Ive tried redirecting the page to every suggested URL on this site meant to keep url variables in place and frustratingly they still disappear. I've thought about hidden fields but the form is not being posted since there are errors. Help....

preguntado el 30 de enero de 12 a las 19:01

1 Respuestas

I think that the usage of Form Builder class is unnecessary, revise the code starting from else { /*Validation errors have been found. We now need to redirect back to the script where your form exists so the errors can be corrected and the form re-submitted.*/ and manually code the form. Then add a value="<?php echo $_POST['whatever']; ?> to each element you wish to keep.

Respondido el 30 de enero de 12 a las 23:01

I have larger business reasons for using PFBC. I will need to create many of these forms in the future and this class makes it extremely simple from a design standpoint to build forms quickly. I'm hoping I don't have to redo all of my forms because of this problem. Would you have any ideas if I was to use PFBC how to pull the GET variables into the else statement? Thanks. - Dev Newb

Figured it out. Just capture hidden fields immediately after if (isset($_POST["form"])) { then they are available in the else statement to be added to the url and will be available if there are errors on the form. - Dev Newb

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.