Page 1 of 1

Simple email form - Newbie

Posted: Thu Nov 05, 2009 9:29 am
by vlince
Hello all,

First time poster!

I've been asked to create a simple HTML form that submits and sends the information to a particular email.
The client is using PHP. Since I have a .NET and C# background, I've never done any PHP code in my life.
Regardless of the technology, this is a trivial task, so I opened Google and search for PHP email forms example which I did find.

The HTML form and the PHP code works great, it does what it needs to do but the problem I have is:
I would like to display a message, once the form is submitted, saying "Thank you for submitting your request...".
In addition, I would also like to display a red message right next to the textbox if the user has not entered an email.

I do not wish to go crazy with all possible validation rules and what not, this is/will be a very simple form.
The PHP code I have so far, is the following:

Code: Select all

 
<?php
    
    $name = $_REQUEST['txtName'];
    $address = $_REQUEST['txtAddress'];
    $city = $_REQUEST['txtCity'];
    $email = $_REQUEST['txtEmail'];
    
    if($email != '') 
    {
        $body = "A user has submitted a form with the following:\n\n";
        $body .= "Name: $name\n";
        $body .= "Address: $address\n";
        $body .= "City: $city\n";
        $body .= "Email: $email\n";      
    
        mail( "myemail@test.com", "My nice little subject", $body, "From: $email");
 
        print "Thank you for submitting your request..."
    }
    else
    {
        print "Email address is mandatory!"
    }
?>
 

The <form> tag submits to itself using the following:
<form method="post" action="<?php echo $PHP_SELF;?>">

The <form> has 4 textboxes and one submit button.

If the user submits the form without entering an email address, at the top of the page the phrase "Email address is mandatory!".
But I do not wish for this message to be displayed at the top of the page, I'd like the message to be disaplyed next to the textbox in question (or underneath).
The same thing for when the form is submitted correctly, I'd like to display a message at the bottom of the <form>.

Looks like the "print" method isn't enough...should I have some kind of place holder <div> (or label) placed next to the textbox and make the "print" method write in that <div>.

As I said, this should be trivial for any one that has more then 5 min exposure to PHP.
Thanks in advance for the help!
Sincerely

Vince

Re: Simple email form - Newbie

Posted: Thu Nov 05, 2009 11:43 am
by davegmpd
How about, change:

Code: Select all

print "Email address is mandatory!"
for

Code: Select all

$sErrMsg = 'Email address is mandatory!';
and then add in something like this in your HTML:

Code: Select all

 
<input name="email" />
<?php if (isset($sErrMsg)) : ?>
<p class="error"><?php echo $sErrMsg; ?></p>
<?php endif; ?>
 
You could do something similar if successful; eg: set a variable, say $bSuccess=true, and then in the HTML simply do another if block:

Code: Select all

 
<?php if (isset($bSuccess) && $bSuccess) : ?>
 
... message saying thanks html ...
 
<?php else : ?>
 
... form html ....
 
<?php endif; ?>
 
Dave