提交电子邮件时出现复选框和下拉列表问题的PHP表单
好吧,我对php或表单不是很在行,但我做了很多挖掘,没有找到解决方案,我无法找出如何工作。我有一个表格,有两组复选框和一个下拉列表,其中包括标准名称、电子邮件等。。。领域。我的问题是在提交表单时收到的电子邮件中显示复选框的值。以下是表格代码:提交电子邮件时出现复选框和下拉列表问题的PHP表单,php,forms,form-submit,checkbox,Php,Forms,Form Submit,Checkbox,好吧,我对php或表单不是很在行,但我做了很多挖掘,没有找到解决方案,我无法找出如何工作。我有一个表格,有两组复选框和一个下拉列表,其中包括标准名称、电子邮件等。。。领域。我的问题是在提交表单时收到的电子邮件中显示复选框的值。以下是表格代码: <form method="post" action="appointment-process.php"> <fieldset> <label for="name">Name<em class="w
<form method="post" action="appointment-process.php">
<fieldset>
<label for="name">Name<em class="warning">*</em></label>
<input id="name" name="name" type="text" class="span6" autofocus required placeholder="Raider Red">
<span class="help-block">Please enter your FIRST and LAST name.</span>
<label for="email">Email Address<em class="warning">*</em></label>
<input id="email" name="email" type="email" class="span6" placeholder="raider.red@ttu.edu" required>
<label for="phone">Phone Number<em class="warning">*</em></label>
<input id="phone" name="phone" type="tel" class="span6" placeholder="8067421234" required>
<label for="legal">Legal Issues<em class="warning">*</em></label>
<input id="legal" name="legal" type="text" class="span6" placeholder="Landlord Problems" required>
<label for="classification">Classification</label>
<div class="controls">
<select id="classification" name="classification">
<option>Freshman</option>
<option>Sophomore</option>
<option>Junior</option>
<option>Senior</option>
<option>Other</option>
</select>
</div>
<div class="control-group">
<label for="">Preferred Appointment Times</label>
<span class="help-block">Please check all of the days and times that work with your schedule</span>
<div class="controls row">
<div class="span3">
<label class="checkbox" for="timez">
<input type="checkbox" name="timez[]" value="9am">9:00 am
</label>
<label class="checkbox">
<input type="checkbox" name="timez[]" value="10am">10:00 am
</label>
<label class="checkbox">
<input type="checkbox" name="timez[]" value="11am">11:00 am
</label>
<label class="checkbox">
<input type="checkbox" name="timez[]" value="1:30pm">1:30 pm
</label>
<label class="checkbox">
<input type="checkbox" name="timez[]" value="2:30pm">2:30 pm
</label>
<label class="checkbox">
<input type="checkbox" name="timez[]" value="3:30pm">3:30 pm
</label>
</div>
<div class="span3">
<label class="checkbox" for="dayz">
<input type="checkbox" name="dayz[]" value="Monday">Monday
</label>
<label class="checkbox">
<input type="checkbox" name="dayz[]" value="Tuesday">Tuesday
</label>
<label class="checkbox">
<input type="checkbox" name="dayz[]" value="Wednesday">Wednesday
</label>
<label class="checkbox">
<input type="checkbox" name="dayz[]" value="Thursday">Thursday
</label>
</div>
</div>
</div>
<button type="submit" class="btn">Submit</button>
</fieldset>
</form>
名字*
请输入您的名字和姓氏。
电子邮件地址*
电话号码*
法律问题*
分类
大一新生
大二
年少者
级别高的
其他
首选预约时间
请检查您的日程安排中的所有日期和时间
上午9点
上午10:00
上午11:00
下午1:30
下午2:30
下午3:30
星期一
星期二
星期三
星期四
提交
下面是我的php代码:
<?php
if( isset($_POST) ){
//form validation vars
$formok = true;
$errors = array();
//submission data
$ipaddress = $_SERVER['REMOTE_ADDR'];
$date = date('d/m/Y');
$time = date('H:i:s');
//form data
$name = $_POST['name'] ;
$email = $_POST['email'] ;
$phone = $_POST['phone'] ;
$legal = $_POST['legal'] ;
$timez = $_POST['timez'] ;
//$dayz = $_POST['dayz'];
//form validation to go here....
//validate name is not empty
if(empty($name)){
$formok = false;
$errors[] = "You have not entered a name";
}
//validate email address is not empty
if(empty($email)){
$formok = false;
$errors[] = "You have not entered an email address";
//validate email address is valid
}elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)){
$formok = false;
$errors[] = "You have not entered a valid email address";
}
//validate phone number is not empty
if(empty($phone)){
$formok = false;
$errors[] = "You have not entered a phone number";
}
//validate legal issue is not empty
if(empty($legal)){
$formok = false;
$errors[] = "You have not entered a legal issue";
}
if(isset($_POST['dayz'])){
$message .= implode(', ', $_POST['dayz']);
}
//send email if all is ok
if($formok){
$headers = "From: email@email.com" . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$emailbody = "<p>You have recieved a new Appointment Request.</p>
<p><strong>Name: </strong> {$name} </p>
<p><strong>Email Address: </strong> {$email} </p>
<p><strong>Phone Number: </strong> {$phone} </p>
<p><strong>Legal Issue: </strong> {$legal} </p>
<p><strong>Classification: </strong> {} </p>
<p><strong>Preferred Appointment Day(s): </strong> {$dayz} </p>
<p><strong>Preferred APpointment Time(s): </strong> {$timez} </p>
<p>This message was sent on {$date} at {$time}</p>";
imap_mail("email@email.com","Title",$emailbody,$headers);
}
//what we need to return back to our form
$returndata = array(
'posted_form_data' => array(
'name' => $name,
'email' => $email,
'timez' => $timez,
'dayz' => $dayz
),
'form_ok' => $formok,
'errors' => $errors
);
//if this is not an ajax request
if(empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) !== 'xmlhttprequest'){
//set session variables
session_start();
$_SESSION['cf_returndata'] = $returndata;
//redirect back to form
header('location: ' . $_SERVER['HTTP_REFERER']);
}
}
?>
任何帮助都将不胜感激。这是我第一次在这里发帖,所以如果我没有遵循正确的协议,请告诉我,我会纠正的。谢谢 我猜这句话:
<p><strong>Preferred APpointment Time(s): </strong> {$timez} </p>
这应该建立一个检查时间数组,然后将它们添加到字符串中。我希望我的理解是正确的-否则这是浪费了几行代码
谢谢有什么问题吗?这些复选框根本没有出现吗?出现了错误的复选框?发送的电子邮件中根本没有显示复选框的值。如果执行
var\u转储($\u请求)
,会发生什么情况?值是否显示在那里?抱歉,andrewsi,但我完全不知道我需要将其放在代码中的什么位置才能尝试。我不想问,但你能帮我“说清楚”吗?不管出于什么原因,这句话根本没有任何意义。我会尝试一下,看看会发生什么。非常感谢你的帮助!我可能完全没有做对,但是添加了上面的代码,现在得到了“Parse error:syntax error,unexpected”,指向if(!empty($time){
line.MazB,如果你不介意的话,哪里是添加代码的正确位置?那一行有一个拼写错误-$time之后缺少一个结束括号)
;我将对此进行修改。它现在正在提交,但在提交时我收到以下错误,并且在电子邮件中仍然没有列出。第21行session_start()[function.session start]上为foreach()提供的参数无效:无法发送会话缓存限制器-已发送头(输出从…php:21开始)在…php第105行无法修改标题信息-标题已由发送(输出开始于…php:21)在…php第109行
检查您的脚本在标记之前或之后没有空格-并检查您没有任何您不想要的内容。很抱歉输入错误-很好@andrewsi修复此问题:)
$timeAv = array();
foreach($timez as $time) {
if(!empty($time)) {
$timeAv[] = $time;
}
}
$timeStr = implode(', ', $timeAv);