Jump to content

Archived

This topic is now archived and is closed to further replies.

strackan

php required forms help

Recommended Posts

Hello,

I am relatively new to php/mysql and have been trying to get the following code to work, without success for about a week. Please help a poor newbie.

Here is my initial code:
[code]
<?php
// checkBlank.php -- a program to check for blank entries in a form
?>
<!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=iso-8859-1" />
<title>Empty Fields</title>
</head>
<body>
<?php
// set up array of label fields
$label_array = array ( "first_name" => "First Name",
                       "middle_name" => "Middle Name",
                       "last_name" => "Last Name",
                       "phone" => "Phone" );
// check each field for blanks
foreach ($_POST as $field => $value)
{
    if ($field != "middle_name")
    {
        if ( !$value )
        {
            $blank_array[$field] = "blank";
        }
    }
}
// if any fields are blank, display error message and form
if (@sizeof($blank_array) > 0) // if blank fields are found
{
    echo "<b>You didn't fill in one or more required fields. You must enter:</b>";
// display list of missing information
    foreach ($blank_array as $field => $value)
    {
        echo "<b><blockquote>$label_array[$field]</blockquote></b>";
    } // end foreach loop
// redisplay form
$first_name=trim(strip_tags($_POST['first_name']));
$middle_name=trim(strip_tags($_POST['middle_name']));
$last_name=trim(strip_tags($_POST['last_name']));
$phone=trim(strip_tags($_POST['phone']));
echo "<p><hr>
    <form action='checkBlank.php' method='POST'>
    <center>
    <table width='95%' border='0' cellspacing='0' cellpadding='2'>
    <tr><td align='right'><b>{$label_array['first_name']}:
    </b></td>
    <td><input type='text' name='first_name' size='65' maxlength='65' value='$first_name' ></td>
    </tr>
    <tr><td align='right'><b>{$label_array['middle_name']}:
    </b></td>
    <td><input type='text' name='middle_name' size='65' maxlength='65' value='$middle_name' ></td>
    </tr>
    <tr><td align='right'><b>{$label_array['last_name']}:
    </b></td>
    <td><input type='text' name='last_name' size='65' maxlength='65' value='$last_name' ></td>
    </tr>
    <tr><td align='right'><b>{$label_array['phone']}:
    </b></td>
    <td><input type='text' name='phone' size='65' maxlength='65' value='$phone' ></td>
    </tr>
    </table>
    <p><input type='submit'
        value='Submit name and phone number' >
        </form>
        </center>";
exit();
}
echo "Welcome to your new account. You may now <a href='login.php'>log in</a>.";
?>
</body>
</html>
[/code]

When I view this locally, I see:

Welcome to your new account. Please log in.

The form is completely bypassed. So, I tried moving the '}' after the exit(); (line 68) line to the line right before the \\redisplay form comments (line 37). When I do that, I get the form, and it works flawlessly, except when I finally input all the required fields, the form just continues to redisplay. It does not display the welcome message.

In short, I can't get the form to display the welcome message upon successfully inputting all required fields. I'm guessing this is due to a missing ELSE statement or bracket, but I can't for the life of me figure out what I'm missing. Any help would be greatly appreciated.

Share this post


Link to post
Share on other sites
How about using this workaround...

[code]
<?php
// checkBlank.php -- a program to check for blank entries in a form
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Empty Fields</title>
</head>
<body>
<?php
// set up array of label fields
$label_array = array ( "first_name" => "First Name",
                       "middle_name" => "Middle Name",
                       "last_name" => "Last Name",
                       "phone" => "Phone" );
// check each field for blanks

@$first_name = trim(strip_tags($_POST['first_name']));
@$middle_name = trim(strip_tags($_POST['middle_name']));
@$last_name = trim(strip_tags($_POST['last_name']));
@$phone = trim(strip_tags($_POST['phone']));

if(strlen($first_name) < 1)
    {
        $blank_array['first_name'] = 'blank';
    }
if(strlen($last_name) < 1)
    {
        $blank_array['last_name'] = 'blank';
    }
if(strlen($phone) < 7)
    {
        $blank_array['phone'] = 'blank';
    }

// if any fields are blank, display error message and form
if (@count($blank_array) > 0) // if blank fields are found
{
    echo "<b>You didn't fill in one or more required fields. You must enter:</b>";
// display list of missing information
    foreach ($blank_array as $field => $value)
    {
        echo "<b><blockquote>$label_array[$field]</blockquote></b>";
    } // end foreach loop
// redisplay form
echo("<p><hr><form action='checkBlank.php' method='POST'><center><table width='95%' border='0' cellspacing='0' cellpadding='2'><tr><td align='right'><b>");

echo($label_array['first_name']);
echo(":</b></td><td><input type='text' name='first_name' size='65' maxlength='65' value='$first_name' ></td></tr><tr><td align='right'><b>{$label_array['middle_name']}:</b></td><td><input type='text' name='middle_name' size='65 'maxlength='65' value='$middle_name' ></td></tr><tr><td align='right'><b>{$label_array['last_name']}:</b></td><td><input type='text' name='last_name' size='65' maxlength='65' value='$last_name' ></td></tr><tr><td align='right'><b>{$label_array['phone']}:</b></td><td><input type='text' name='phone' size='65' maxlength='65' value='$phone' ></td></tr></table><p><input type='submit' value='Submit name and phone number' ></form></center>");
exit;
}
echo "Welcome to your new account. You may now <a href='login.php'>log in</a>.";
?>
</body>
</html>
[/code]

Share this post


Link to post
Share on other sites
First off, thanks a lot for your help. I think I'm a lot closer now. I just tried this code, and it seems to work fine, except for one problem:

When the form is first displayed, it gives the blank fields error:

[i]You didn't fill in one or more required fields. You must enter:

First Name

Last Name

Phone[/i]

After that it works fine. How can I ensure that the form understands not to display blank field notices when it is first loaded?

Thanks again...

Share this post


Link to post
Share on other sites

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.