Hi,
Im having some issues with a checkboxes when the email gets sent once the user submits the form.
When I receive the email, it's either empty or it says array. No matter what different code I try.
I'm really hoping someone can help me out! I'll appreciate any help!
Code:
<form name="quote_form" class="quote_form" method="POST" action="testscript.php">
*Name: <input type="text" name="Name" size="50" class="name">
Business/Organisation: <input type="text" name="BusinessName" size="50" class="BusinessName">
*Contact Number:<input type="text" name="ContactPhone" size="50">
*Email: <input type="text" name="Email" size="50">
Services Required (tick as many as required):
<input type="checkbox" name="ServicesRequired[]" value="CustomWebsiteDesign" /> Custom Website Design
<input type="checkbox" name="ServicesRequired[]" value="Ecommerce" /> E-Commerce
<input type="checkbox" name="ServicesRequired[]" value="TemplateDesign" /> Template Design
<input type="checkbox" name="ServicesRequired[]" value="HostingDomain" /> Hosting/Domain
<input type="checkbox" name="ServicesRequired[]" value="WebDevelopment" /> Web Development
<input type="checkbox" name="ServicesRequired[]" value="Photography" /> Photography
Are there any sites you want your website to be similar to? <input type="text" name="SimilarSites" size="50" >
Will own artwork be supplied? (Logos, images etc) <input type="text" name="OwnArtworkSupplied" size="50">
What pages will you require and estimate of how many? <input type="text" name="Pages" size="50">
Will you want to update the website content yourself?<input type="text" name="UpdateOwnContent" size="50">
Do you have a time frame?<input type="text" name="TimeFrame" size="50">
Do you have a budget you need to work with?<input type="text" name="Budget" size="50">
Enquiry: <textarea rows="8" cols="40" name="Details"></textarea>
<input type="submit" class="submitquotebutton" name="submit" value="submit!">
</form>
Code:
<?php
/* Set e-mail recipient */
$myemail = "info@purpleblaze.com.au";
/* Check all form inputs using check_input function */
$Name = check_input($_POST['Name'], "Enter your name");
$ContactPhone = check_input($_POST['ContactPhone'], "Enter your contact number");
$BusinessName = check_input($_POST['BusinessName']);
$Email = check_input($_POST['Email']);
$ServicesRequired = check_input($_POST['ServicesRequired']);
$SimilarSites = check_input($_POST['SimilarSites']);
$OwnArtworkSupplied = check_input($_POST['OwnArtworkSupplied']);
$Pages = check_input($_POST['Pages']);
$UpdateOwnContent = check_input($_POST['UpdateOwnContent']);
$TimeFrame = check_input($_POST['TimeFrame']);
$Budget = check_input($_POST['Budget']);
$Details = check_input($_POST['Details'], "Write your enquiry");
for ($i=0; $i<count($_POST['ServicesRequired']); $i++){
$ServicesRequired_req = addslashes($_POST['ServicesRequired'][$i]);
}
/* If e-mail is not valid show error message */
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $Email))
{
show_error("E-mail address not valid");
}
/* Let's prepare the message for the e-mail */
$message = "Hello!
Your contact form has been submitted by:
Name: $Name
Contact Number: $ContactPhone
Business Name: $BusinessName
E-mail: $email
Services Required : $ServicesRequired
Websites they want their website to be similar to: $SimilarSites
Will own artwork be supplied: $OwnArtworkSupplied
Pages Required and how many: $Pages
Will you want to update the website content yourself? $UpdateOwnContent
Do you have a time frame: $TimeFrame
Budget: $Budget
Enquiry:
$Details
End of message
";
/* Send the message using mail() function */
mail($myemail, $subject, $message);
/* Redirect visitor to the thank you page */
header('Location: thanks.php');
exit();
/* Functions we used */
function check_input($data, $problem='')
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
if ($problem && strlen($data) == 0)
{
show_error($problem);
}
return $data;
}
function show_error($myError)
{
?>
<html>
<body>
<b>Please correct the following error:</b><br />
<?php echo $myError; ?>
</body>
</html>
<?php
exit();
}
?>
It's all exactly the same as your original code apart from the highlighted part.
All you're doing is looping through each service and and appending to a string so that you can then run you function on it to return it for the email text.
Code:
<?php
/* Set e-mail recipient */
$myemail = "info@purpleblaze.com.au";
/* Check all form inputs using check_input function */
$Name = check_input($_POST['Name'], "Enter your name");
$ContactPhone = check_input($_POST['ContactPhone'], "Enter your contact number");
$BusinessName = check_input($_POST['BusinessName']);
$Email = check_input($_POST['Email']);
foreach($_POST['ServicesRequired'] as $value) {
$ServicesRequired .= "Checked: $value\n";
}
$ServicesRequired = check_input($ServicesRequired);
$SimilarSites = check_input($_POST['SimilarSites']);
$OwnArtworkSupplied = check_input($_POST['OwnArtworkSupplied']);
$Pages = check_input($_POST['Pages']);
$UpdateOwnContent = check_input($_POST['UpdateOwnContent']);
$TimeFrame = check_input($_POST['TimeFrame']);
$Budget = check_input($_POST['Budget']);
$Details = check_input($_POST['Details'], "Write your enquiry");
for ($i=0; $i<count($_POST['ServicesRequired']); $i++){
$ServicesRequired_req = addslashes($_POST['ServicesRequired'][$i]);
}
/* If e-mail is not valid show error message */
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $Email))
{
show_error("E-mail address not valid");
}
/* Let's prepare the message for the e-mail */
$message = "Hello!
Your contact form has been submitted by:
Name: $Name
Contact Number: $ContactPhone
Business Name: $BusinessName
E-mail: $email
Services Required : $ServicesRequired
Websites they want their website to be similar to: $SimilarSites
Will own artwork be supplied: $OwnArtworkSupplied
Pages Required and how many: $Pages
Will you want to update the website content yourself? $UpdateOwnContent
Do you have a time frame: $TimeFrame
Budget: $Budget
Enquiry:
$Details
End of message
";
/* Send the message using mail() function */
mail($myemail, $subject, $message);
/* Redirect visitor to the thank you page */
header('Location: thanks.php');
exit();
/* Functions we used */
function check_input($data, $problem='')
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
if ($problem && strlen($data) == 0)
{
show_error($problem);
}
return $data;
}
function show_error($myError)
{
?>
<html>
<body>
<b>Please correct the following error:</b><br />
<?php echo $myError; ?>
</body>
</html>
<?php
exit();
}
?>
Mark.
Users who have thanked markspark100 for this post:
Yes I've just tried it and it works but there are a couple of things wrong
1) in $message you have a variable called $email but it has been set as $Email - note capital E
2) for ($i=0; $i<count($_POST['ServicesRequired']); $i++){
$ServicesRequired_req = addslashes($_POST['ServicesRequired'][$i]);
} - This part does nothing as $ServicesRequired_req isn't used after that.
So the code which I have tested and works is as follows:
PHP Code:
<?php
/* Functions we used */
function check_input($data, $problem='')
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
if ($problem && strlen($data) == 0)
{
show_error($problem);
}
return $data;
}
function show_error($myError)
{
?>
<html>
<body>
<b>Please correct the following error:</b><br />
<?php echo $myError; ?>
</body>
</html>
<?php
exit();
}
/* Set e-mail recipient */
$myemail = "info@purpleblaze.com.au";
/* Check all form inputs using check_input function */
$Name = check_input($_POST['Name'], "Enter your name");
$ContactPhone = check_input($_POST['ContactPhone'], "Enter your contact number");
$BusinessName = check_input($_POST['BusinessName']);
$Email = check_input($_POST['Email']);
foreach($_POST['ServicesRequired'] as $value) {
$ServicesRequired .= "Checked: $value\n";
}
$ServicesRequired = check_input($ServicesRequired);
$SimilarSites = check_input($_POST['SimilarSites']);
$OwnArtworkSupplied = check_input($_POST['OwnArtworkSupplied']);
$Pages = check_input($_POST['Pages']);
$UpdateOwnContent = check_input($_POST['UpdateOwnContent']);
$TimeFrame = check_input($_POST['TimeFrame']);
$Budget = check_input($_POST['Budget']);
$Details = check_input($_POST['Details'], "Write your enquiry");
/* If e-mail is not valid show error message */
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $Email))
{
show_error("E-mail address not valid");
}
/* Let's prepare the message for the e-mail */
$message = "Hello!
Your contact form has been submitted by:
Name: $Name
Contact Number: $ContactPhone
Business Name: $BusinessName
E-mail: $Email
Services Required : $ServicesRequired
Websites they want their website to be similar to: $SimilarSites
Will own artwork be supplied: $OwnArtworkSupplied
Pages Required and how many: $Pages
Will you want to update the website content yourself? $UpdateOwnContent
Do you have a time frame: $TimeFrame
Budget: $Budget
Enquiry:
$Details
End of message
";
/* Send the message using mail() function */
mail($myemail, $subject, $message);
/* Redirect visitor to the thank you page */
header('Location: thanks.php');
exit();
?>
Users who have thanked markspark100 for this post:
Thank you for your reply! I've copied and pasted the code in but it only displays one of the check boxes, not all of the ones I've selected. What have I done wrong? :S