2

我正在尝试为 wordpress 构建一个表单。我过去使用过插件,但我需要对某些特定样式进行最大程度的控制。我对 PHP 还不是很好,所以正在努力尝试向脚本中添加复选框。我已经删除了我的尝试并将复选框留在了 html 中,但没有留在 PHP 中 - 有人可以告诉我最好的方法吗使任何选定的复选框在发送的电子邮件中可见?目前其他一切正常。

的HTML:

    <form method="post" action="<?php bloginfo('template_directory'); ?>/contact.php">

 <h3>Your Details</h3>

<div class="formrow">
    <input type="text" name="Name" maxlength="99" id="fullname" placeholder="Name" />
    <input type="email" name="Email" maxlength="99"placeholder="Email Address" />
    <input type="tel" name="Phone" maxlength="25" placeholder="Phone Number" />
</div>

<h3>Project Type</h3>

<div class="formrow">
    <fieldset>
        <input type="checkbox" name="project1" value="Web">
       <label for="type1">Web</label>
        <input type="checkbox" name="project2" value="Digital">
       <label for="type2">Digital</label>
        <input type="checkbox" name="project3" value="Consultancy">
       <label for="type3">Consultancy</label> 
    </fieldset> 
</div>

 <table align=center> 
 <tr><td colspan=2><strong>Contact us using this form:</strong></td></tr> 
 <tr><td>Department:</td><td><select name="sendto"> <option value="general@mycompany.com">General</option> <option value="support@mycompany.com">Support</option> <option value="sales@mycompany.com">Sales</option> </select></td></tr> 


 <tr><td>Company:</td><td><input size=25 name="Company"></td></tr> 

 <tr><td>Subscribe to<br> mailing list:</td><td><input type="radio" name="list" value="No"> No Thanks<br> <input type="radio" name="list" value="Yes" checked> Yes, keep me informed<br></td></tr> 
 <tr><td colspan=2>Message:</td></tr> 
 <tr><td colspan=2 align=center><textarea name="Message" rows=5 cols=35></textarea></td></tr> 
 <tr><td colspan=2 align=center><input type=submit name="send" value="Submit"></td></tr> 
 <tr><td colspan=2 align=center><small>A <font color=red>*</font> indicates a field is required</small></td></tr> 
 </table>

 </form> 

的PHP:

<?php 
 $to = $_REQUEST['sendto'] ; 
 $from = $_REQUEST['Email'] ; 
 $name = $_REQUEST['Name'] ; 
 $headers = "From: $from"; 
 $subject = "Web Contact Data"; 

 $fields = array(); 
 $fields{"Name"} = "Name"; 
 $fields{"Company"} = "Company"; 
 $fields{"Email"} = "Email"; 
 $fields{"Phone"} = "Phone"; 
 $fields{"list"} = "Mailing List"; 
 $fields{"Message"} = "Message"; 

 $body = "We have received the following information:\n\n"; foreach($fields as $a => $b){   $body .= sprintf("%20s: %s\n",$b,$_REQUEST[$a]); } 

 $headers2 = "From: noreply@YourCompany.com"; 
 $subject2 = "Thank you for contacting us"; 
 $autoreply = "Thank you for contacting us. Somebody will get back to you as soon as possible, usualy within 48 hours. If you have any more questions, please consult our website at www.oursite.com";

 if($from == '') {print "You have not entered an email, please go back and try again";} 
 else { 
 if($name == '') {print "You have not entered a name, please go back and try again";} 
 else { 
 $send = mail($to, $subject, $body, $headers); 
 $send2 = mail($from, $subject2, $autoreply, $headers2); 
 if($send) 
 {print "Success";} 
 else 
 {print "We encountered an error sending your mail, please notify webmaster@YourCompany.com"; } 
 }
}
 ?> 

谢谢!MC

4

1 回答 1

12

一组复选框是最合适的。通过[]在复选框名称中使用,PHP 会自动将它们解析为原生数组。

   <input type="checkbox" name="projects[]" value="Web">
   <label for="type1">Web</label>
   <input type="checkbox" name="projects[]" value="Digital">
   <label for="type2">Digital</label>
   <input type="checkbox" name="projects[]" value="Consultancy">
   <label for="type3">Consultancy</label> 

在 PHP 方面:

$selectedProjects  = 'None';
if(isset($_POST['projects']) && is_array($_POST['projects']) && count($_POST['projects']) > 0){
    $selectedProjects = implode(', ', $_POST['projects']);
}

$body .= 'Selected Projects: ' . $selectedProjects;

输出(如果全部选中)

选定项目:网络、数字、咨询

于 2013-06-25T18:15:14.683 回答