Reputation: 61
I am attempting to send my checkbox values through my mail form but it comes back as "None" every time. Thanks in advance for the help!
My code
<form method="post" name="sentMessage" id="contactForm" novalidate>
<div class="control-group form-group">
<div class="controls">
<label>Services Required:</label> <br />
<ul class="checkbox-grid">
<li><input type="checkbox" name="services[]" value="value1" /> Text 11</li>
<li><input type="checkbox" name="services[]" value="value2" /> Text 12</li>
<li><input type="checkbox" name="services[]" value="value3" /> Text 11</li>
<li><input type="checkbox" name="services[]" value="value4" /> Text 12</li>
<li><input type="checkbox" name="services[]" value="value5" /> Text 11</li>
<li><input type="checkbox" name="services[]" value="value6" /> Text 12</li>
<li><input type="checkbox" name="services[]" value="value7" /> Text 11</li>
<li><input type="checkbox" name="services[]" value="value8" /> Text 12</li>
<li><input type="checkbox" name="services[]" value="value9" /> Text 11</li>
<li><input type="checkbox" name="services[]" value="value10" /> Text 12</li>
<li><input type="checkbox" name="services[]" value="value11" /> Text 11</li>
<li><input type="checkbox" name="services[]" value="value12" /> Text 12</li>
</ul>
</div>
</div>
<button type="submit" class="btn btn-primary">Send Message</button>
</form>
My PHP:
<?php
// check if fields passed are empty
if(empty($_POST['name']) ||
empty($_POST['email']) ||
empty($_POST['message']) ||
!filter_var($_POST['email'],FILTER_VALIDATE_EMAIL))
{
echo "No arguments Provided!";
return false;
}
$name = $_POST['name'];
$email_address = $_POST['email'];
$type = $_POST['type'];
$other = $_POST['other'];
$date = $_POST['date'];
$venue = $_POST['venue'];
$budget = $_POST['budget'];
$message = $_POST['message'];
$selectedServices = 'None';
if(isset($_POST['services']) && is_array($_POST['services']) && count($_POST['services']) > 0){
$selectedServices = implode(', ', $_POST['services']);}
// create email body and send it
$to = '[email protected]'; // PUT YOUR EMAIL ADDRESS HERE
$email_subject = " Contact Form: $name"; // EDIT THE EMAIL SUBJECT LINE HERE
$email_body = "You have received a new message from your website's contact form.\n\n"."Here are the details:\n\nName: $name\n\nEmail: $email_address\n\nType: $type\n\nOther: $other\n\nDate: $date\n\nVenue: $venue\n\nBudget: $budget\n\nServices: $selectedServices\n\nMessage:\n$message";
$headers = "From: [email protected]\n";
$headers .= "Reply-To: $email_address";
mail($to,$email_subject,$email_body,$headers);
return true;
?>
Any ideas? I've replicated this post but it doesn't seem to work for me. Adding checkboxes to PHP POST email form
edited: fixed syntax errors
Upvotes: 1
Views: 2541
Reputation: 13
May be you missed something. Run the code. Hope you will find out your problem.
PHP Code :
if(isset($_POST['sub']) && $_POST['sub']=="Submit")
{
$selectedServices = 'None';
if(isset($_POST['services']) && is_array($_POST['services']) && count($_POST['services']) > 0)
{
$selectedServices = implode(', ', $_POST['services']);
}
echo $selectedServices;
}
<form method="post" action="">
<ul class="checkbox-grid">
<li><input type="checkbox" name="services[]" value="value1" /> Text 11</li>
<li><input type="checkbox" name="services[]" value="value2" /> Text 12</li>
<li><input type="checkbox" name="services[]" value="value3" /> Text 11</li>
<li><input type="checkbox" name="services[]" value="value4" /> Text 12</li>
<li><input type="checkbox" name="services[]" value="value5" /> Text 11</li>
<li><input type="checkbox" name="services[]" value="value6" /> Text 12</li>
<li><input type="checkbox" name="services[]" value="value7" /> Text 11</li>
<li><input type="checkbox" name="services[]" value="value8" /> Text 12</li>
<li><input type="checkbox" name="services[]" value="value9" /> Text 11</li>
<li><input type="checkbox" name="services[]" value="value10" /> Text 12</li>
<li><input type="checkbox" name="services[]" value="value11" /> Text 11</li>
<li><input type="checkbox" name="services[]" value="value12" /> Text 12</li>
</ul>
<input type="submit" id="sub" name="sub" value="Submit" />
</form>
Output : value1, value2, value3, value4, value5, value6, value7, value8, value9, value10, value11, value12
Upvotes: 0
Reputation: 121
It appears that you have a syntax error that is breaking the form. If I run your code wrapped in a form and run your PHP processor on the response I will get the proper result consistently. Your error is not in the code you submitted.
I just attempted and succeeded at performing this(after fixing your "email_body" syntax issue).
Edited for clarity
Upvotes: 1