PHP表单处理,复选框数组问题

时间:2013-02-01 16:29:27

标签: php

我有一个处理HTML表单的简单PHP脚本,除了多个复选框输入外,所有内容都正确转储到电子邮件。它不显示用户选择的复选框,而是显示数组。

<?php
if($_SERVER['REQUEST_METHOD'] !== 'POST') {
//This page should not be accessed directly. Need to submit the form.
echo "error; you need to submit the form!";
die;
}


$firstname = $_POST['firstname']; $lastname = $_POST['lastname']; $initial = $_POST['initial']; $streetaddress = $_POST['streetaddress']; $addressline2 = $_POST['addressline2']; $city = $_POST['city']; $state = $_POST['state']; $zip = $_POST['zip']; $email = $_POST['email']; $month = $_POST['month']; $day = $_POST['day']; $year = $_POST['year']; $gender = $_POST['gender']; $areacode = $_POST['areacode']; $cellphone = $_POST['cellphone']; $shirtsize = $_POST['shirt_size']; $country = $_POST['country']; $dayarea = $_POST['daytime_phone_area']; $dayphone = $_POST['daytime_phone']; $shirtsizeother = $_POST['other']; $dates = $_POST['dates']; $signature = $_POST['signature']; $signday = $_POST['signature_day']; $signmonth = $_POST['signature_month']; $signyear = $_POST['signature_year']; $position = $_POST['position']; $contactmethod = $_POST['contactmethod']; $other_size = 'n/a'; $_POST['other_size'] = 'n/a'; 

//Validate first



/*
Simple form validation
check to see if required fields were entered */ if ($_POST['firstname'] == "" || $_POST['lastname'] == "" || $_POST['streetaddress'] == "" || $_POST['city'] == "" || $_POST['state'] == "" || $_POST['zip'] == "" || $_POST['email'] == "" || $_POST['month'] == "" || $_POST['day'] == "" || $_POST['year'] == "" || $_POST['gender'] == "" || $_POST['areacode'] == "" || $_POST['cellphone'] == "" || $_POST['daytime_phone_area'] == ""  || $_POST['daytime_phone'] == ""  || $_POST['dates'] == ""  || $_POST['signature'] == ""  || $_POST['signature_day'] == ""  || $_POST['signature_month'] == ""  || $_POST['shirt_size'] == ""  || $_POST['signature_year'] == ""  || $_POST['position'] == ""  || $_POST['contactmethod'] == "" ) {
    var_dump($_POST);
    echo "Please fill in all required boxes.";
    }
else {


$email_from = 'chris569x@gmail.com';//<== update the email address $email_subject = "New Volunteer Registration"; $email_body = "You have received a new volunteer registration.\n". 
"Volunteer: $firstname $initial $lastname \n".
"Address: $streetaddress \n".
"$addressline2 \n".
"$city, $state $zip \n".
"Email: $email \n".
"Date of Birth: $month/$day/$year \n".
"Gender: $gender \n".
"Cell Phone: ($areacode) $cellphone \n".
"Daytime Phone: ($dayarea) $dayphone \n".
"T-Shirt Size: $shirtsize $shirtsizeother \n".
"Volunteer Position: $position \n".
"Dates availible to volunteer: $dates \n".
"Electronic Signature: $signature $signmonth/$signday/$signyear \n".
"Preferred contact method: $contactmethod \n"; $to = "chris569x@gmail.com";//<== update the email address $headers = "From: $email_from \r\n"; //Send the email!
mail($to,$email_subject,$email_body,$headers);
//done. redirect to thank-you page.
header('Location: thanks2.htm');
echo "<meta http-equiv='refresh' content='0; url=thanks2.htm'>";
}
?> 

和电子邮件输出(问题在于志愿者可以使用的日期):

您已收到新的志愿者注册。 志愿者:xxxxxx 地址:xxxx

XXXXXX 电子邮件:xxxx 出生日期:xxxx 性别:xxxx 手机:xxxx 日间电话:xxxx T恤尺码:xxxx

志愿者可用的日期:数组

电子签名:xxxx 首选联系方式:xxxx

如果你需要看到它,这是HTML表单:

<form name="volunteer" action="form-to-email3.php" method="post">

<label>Last Name*: </label><input type="text" name="lastname" /><br /> <label>First Name*: </label><input type="text" name="firstname" /><br /> <label>Middle Initial: </label><input type="text" name="initial" size=1 maxlength=1 /><br /><br /> <label>Date of Birth*: </label><INPUT NAME="month" input type="tel" SIZE=2 MAXLENGTH=2
onKeyPress="return numbersonly(this, event)"/>/<INPUT NAME="day" input type="tel" SIZE=2 MAXLENGTH=2
onKeyPress="return numbersonly(this, event)"/>/<INPUT NAME="year" input type="tel" SIZE=4 MAXLENGTH=4
onKeyPress="return numbersonly(this, event)"/>
<SCRIPT TYPE="text/javascript">
<!--
autojump("month", "day", 2); autojump("day", "year", 2); //--> </SCRIPT><br /><br /> <label>Gender*:</label><input type="radio" name="gender" value="Male"> Male <input type="radio" name="gender" value="Female"> Female </input> <br /> <br /> <label>Street Address*: </label><input type="text" name="streetaddress" /><br /> <label>Address Line 2: </label><input type="text" name="addressline2" /><br />
<label>City*: </label><input type="text" name="city" /><br />
<label>State/Province/Region*: </label><input type="text" name="state" /><br />
<label>Zipcode*: </label>
<INPUT NAME="zip" input type="tel" SIZE=5 MAXLENGTH=5
onKeyPress="return numbersonly(this, event)"/><br />
<label>Country: </label>
<select class="element select medium" id="element_3_6" name="country"> 
</select> <br /><br />

<label>Email*: </label><input type="email" name="email" /><br /><br />

<label>Cell Phone*: </label>(<INPUT NAME="areacode" input type="tel" SIZE=3 MAXLENGTH=3
onKeyPress="return numbersonly(this, event)"/>)<INPUT NAME="cellphone" input type="tel"SIZE=7 MAXLENGTH=7
onKeyPress="return numbersonly(this, event)"/><br />
<SCRIPT TYPE="text/javascript">
<!--
autojump("areacode", "cellphone", 3);
//-->
</SCRIPT>
<label>Daytime Phone*: </label>(<INPUT NAME="daytime_phone_area" input type="tel" SIZE=3 MAXLENGTH=3
onKeyPress="return numbersonly(this, event)"/>)<INPUT NAME="daytime_phone" input type="tel"SIZE=7 MAXLENGTH=7
onKeyPress="return numbersonly(this, event)"/><br /><br />
<SCRIPT TYPE="text/javascript">
<!--
autojump("daytime_phone_area", "daytime_phone", 3); //--> </SCRIPT>

<label>T-Shirt Size*: </label><input type="radio" name="shirt_size" value="Small"> S <input type="radio" name="shirt_size" value="Medium"> M <input type="radio" name="shirt_size" value="Large"> L <input type="radio" name="shirt_size" value="XL"> XL <input type="radio" name="shirt_size" value="2XL"> 2XL <input type="radio" name="shirt_size" value="Other"> Other (Please provide)<br /> </input>
<label>Other: </label><input type="text" name="other size" /><br /><br /> <label>In which area will you be helping*: </label> <select name="position"> <option name="position" value= "Pastor">Pastor</option> <option name="position" value="Nursing Staff">Nursing Staff</option> <option name="position" value="Camp Staff">Camp Staff (Including Huddle Leaders)</option> <option name="position" value="Other Staff">Other Staff</option> </select><br /><br /> <label>Dates Attending*: <br />(Please check all dates you can be present)</label> <input type="checkbox" name="dates[]" value="7/6">Jul. 6 <input type="checkbox" name="dates[]" value="7/7">Jul. 7 <input type="checkbox" name="dates[]" value="7/8">Jul. 8 <input type="checkbox" name="dates[]" value="7/9">Jul. 9 <input type="checkbox" name="dates[]" value="7/10">Jul. 10 <input type="checkbox" name="dates[]" value="7/11">Jul. 11 <input type="checkbox" name="dates[]" value="7/12">Jul. 12<br /><br /><br /><br /></input> <label>What is the best way to contact you*? </label><input type="text" name="contactmethod" /><br /><br /><br />

<b>Electronic Submission</b>
<p>I understand that by filling in my name here, it shall act as a binding, legal signagure. </p> <label>Electronic Signagure*: </label><input type="text" name="signature" /><br />
<label>Date*: </label><INPUT NAME="signature_month" input type="tel" SIZE=2 MAXLENGTH=2
onKeyPress="return numbersonly(this, event)"/>/<INPUT NAME="signature_day" input type="tel" SIZE=2 MAXLENGTH=2
onKeyPress="return numbersonly(this, event)"/>/<INPUT NAME="signature_year" input type="tel" SIZE=4 MAXLENGTH=4
onKeyPress="return numbersonly(this, event)"/>
<SCRIPT TYPE="text/javascript">
<!--
autojump("signature_month", "signature_day", 2); autojump("signature_day", "signature_year", 2); //--> </SCRIPT><br /><br /><br /><br /><br />


<input type="submit" value="Submit" />
</form>

2 个答案:

答案 0 :(得分:3)

尝试使用PHP的implode()功能并更改

$dates = $_POST['dates'];

$dates = implode(", ",$_POST['dates']);

这会将数组转换为字符串,其中每个日期用逗号分隔。

答案 1 :(得分:0)

在HTML表单中使用名称dates[]时,您指定数据应采用数组格式。 []语法告诉表单在POST数据的数组中创建一个新元素。

要逐步浏览数组的值,请使用foreach

foreach($dates as $v) {
    echo $v . "<br />";
}
相关问题