0

I have a file called send_form_email.php and I'm trying to get it to send an e-mail to me with trues/falses or some way of signifying which checkboxes are checked. I think that there's something wrong with the way I've tried to expand something I found on the internet - right now it sends the form okay, but just not any information about which items were checked.

These are the ones that are checkboxes on my web form:

$farmscale = $_POST['farmscale']; // not required
$nutrients = $_POST['nutrients']; // not required
$smallscale = $_POST['smallscale']; // not required
$plantdesign = $_POST['plantdesign']; // not required
$industrialscale = $_POST['industrialscale']; // not required
$engineering = $_POST['engineering']; // not required
$stgs = $_POST['stgs']; // not required
$compsupply = $_POST['compsupply']; // not required

But this is the main file, and I'm just not sure how to get a true/fales value to spit out in the email that it sends. Please be gentle... still kinda new to this stuff.

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

        // EDIT THE 2 LINES BELOW AS REQUIRED
        $email_to = "[email protected]";
        $email_subject = "Inquiry from EnginuityEnergy.com";


        function died($error) {
            // your error code can go here
            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['first_name']) ||
            !isset($_POST['last_name']) ||
            !isset($_POST['email']) ||
            !isset($_POST['telephone']) ||
            !isset($_POST['country']) ||
            !isset($_POST['comments'])) {
            died('We are sorry, but there appears to be a problem with the form you submitted.');       
        }

        $first_name = $_POST['first_name']; // required
        $last_name = $_POST['last_name']; // required
        $email_from = $_POST['email']; // required
        $telephone = $_POST['telephone']; // not required
        $country = $_POST['country']; // not required
        $comments = $_POST['comments']; // required
        $farmscale = $_POST['farmscale']; // not required
        $nutrients = $_POST['nutrients']; // not required
        $smallscale = $_POST['smallscale']; // not required
        $plantdesign = $_POST['plantdesign']; // not required
        $industrialscale = $_POST['industrialscale']; // not required
        $engineering = $_POST['engineering']; // not required
        $stgs = $_POST['stgs']; // not required
        $compsupply = $_POST['compsupply']; // not 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,$first_name)) {
        $error_message .= 'The First Name you entered does not appear to be valid.<br />';
      }
      if(!preg_match($string_exp,$last_name)) {
        $error_message .= 'The Last Name you entered does not appear to be valid.<br />';
      }
      if(strlen($comments) < 2) {
        $error_message .= 'The Comments 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($first_name)."\n";
        $email_message .= "Last Name: ".clean_string($last_name)."\n";
        $email_message .= "Email: ".clean_string($email_from)."\n";
        $email_message .= "Telephone: ".clean_string($telephone)."\n";
        $email_message .= "Comments: ".clean_string($comments)."\n";
        $email_message .= "Country: ".clean_string($country)."\n";
        $email_message .= "Farm Scale: ".$farmscale."\n";
        $email_message .= "Nutrients: ".$nutrients."\n";
        $email_message .= "Small Scale: ".$smallscale."\n";
        $email_message .= "Plant Design: ".$plantdesign."\n";
        $email_message .= "Industrial Scale: ".$industrialscale."\n";
        $email_message .= "Engineering: ".$engineering."\n";
        $email_message .= "STGS: ".$stgs."\n";
        $email_message .= "Component Supply: ".$compsupply."\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);  
    ?>

    <!-- include your own success html here -->

    <center>
        <h1>Thank you for contacting us.</h1>
        <br><br> 
        <p>We will be in touch with you very soon.</p>
        <p>In the meantime, head back to the <a href="http://www.enginuityenergy.com">Main Site</a> to learn more about Enginuity Energy's innovative Biomass gasification.<p>
    </center>


    <?php
    }
    ?>
3
  • a checkbox will not appear in your $_POST unless it is checked. Commented Aug 7, 2013 at 19:43
  • 1
    On a side note, the <center> tag was deprecated somewhere around the Hoover administration. Commented Aug 7, 2013 at 19:44
  • Refer to : stackoverflow.com/a/7654175/814126 Commented Aug 7, 2013 at 19:44

2 Answers 2

4

I've got over this issue by inserting a new input hidden like this:

<input type="hidden" name="farmscale" value="n" />
<input type="checkbox" name="farmscale" value="y" />

You can do this for every checkbox or radio button.

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

1 Comment

I use this method also, then do an if statement to see if it is posted or not.
0

For debug purposes, if you send a form with a HTML checkbox named 'checkme', you can use var_dump($_POST) and see if there is a 'checkme' item, then you can test it with isset() function.

form.html

<html>
<head>
     <title>Test form</title>
</head>
<body>
    <form method="post" action="see-it.php">
        <input type="checkbox" name="checkme" value="test"> Check it or not... <br>
        <button type="submit">Send</button>
    </form>
</body>
</html>

see-it.php

<?php

if(isset($_POST['checkme'])) {
    echo "CHECKED!!!1!1 :D";
} else {
    echo "Not checked... :(";
}

?>

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.