I find it much easier when you indent everything "properly" (to my eyes, anyway). After doing so, I found the problem fairly quickly:
PHP Code:
<?php
// function to output form and hold previously entered values.
function user_form()
{
//output the form HTML.
echo '<p>Please fill in at least two fields.</p>';
echo '<form action="'.htmlspecialchars($_SERVER['PHP_SELF']).'" method="post">';
echo '<table border="0" cellspacing="4" cellpadding="0">';
echo '<tr><td>Vertical Distance:</td><td><input type="text" name="VD" value="'.htmlspecialchars($_POST['VD']).'"></td></tr>';
echo '<tr><td>Horizontal Distance:</td><td><input type="text" name="HD" value="'.htmlspecialchars($_POST['HD']).'"></td></tr>';
echo '<tr><td>Throw Distance:</td><td><input type="text" name="TD" value="'.htmlspecialchars($_POST['TD']).'"></td></tr>';
echo '<tr><td colspan="2"><input type="submit" value="Add to Database" name="submit"></td></tr>';
echo '</table>';
echo '</form>';
}
// has the form been submitted?
if (isset($_POST['submit']))
{
// the form has been submitted
// perform data checks.
$error_str = ''; // initialise $error_str as empty
if (isset($_POST['VD']))
{
if (!is_numeric($_POST['VD']))
{
$error_str .= '<li>VD must be a number</li>';
}
if (isset($_POST['HD']))
{
if (!is_numeric($_POST['HD']))
{
$error_str .= '<li>HD must be a number</li>';
}
if (isset($_POST['TD']))
{
if (!is_numeric($_POST['TD']))
{
$error_str .= '<li>TD must be a number</li>';
}
// now, have any of these errors happened? We can find out by checking if $error_str is empty
if (!empty($error_str)) {
// errors have occured, halt execution and show form again.
echo '<p>There were errors in the information you entered, they are listed below:</p>';
echo '<ul>'.$error_str.'</ul>';
// show form again
user_form();
exit; // die
}else{echo'Success!!';}
// if we get here, all data checks were okay, process information as you wish.
} else {
// the form has not been submitted, let's show it
user_form();
}
?>
I stopped midway as you can see, but I found two errors already (forgot to close off braces). I'll finish it now the way I think you were going for... The other change I made is combining some of your ifs -
PHP Code:
if ($a)
{
if ($b)
{
// do stuff
{
}
// is the same as :
if ($a and $b)
{
// do stuff
}
Working copy (as far as executing without errors)
PHP Code:
<?php
// function to output form and hold previously entered values.
function user_form()
{
//output the form HTML.
echo '<p>Please fill in at least two fields.</p>';
echo '<form action="'.htmlspecialchars($_SERVER['PHP_SELF']).'" method="post">';
echo '<table border="0" cellspacing="4" cellpadding="0">';
echo '<tr><td>Vertical Distance:</td><td><input type="text" name="VD" value="'.htmlspecialchars($_POST['VD']).'"></td></tr>';
echo '<tr><td>Horizontal Distance:</td><td><input type="text" name="HD" value="'.htmlspecialchars($_POST['HD']).'"></td></tr>';
echo '<tr><td>Throw Distance:</td><td><input type="text" name="TD" value="'.htmlspecialchars($_POST['TD']).'"></td></tr>';
echo '<tr><td colspan="2"><input type="submit" value="Add to Database" name="submit"></td></tr>';
echo '</table>';
echo '</form>';
}
// has the form been submitted?
if (isset($_POST['submit']))
{
// the form has been submitted
// perform data checks.
$error_str = ''; // initialise $error_str as empty
if (isset($_POST['VD']) and !is_numeric($_POST['VD']))
{
$error_str .= '<li>VD must be a number</li>';
}
if (isset($_POST['HD']) and !is_numeric($_POST['HD']))
{
$error_str .= '<li>HD must be a number</li>';
}
if (isset($_POST['TD']) and !is_numeric($_POST['TD']))
{
$error_str .= '<li>TD must be a number</li>';
}
// now, have any of these errors happened? We can find out by checking if $error_str is empty
if (!empty($error_str))
{
// errors have occured, halt execution and show form again.
echo '<p>There were errors in the information you entered, they are listed below:</p>';
echo '<ul>'.$error_str.'</ul>';
// show form again
user_form();
exit; // die
}
else
{
echo 'Success!!';
}
// if we get here, all data checks were okay, process information as you wish.
}
else
{
// the form has not been submitted, let's show it
user_form();
}
?>
Cheers