如何在使用PHP Form Builder Class提交表单后保留url变量

时间:2012-01-30 19:38:05

标签: php mysql linux

出于某种原因,如果我的表单上出现错误,则url变量会消失,并且必须有一种方法可以保留它们。我是PHP的新手,也是PHP Form Builder Class的新手,所以我无法弄清楚这一点。我的表单页面如下:

<?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();
?> 

现在是http://supplychex.com/site_hospital01/feedback_2.php?id=&&hash=

如果有错误,有关如何在表单提交后保留URL变量的任何想法?我尝试了几件事,每次都会消失。我希望比我聪明的人可以告诉我他们将如何处理这个问题。我已经尝试将页面重定向到此站点上的每个建议的URL,以保持url变量到位,令人沮丧的是它们仍然消失。我已经考虑了隐藏的字段,但由于存在错误,因此表单未被发布。帮助....

1 个答案:

答案 0 :(得分:3)

我认为不需要使用Form Builder类,从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.*/开始修改代码并手动编写表单代码。然后为您要保留的每个元素添加value="<?php echo $_POST['whatever']; ?>