I have a bunch of pages with long forms, with lots of input
types-text, radios, textareas, and the debugging process has become
overwhelming.
What I need to happen is to make sure that
1. Every field on the page is filled out-if not, a list of incorrect
fields is displayed, and any radio boxes that were checked still are
2. The fields are queried to a table in a database. (The table has the
same column names as the field names)
Here's what I did; can someone tell me why this doesn't work?
<?php
require_once ('../mysql_connect.php');
$page_title = 'Test page';
if (isset($_POST['submit'])) { // Handle the form.
// Create an empty new variable.
$message = NULL;
// Create a function for escaping the data.
function escape_data ($data) {
global $dbc; // Need the connection.
if (ini_get('magic_quotes_gpc')) {
$data = stripslashes($data);
}
return mysql_real_escape_string($data, $dbc);
}
//Create an array of all formfield names
$required=array('field1','field2','field3');
//Check to see if all field names are filled in
function field_check($required) {
foreach($required as $q) {
if(empty($_POST[$q])) {
$message = 'Error: The following field was not filled in: $q';
$ok=FALSE;
}
else {
$ok;
}
}
}
// If no empty posts are returned
if ($ok) {
//set a variable for the current user
$u = addslashes($_COOKIE['user_id']);
//insert all variable values into the table
foreach($required as $q) {
$query = "INSERT INTO test_table ($q) VALUES ('$'.'$q')";
}
// Run the query
$result = @mysql_query ($query); // Run the query.
// If it ran OK, write the the page with a link to continue.
if ($result) {
include ('templates/header.inc');
$page_title = 'Entry Recorded';
echo "<p><b><a href=\"next_page.php\"
class=\"content\">Continue</a>";
include ('templates/footer.inc');
exit(); // Quit the script.
}
// If it did not run OK, show an error
else {
$message = '<p>Your form could not be recorded due to a system
error. We apologize for any inconvenience.</p><p>' . mysql_error() .
'</p>';
}
}
// Close the database connection
mysql_close($dbc);
}
include ('templates/header.inc');
// Print the error message if there is one.
if (isset($message)) {
echo '<font color="red">', $message, '</font>';
}
// Print the page.
?>
<form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post">
<table>
<tr>
<td><input type="radio" name="field1" value="1"</td>
<td><input type="radio" name="field1" value="2"></td>
<td><input type="text" name="field2"></td>
<td><textarea name="field3" rows="20" cols="30">
</textarea></td>
</tr>
</table>
<p>
<input type="submit" name="submit" value="Add to Record">
</p>
</form>
<?
include ('templates/footer.inc'); // Include the HTML footer.
?>
Thanks.