1

I need help with this if any can show me, that would be so great and helpful.

I am trying to get more then one value show up through a checkbox, with this information in PHP has been sent to an email. I can get anyone on the selected list work individually when applied

This is my PHP & HTML code, it all works fine, it's just the program will only send one of the selected list, even if I select more then one.

$ch1, $ch2, $ch3, $ch4 ,$ch5

PHP

<?php
if(isset($_POST['email'])) {

    $email_to = "";
    $email_subject = "";


    function died($error) {
        // Error Code
        echo "We are very sorry, but there were error(s) found with the form you submitted. ";
        echo "These errors appear below.<br /><br />";
        echo $error."<br /><br />";
        echo "Please go back and fix these errors.<br /><br />";
        die();
    }

    // validation expected data exists
    if(!isset($_POST['firstname']) ||
        !isset($_POST['lastname']) ||
        !isset($_POST['checkboxes']) ||
        !isset($_POST['gender']) ||
        !isset($_POST['email']) ||
        !isset($_POST['subject']) ||
        !isset($_POST['telephone']) ||
        !isset($_POST['message'])) {
        died('We are sorry, but there appears to be a problem with the form you submitted.');       
    }

    $firstname = $_POST['firstname']; // required
    $lastname = $_POST['lastname']; // required
    $ch1 = 'unchecked'; // required
    $ch2 = 'unchecked'; // required
    $ch3 = 'unchecked'; // required
    $ch4 = 'unchecked'; // required
    $ch5 = 'unchecked'; // required
    $male_status = 'unchecked'; // required
    $female_status = 'unchecked'; // required
    $email_from = $_POST['email']; // required
    $subject = $_POST['subject']; // required
    $telephone = $_POST['telephone']; // required
    $message = $_POST['message']; // required

    $error_message = "";
    $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
  if(!preg_match($email_exp,$email_from)) {
    $error_message .= 'The Email Address you entered does not appear to be valid.<br />';
  }
    $string_exp = "/^[A-Za-z .'-]+$/";
  if(!preg_match($string_exp,$firstname)) {
    $error_message .= 'The First Name you entered does not appear to be valid.<br />';
  }
  if(!preg_match($string_exp,$lastname)) {
    $error_message .= 'The Last Name you entered does not appear to be valid.<br />';
  }
  if(!preg_match($string_exp,$subject)) {
    $error_message .= 'The Subject you entered does not appear to be valid.<br />';
  }

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

    $selected_checkboxes = $_POST['checkboxes'];

    if (isset($_POST['ch1'])) {
        $ch1 = $_POST['checkboxes'];

        if ($ch1 == 'googlechrome') {
            $ch1 = 'checked';
        }
    }

    if (isset($_POST['ch2'])) {
        $ch2 = $_POST['checkboxes'];

        if ($ch2 == 'firefox') {
            $ch2 = 'checked';
        }
    }

    if (isset($_POST['ch3'])) {
        $ch3 = $_POST['checkboxes'];

        if ($ch3 == 'safari') {
            $ch3 = 'checked';
        }
    }

    if (isset($_POST['ch4'])) {
        $ch4 = $_POST['checkboxes'];

        if ($ch4 == 'internetexplorer') {
            $ch4 = 'checked';
        }
    }

    if (isset($_POST['ch5'])) {
        $ch5 = $_POST['checkboxes'];

        if ($ch5 == 'opera') {
            $ch5 = 'checked';
        }
    }
}

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

    $selected_radio = $_POST['gender'];

        if ($selected_radio == 'male') {
            $male_status = 'checked';

        }
        else if ($selected_radio == 'female') {
            $female_status = 'checked';
        }
    }
  if(strlen($message) < 2) {
    $error_message .= 'The Message you entered do not appear to be valid.<br />';
  }
  if(strlen($error_message) > 0) {
    died($error_message);
  }
    $email_message = "Form details below.\n\n";

    function clean_string($string) {
      $bad = array("content-type","bcc:","to:","cc:","href");
      return str_replace($bad,"",$string);
    }

    $email_message .= "First Name: ".clean_string($firstname)."\n";
    $email_message .= "Last Name: ".clean_string($lastname)."\n";
    $email_message .= "Gender: ".clean_string($selected_radio)."\n";
    $email_message .= "Telephone: ".clean_string($telephone).
"\n";
    $email_message .= "Email: ".clean_string($email_from).
"\n";
    $email_message .= "Subject: ".clean_string($subject).
"\n";
$email_message .= "Browsers Used: ".clean_string($selected_checkboxes)."\n";
    $email_message .= "Message: ".clean_string($message).
"\n";


// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);  
?>

Thank you for contacting us. We will be in touch with you very soon.

<?php
}
?>

HTML

<form id="contact" name="contact" action="contact.php" method="post">
  <p>
    <label for="firstname">First Name *<br>
    </label>
    <input  type="text" name="firstname" maxlength="50" size="30" id="firstname" placeholder="First Name" required autofocus>
    <label for="lastname"><br>
      <br>
      Last Name *<br>
    </label>
    <input  type="text" name="lastname" maxlength="50" size="30" id="lastname" placeholder="Last Name" required>
    <label for="email"><br>
      <br>
      Email Address *<br>
    </label>
    <input  type="text" name="email" maxlength="80" size="30" id="email" placeholder="[email protected]" required>
    <label for="telephone"><br>
      <br>
      Telephone <br>
    </label>
    <input  type="text" name="telephone" maxlength="30" size="30" id="subject" placeholder="Phone Number" required>
    <br>
    <br>
    <label for="subject">Subject *</label>
    <br>
  <input type="text" name="subject" maxlength="30" size="30" id="subject" placeholder="Hello" required>
    <br>
    <br>
    <Input type = "Radio" Name ="gender" value= "Male">Male
  <Input type = "Radio" Name ="gender" value= "Female" >Female
  <br>
  </p>
  <p>&quot;What browser are you using, to view this website&quot;<br>
    <Input type = "Checkbox" Name ="checkboxes" value="Google Chrome">Google Chrome
    <Input type = "Checkbox" Name ="checkboxes" value="Firefox">Firefox
    <Input type = "Checkbox" Name ="checkboxes" value="Safari">Safari
    <Input type = "Checkbox" Name ="checkboxes" value="Internet Explorer" >Internet Explorer
    <Input type = "Checkbox" Name ="checkboxes" value="Opera" >Opera
    <br>
    <br>
    Message *<br>
    </label>
    <textarea  name="message" maxlength="1000" cols="90" rows="6" id="message" placeholder="Type message here" required></textarea>
    <br>
    <input type="submit" value="Submit">
  </p>
</form>
1
  • A common hack is to name your checkbox checkboxes[] although obviously this is less than preferred, and the real answer is to give them different names. Commented Nov 13, 2012 at 2:55

3 Answers 3

4
<Input type = "Checkbox" Name ="checkboxes[]" value="Google Chrome">Google Chrome
<Input type = "Checkbox" Name ="checkboxes[]" value="Firefox">Firefox
<Input type = "Checkbox" Name ="checkboxes[]" value="Safari">Safari
<Input type = "Checkbox" Name ="checkboxes[]" value="Internet Explorer" >Internet Explorer
<Input type = "Checkbox" Name ="checkboxes[]" value="Opera" >Opera
Sign up to request clarification or add additional context in comments.

6 Comments

I did this, and in the email it said in this section: "Array" I selected Safari & Opera for example, and that happen?
This is because you have to look through the array of checkbox values and find which ones are set. If you give the checkboxes names, you don't have to iterate over the array, and you can use the names directly.
"An example of what the email looks like" Form details below. First Name: "" Last Name: "" Gender: Male Telephone: "" Email: "" Subject: Hello Browsers Used: Array - What is this about? Message: Hello
You should iterate over the checkboxes array like so: $checkboxes = $_POST['checkboxes']; foreach($checkboxes as $c) echo $c;
Am I changing $selected_checkboxes = $_POST['checkboxes']; to checkboxes = $_POST['checkboxes']; foreach($checkboxes as $c) echo $c; ? becuase this did not work, where would this be placed in the PHP?
|
2

The correct way to do this is to give your checkboxes different names.

<input type="checkbox" name="chrome" value="Google Chrome" />Chrome
<input type="checkbox" name="firefox" value="Firefox" />Firefox
<input type="checkbox" name="safari" value="Safari" />Safari
<input type="checkbox" name="ie" value="Internet Explorer" />IE
<input type="checkbox" name="opera" value="Opera" />Opera

Just FYI, the <label> tag is pretty useful here, so the text will be "tied" to the box when you click or hover.

<label for='cb1'>
    <input id='cb1' type = "Checkbox" name ="chrome" value="Google Chrome" />Chrome
</label>

You can style it like

label:hover { background:orange; }

This also works for radio buttons.


Also, it's a good idea to avoid mixing up uppercase and lowercase of your attributes (the type, name, etc. are called attributes). You want everything in lowercase whenever possible.

2 Comments

What do I have to change in the PHP for this to work, because I tried changing $ch1 = $_POST['checkboxes']; to $ch1 = $_POST['chrome']; for example on each one and this did not work? any idea
Its okay now I have fixed this, but thank you for all of your help ^_^
0

If you changes the name parameter in your html to checkboxes[]:

<Input type = "Checkbox" Name ="checkboxes[]" value="Google Chrome">Google Chrome
<Input type = "Checkbox" Name ="checkboxes[]" value="Firefox">Firefox
<Input type = "Checkbox" Name ="checkboxes[]" value="Safari">Safari
<Input type = "Checkbox" Name ="checkboxes[]" value="Internet Explorer" >Internet Explorer
<Input type = "Checkbox" Name ="checkboxes[]" value="Opera" >Opera

Then $_POST['checkboxes'] will contain an array of the selected values.

Note that it won't return anything for the checkboxes that weren't selected, so you'll need to keep track of all values to compare to what was selected.

Comments

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.