Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
337 views
in Technique[技术] by (71.8m points)

How do I send a multiple field form to email with multiple variables?

I've spent most of today and all of yesterday just trying to get a simple, basic send-to-email PHP code to work. Here is the code I've tried putting together myself after extensively researching, checking, and editing based on a lot of other threads I've read on this website and on other sites.

   <?php 

$to='[email protected]';
$subject='Commission Inquiry';
$email = $_REQUEST['Email'] ; 
$headers = "From: $email";
$sent = mail($to, $subject, $message, $headers) ; 
$message="Name:  ".$name. "
" . "Email:  " .$email . "
" . "Username:  " .$user . "
" . "Type:  ".$position. "
" . "Add-Ons:  ".$addons. "
" . "Price:  ".$price. "
" . "Brief Description:  ".$briefdesc;


$name=$_POST['FirstName'],['LastName'];
$email=$_POST['Email'];
$user=$_POST['User'];

$position=$_POST['position'];
$addons=$_POST['cat'],['dog'];
$price=$_POST['price'];
$desc=$_POST['briefdesc'];



if($sent) 
{print "Your mail was sent successfully. Please be patient and the artist will contact you soon. Thanks!"; }
else 
{print "We encountered an error sending your mail"; }


?> 

There is actually a LOT more form data than just that basic information, but I cannot even get the basic information to show up. For the portion of html codes it is pulling from, here is some of what it looks like.

<!--NAME-->
        </li>       <li id="li_2" >
        <label class="description" for="element_2">Name </label>
        <span>
        <input onkeypress="return handleEnter(this, event)" id="element_2_1" name="FirstName" class="element text" maxlength="255" size="14" value=""/>
        <label>First</label>
        </span>

        <span>
        <input onkeypress="return handleEnter(this, event)" id="element_2_2" name="LastName" class="element text" maxlength="255" size="18" value=""/>
        <label>Last</label>
        </span>
        <p class="guidelines" id="guide_2"><small>Please fill this in as the name I will see on Paypal.</small></p> 

<!--EMAIL-->

        </li>       <li id="li_1" >
        <label class="description" for="element_1">Email </label>
        <div>
        <input onkeypress="return handleEnter(this, event)" id="element_1" name="Email" class="element text medium" type="text" maxlength="255" value=""/>  
        </div>
        <p class="guidelines" id="guide_1"><small>Your Paypal email</small></p> 



<!--USERNAME-->

        </li>       <li id="li_3" >
        <label class="description" for="element_3">DA/Tumblr Username </label>
        <div>
        <input onkeypress="return handleEnter(this, event)" id="element_3" name="User" class="element text medium" type="text" maxlength="255" value=""/> 
        </div>
        <p class="guidelines" id="guide_3"><small>If you have an account on either Deviantart or Tumblr and wish to be credited in the commission description, please note it here.</small></p> 
        </li>
        <p> 

<!--POSITION TYPE-->

    </li>       <li id="li_26" >
    <label class="description" for="element_26">Comm. Type </label>

    <div>

    <select class="element select medium" id="element_26" name="position"> 

    <option value="" selected="selected"></option>
    <option value="1" >Bust</option>
    <option value="2" >Waist</option>
    <option value="3" >Full-Body</option>

    </select>
    </div>

    <p class="guidelines" id="guide_26">
    <small>Please choose what position you wish for your character(s) to be viewed from. Price will change depending on what type you choose.</small></p> 


<!--ADD ONS-->

    </li>       <li id="li_27" >
    <label class="description" for="element_27" name="addons">Add-Ons </label>

    <span>

    <input name="cat" type="checkbox" onClick="return KeepCount()">
    +1 Character<br>


    <input name="dog" type="checkbox" onClick="return KeepCount()">
    +2 Characters

I have multiple fields (such as the First and Last Name) that I need to be one single variable in the email code, and I need to be able to display all of the filled out form fields in an email. I can't even get more than one variable to show up at this point.

Also the form itself includes selects, checkboxes, textareas, and image uploads. I haven't even gotten to that point - I'm just trying to make some of the basic information show up right now. I'm very familiar with HTML and Javascript, just not so much PHP, though I've worked with it before. Some of the form data is used in Javascript code on the same page as the HTML, also. The actual PHP data is on a separate file that my form pulls from.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I think what's happening is you're attempting to use variables before they have the value you would like. Try something like the following and let me know how it goes.

<?php

$to = '[email protected]';
$subject = 'Commission Inquiry';
$headers = "From: $email";

$fname = $_POST['FirstName'];
$lname = $_POST['LastName'];
$email = $_POST['Email'];
$user = $_POST['User'];
$position = "CHANGE-ME";
$addons = "CHANGE-ME";
$price = "CHANGE-ME";
$briefdesc = "CHANGE-ME";

$message = "Name: ".$fname.", ".$lname."
";
$message .= "Email: $email 
";
$message .= "Username: $user 
";
$message .= "Type: $position 
";
$message .= "Add-Ons: $addons 
";
$message .= "Price: $price 
";
$message .= "Brief Description: $briefdesc 
";

$sent = mail($to, $subject, $message, $headers);

if($sent) {
    echo "Success";
}
else {
    echo "Failure";
}
?>

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...