2012-01-30 23 views
0

由於某種原因,如果在我的表單上犯了一個錯誤,那麼url變量會消失,並且必須有一種方法來保留它們。我是PHP新手,PHP Form Builder Class很新,所以我無法弄清楚。我的表單頁面看起來像:如何在使用PHP Form Builder Class提交表單提交後保留url變量

<?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變量保留在原位並令人沮喪地仍然消失。我已經考慮過隱藏的字段,但是由於出現錯誤,表單沒有發佈。幫助....

回答

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']; ?>

+0

我有更大的使用PFBC的商業理由。我將來需要創建許多這樣的表單,並且從設計的角度來看,這個類可以非常簡單地快速構建表單。因爲這個問題,我希望我不必重做所有的表格。如果我要使用PFBC如何將GET變量拉入else語句,你會有什麼想法嗎?謝謝。 – 2012-01-30 19:56:51

+0

想通了。只需在if(isset($ _ POST [「form」]))之後立即捕獲隱藏的字段,那麼它們在else語句中可用於添加到url中,並且在表單中存在錯誤時可用。 – 2012-01-30 21:53:38