php表单中的必填字段无法正常工作
我想将表格中的所有字段设置为“必填”。我知道已经有很多很好的答案类似的问题,但不幸的是,我找不到我的代码的问题 我需要的是,仅当用户将某些字段留空时才显示错误消息,但如果我以显示错误“Oops…所有字段都是必需的”的形式回答所有问题,则显示错误消息。谁能帮帮我吗 以下是我尝试过的:php表单中的必填字段无法正常工作,php,required-field,Php,Required Field,我想将表格中的所有字段设置为“必填”。我知道已经有很多很好的答案类似的问题,但不幸的是,我找不到我的代码的问题 我需要的是,仅当用户将某些字段留空时才显示错误消息,但如果我以显示错误“Oops…所有字段都是必需的”的形式回答所有问题,则显示错误消息。谁能帮帮我吗 以下是我尝试过的: session_start(); if(isset($_POST['submit'])) { $_SESSION['q1'] = $_POST['q1']; $_SESSION['q2'] =
session_start();
if(isset($_POST['submit']))
{
$_SESSION['q1'] = $_POST['q1'];
$_SESSION['q2'] = $_POST['q2'];
$_SESSION['q3'] = $_POST['q3'];
$_SESSION['q4'] = implode(',', $_POST['birthplace']);
$_SESSION['q5'] = implode(',', $_POST['countrylived']);
$q1 = mysql_real_escape_string($_SESSION['q1']);
$q2 = mysql_real_escape_string($_SESSION['q2']);
$q3 = mysql_real_escape_string($_SESSION['q3']);
$q4 = mysql_real_escape_string($_SESSION['q4']);
$q5 = mysql_real_escape_string($_SESSION['q5']);
$required = array('q1', 'q2', 'q3', 'q4', 'q5');
$error = false;
foreach($required as $field) {
if (empty($_POST[$field])) {
$error = true;
}
}
if ($error) {
echo "Oooops!! It seems you did not answer all the questions. Please not that all fields are required.";
}
else {
$query="INSERT INTO test (q1, q2, q3, q4, q5) VALUES ('$q1', '$q2', '$q3', '" . $q4 . "', '" . $q5 . "')";
mysql_query($query) or die (mysql_error() );
header('Location: Thankyou.php');
exit;
}
}
?>
编辑:这是我的html表单的一部分。(抱歉,它包含很多问题,所以我只选择了与q1-5相关的部分)
第一步
请仔细回答以下问题,以帮助我们为您提供最佳推荐
你的性别是什么?
男性
女性
你几岁?
18岁以下
18-30
31-40
41-60
60多岁
3.你的婚姻状况如何?
已婚或家庭伴侣
单身
宁可不说
4.你出生在哪里?
5.请选择您在那里居住至少5年的国家/地区?
//程序与Q4相同//
......
.....
您的问题在于,您的代码正在检查始终为空的变量:请注意,您的表单中似乎没有$\u POST['q4']或$\u POST['q5']
在检查器中,尝试测试已分配的会话字段:
$required = array('q1', 'q2', 'q3', 'q4', 'q5');
$error = false;
foreach($required as $field) {
if (empty($_SESSION[$field])) {
$error = true;
}
}
或者,你可能想检查一下你的出生地和乡下生活的田地里有什么。如果它们不是数组,则内爆函数将不会返回任何内容
如果这不起作用,请添加:
if(empty($_SESSION['q1'])) {
echo "q1 is empty!";
}
if(empty($_SESSION['q2'])) {
echo "q2 is empty!";
}
if(empty($_SESSION['q3'])) {
echo "q3 is empty!";
}
if(empty($_SESSION['q4'])) {
echo "q4 is empty!";
}
if(empty($_SESSION['q5'])) {
echo "q5 is empty!";
}
找出哪些字段有问题。很可能有些字段是空的。 提交表单后,通过显示表单内容检查是否已填写所有表单字段
只需添加
var\u dump($\u POST);退出
在PHP代码的顶部,并发布结果。快速修复:if(空($$field))
为什么?因为您的表单中没有q4
或q5
,所以您将q1
-q5
添加到会话中,但检查\u POST
元素。@user574632:对不起,我不明白您的意思。再见,我没有q4或q5?贾斯汀纳斯:如果你的意思是谢尔伍建议的,我也测试了会话,但没有任何改变:(@mOna,除非你出示表单,我只是猜测。但是你不使用变量$u POST['q4']或$u POST['q5']除了这个循环,这是一个公平的猜测。我尝试了你所说的,但即使我填写了所有答案,我仍然会收到错误“ooppss..所有字段都是必需的!”:(((你也可以发布表单,我会看看发生了什么。我已经测试了你的表单,它对我来说很好。请参阅我上面的答案,以获取一段代码片段。尝试一下,让我知道发生了什么。@sherwoor:我写了你的第二个检查(分别检查每个字段),我进行了测试,但举例来说,我没有填写第二季度和第四季度,但现在问题正好相反!无论如何,提交后它会将我重定向到感谢页面!@sherwoor:它解决了:)我真的不知道为什么它突然起作用了!我只是尝试了$SESSION[$field]首先它不工作,但现在它工作得很好!非常感谢你的帮助我按照你说的做了,提交后它显示给我:数组(8){[“q1”=>string(4)“male”[“q2”]=>string(5)“18-30”[“birthplace”]=>array(1){[0]=>string(6)“安哥拉”}[“p_scnt”]=>array(1){[0]=>string(0)”}}=>数组(1){[0]=>string(0)“}[“优先级”]=>string(0)“[“提交”]=>string(6)“提交”}也感谢您的回答:)
if(empty($_SESSION['q1'])) {
echo "q1 is empty!";
}
if(empty($_SESSION['q2'])) {
echo "q2 is empty!";
}
if(empty($_SESSION['q3'])) {
echo "q3 is empty!";
}
if(empty($_SESSION['q4'])) {
echo "q4 is empty!";
}
if(empty($_SESSION['q5'])) {
echo "q5 is empty!";
}