1

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

3
  • is this all of your code? I'm not seeing a loop for grabbing services Commented Jul 2, 2015 at 2:49
  • possible duplicate of php - inserting the values of multiple checkbox selections Commented Jul 2, 2015 at 3:10
  • How is your data submitted? Is it by a form? Commented Jul 2, 2015 at 3:36

2 Answers 2

1

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

Sign up to request clarification or add additional context in comments.

Comments

0

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

2 Comments

ok...Make a index.php and paste my code. checked all checkboxs. I hope your output will be same with me. By the way, is your form working ?
Yes, everything comes back correctly except "selectedServices" comes back as "none" despite having checked boxes.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.