简体   繁体   中英

Get multiple values of checkbox in PHP

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="example@domain.com" 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>
<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

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.

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM