开发者

if radio box checked send different email fields

开发者 https://www.devze.com 2023-03-28 19:48 出处:网络
<form method=\"post\" action=\"\" id=\"infoform\"> <label for=\"first\"> First Name</label>
<form method="post" action="" id="infoform">
<label for="first">
    First Name</label>
<input type="text" name="first" id="first" class="field validate[required]">
</br>
<label for="surname">
    Last Name</label>
<input type="text" name="surname" id="surname" class="field validate[required]"> </br>
    <label for="email">
        Email</label>
    <input type="text" name="email" id="email" class=" field email validate[required,custom[email]]">
        </br>
        <div class="radios">
            <input id="test2" checked="checked" type="radio" name="message" value="register" />
        Register for Updates</input>
    <input id="test1" type="radio" name="message" value="msgs" />
    Send a Message</input>
</div>
<div class="msg">
    <label for="message" id="messagelabel">
        Message</label>
    <textarea type="text" name="message" id="message"></textarea>
</div>
<input id="submit" type="submit" value=""><div class="test3">
    <a class="sbmt">Register</a></div>
    <div class="test4">
        <a class="sbmt">Send</a></div>
</input>
</form>

If the radio box 'test1' is checked, then the div msg appears. This is then sent via ajax to an email php script:

<?php
    $EmailTo = "matt@explosivetitle开发者_如何学Cs.com";
    $adminSubject = "Civitas Message";

    $firstName = Trim(stripslashes($_POST['first']));
    $Surname = Trim(stripslashes($_POST['surname'])); 
    $Email = Trim(stripslashes($_POST['email'])); 
    $Message = Trim(stripslashes($_POST['message'])); 

    $adminheaders = 'From: "Civitas website" <info@civitas.com>';

    $adminBody .= "First Name: ";
    $adminBody .= $firstName;
    $adminBody .= "\n";
    $adminBody .= "Surname: ";
    $adminBody .= $Surname;
    $adminBody .= "\n";
    $adminBody .= "Email: ";
    $adminBody .= $Email;
    $adminBody .= "\n";
    $adminBody .= "Message: ";
    $adminBody .= $Message;
    $adminBody .= "\n";


    $adminMail = mail($EmailTo, $adminSubject, $adminBody, $adminheaders);


    if ($adminMail){
        echo "true";
    }
    else{
      echo "false";
    }
?>

However I only want the "message" part of the email to be sent if the message box is showing. How can I do this?


PHP does not look at the id of an element, instead, when a POST or GET method is sent, it looks at the name attribute. In the code you have written, you have two input elements, textarea and the radio input with the same name, "message". When both are sent, the $_POST variable becomes an array and uses the name attribute as an index for the value submitted, and PHP arrays cannot have duplicate indexes, therefore to over come this problem you rename one. For your radio input I suggest the name attribute be set to type.

<?php
    $send           = "matt@explosivetitles.com";
    $subject        = "Civitas Message";
    $details        = array (
        "first"     => @$_POST["first"],
        "surname"   => @$_POST["surname"],
        "email"     => @$_POST["email"],
        "message"   => @$_POST["message"]
    );
    foreach ($details as $index => $value) {
        $details[$index] = trim ( stripslashes ($value));
    }
    if (@$_POST["type"] == "register") {
        // Whatever happens when they select "register"
    } else if (@$_POST["type"] == "msgs") {
        $header     = "From 'Civitas website' <info@civitas.com>";
        $body       = $details["first"] . " " . $details["surname"] . " "
                    . "<" . $details["email"] . ">"
                    . "Message: \n"
                    . $details["message"];

        $mail       = mail ($send, $subject, $body, $header);
        if ($mail) {
            return true;
        } else {
            return false;
        }
    }
?>

Also, your code hurts my eyes, so I rewrote it.


You can do this:

$adminBody .= "First Name: ";
$adminBody .= $firstName;
$adminBody .= "\n";
$adminBody .= "Surname: ";
$adminBody .= $Surname;
$adminBody .= "\n";
$adminBody .= "Email: ";
$adminBody .= $Email;
$adminBody .= "\n";
if (isset($_POST['message'])) {
  $adminBody .= "Message: ";
  $adminBody .= $Message;
}
$adminBody .= "\n";

isset() will check if the variable exists, if yes it will return true.

0

精彩评论

暂无评论...
验证码 换一张
取 消