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….
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 avalue="<?php echo $_POST['whatever']; ?>to each element you wish to keep.