Adam
Adam

Reputation: 29

Submitting Form Not Displaying Variables

When I submit my form an email is sent to my email address with details entered in the form but when I recieve the email the data is blank here is my code

    <?php
$form = '<form action="test2.php" method="POST">
<table width="300" style="border: 1px solid black;">
<tr>
<td>Name         &nbsp; <td><input type="text" id="name">
<tr>
<td>Phone Number &nbsp; <td><input type="text" id="telephone">
<tr>
<td colspan="2">
<input type="submit" name="submit" value="submit"/></div>
</tr>
</table>';

echo $form;
$to = '[email protected]';
$name = $_POST['name'];
$telephone = $_POST['telephone'];

$body = "<div>Name: $name <br>Telephone Number: $telephone<br></div>";


// subject
$subject = 'Call Back Requested';


// message
$message = $body;


// To send HTML mail, the Content-type header must be set
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";


// Additional headers
$headers .= 'To:' . "\r\n";
$headers .= 'From: Call Back Request <[email protected]>' . "\r\n";

if(isset($_POST['submit'])){

mail($to, $subject, $message, $headers);
}

?>

The problem is when I submit the form the I recieve an email that says

Name (Nothing) Phone Number (Nothing)

Can anyone tell me where I am going wrong

Thanks In Advance

Adam

Upvotes: 0

Views: 84

Answers (3)

user1785900
user1785900

Reputation:

you have alot of mistakes in closing tags .. and its bad practice to display a whole html form using echo .. check out this code:

<?php

    extract($_POST);

    if ( isset($submit) )
    {
        $to = '[email protected]';

        $body = "<div>Name: $name <br>Telephone Number: $telephone<br></div>";
        $subject = 'Call Back Requested';
        $message = $body;

        $headers  = 'MIME-Version: 1.0' . "\r\n";
        $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
        $headers .= 'To:' . "\r\n";
        $headers .= 'From: Call Back Request <[email protected]>' . "\r\n";

        mail($to, $subject, $message, $headers);
    }

?>

<html>
    <form action="test2.php" method="POST">
        <table width="300" style="border: 1px solid black;">
            <tr> 
                <td>Name &nbsp; </td>
                <td> <input type="text" id="name" name="name" /> </td>
            </tr>
            <tr>
                <td>Phone Number &nbsp; </td>
                <td> <input type="text" id="telephone" name="telephone" /> </td>
            </tr>
            <tr>
                <td colspan="2"> <input type="submit" name="submit" value="submit"/> </td>
            </tr>
    </form>
</html>

Upvotes: 0

user1786097
user1786097

Reputation: 11

Just after a quick look you should swap your $body to read

$body = '<div>Name: ' . $name . '<br>Telephone Number: ' . $telephone . '<br></div>';

Try that out and see if it works

Upvotes: 0

Zoltan Toth
Zoltan Toth

Reputation: 47667

You have to specify the name attribute for your inputs:

<input type="text" id="name" name="name">
<input type="text" id="telephone" name="telephone">

instead of

<input type="text" id="name">
<input type="text" id="telephone">

Upvotes: 3

Related Questions