我正在尝试将所需的字段验证添加到一个页面,其中有5个具有相同名称的单选按钮。如果用户单击按钮进入下一页,则应显示错误,下面是我当前使用的代码,但它没有做任何事情
<?php
if (empty($_POST) === false) {
$required_fields = array('q1');
foreach($_POST as $key=>$value) {
if (empty($value) && in_array($key, $required_fields) === true) {
$errors[] = 'Please select a number between 1-5';
break 1;
}
}
if (empty($errors) === true) {
if(!isset($_POST['q1'])){
$errors[] = "Please select a number between 1-5";
}
}
}
?>
<h1>Assessment</h1>
<?php
if (isset($_GET['success']) && empty($_GET['success'])) {
} else {
if (empty($_POST) === false && empty($errors) === true) {
$updateassessment = array(
'q1' => $_POST['q1'],
);
updateassessment($updateassessment);
header ('Location: question2.php');
exit();
} else if(empty($errors) === false){
echo output_errors($errors);
}
?>
<form action="" method="post">
<p class="p1">
Question 1</p>
<p class="p4">
<?php
$result = mysql_query("SELECT * FROM traits WHERE Question = 'q1'");
while($row = mysql_fetch_array($result))
{
echo $row['fromtrait'] . ' - ' . $row['totrait'];
echo "<br />";
}
?></p>
<p class="p3">
<input type="radio" name="q1" value="1" />
1
<input type="radio" name="q1" value="2" />
2
<input type="radio" name="q1" value="3" />
3
<input type="radio" name="q1" value="4" />
4
<input type="radio" name="q1" value="5" />
5
</p><br><br>
<input type="image" src="Images/image1.png" name="submit" align="right"/>
</form>
我通过添加
来实现这一目标if (empty($errors) === true) {
if(!isset($_POST['q1'])){
$errors[] = "Please select a number between 1-5";
}
}
答案 0 :(得分:0)
你必须将action =“”设置为action =“<filename>
”(在你的表单中)否则PHP将不知道用户提交表单后“去”的位置。 Filename是指php文件。
答案 1 :(得分:-1)
它的本质PHP是一种验证表单的低效方法,因为页面必须重新加载才能完成任何PHP检查。也许客户端解决方案可以实现,但如果没有尝试,看看它是否符合您的要求......
$required_fields = array('q1');
foreach ($required_fields as $field) {
if (isset($_POST[$field]) && !empty($_POST[$field])) {
echo $field." was set<br>\n";
} else {
echo "validation for $field failed!<br>\n";
}
}
另外...... Javascript是一个选项吗? jquery ValidationEngine非常有用,它可以检查你的许多字段要求,并在提交表单之前进行验证,以减轻PHP的需要以进行检查。