我需要创建一个包含许多相同字段的表单,必须将其插入到数据库中,但我遇到的问题是,如果用户只填写一行或两行,表单仍然会提交空字段的空白数据以及用户填写的一个或两个字段。
如何检查尚未填写的行并将其从查询中删除? 或检查已填写的内容并将其添加到查询中。 。
thank_you.php文件将捕获$ _POST变量并将它们添加到数据库中。
<form method="post" action="thank_you.php">
Name: <input type="text" size="28" name="name1" />
E-mail: <input type="text" size="28" name="email1" />
<br />
Name: <input type="text" size="28" name="name2" />
E-mail: <input type="text" size="28" name="email2" />
<br />
Name: <input type="text" size="28" name="name3" />
E-mail: <input type="text" size="28" name="email3" />
<br />
Name: <input type="text" size="28" name="name4" />
E-mail: <input type="text" size="28" name="email4" />
<input type="image" src="images/btn_s.jpg" />
</form>
我假设我可以使用javascript或jQuery来完成此操作,我将如何进行此操作?
Thanx提前帮忙。
答案 0 :(得分:2)
使用javascript进行表单验证很好,但你不应该依赖它。要做的第一件事就是检查PHP中$ _POST中的值,并确保它们看起来是有效的(或者至少检查它们是不是“”)。
要使用javascript检查,您可以在表单标记中放置一个onSubmit =“...”,如果表单数据无效(意味着“不提交表单”),则返回false。你也可能想要一个警报,或者你可以以某种方式修改页面以指出问题。我不会为你写出一个表单验证脚本。
答案 1 :(得分:2)
正如其他人所说,依靠javascript作为唯一的验证形式是不好的做法。将javascript视为一种帮助您的用户提交有效数据的方法 - 但您应该始终在服务器端进行验证。考虑到这一点,这是我的建议:
<form method="post" action="thank_you.php">
Name: <input type="text" size="28" name="name1" />
E-mail: <input type="text" size="28" name="email1" />
<br />
Name: <input type="text" size="28" name="name2" />
E-mail: <input type="text" size="28" name="email2" />
<br />
Name: <input type="text" size="28" name="name3" />
E-mail: <input type="text" size="28" name="email3" />
<br />
Name: <input type="text" size="28" name="name4" />
E-mail: <input type="text" size="28" name="email4" />
<input type="image" src="images/btn_s.jpg" />
</form>
<?php
$num = 4; //Number of times the field is repeated
for($i = 1; $i <= $num; $i++){
if($_POST['name'.$i] != '' && $_POST['email'.$i] !=''){ //Only process if name and email are not blank
$thisname = $_POST['name'.$i];
$thisemail = $_POST['email'.$i];
//Your code here
}
}
?>
答案 2 :(得分:0)
您可以使用提交按钮调用JavaScript函数而不是提交表单来执行JavaScript验证。如果数据通过了验证标准,则JavaScript函数可以提交数据。但是,您不应完全依赖JavaScript验证。如果用户禁用了JavaScript,则不会验证其数据,因此您的PHP应用程序必须足够强大以处理空白数据。但是,您需要关注的不仅仅是空白数据。在将数据用于数据库之前,您需要验证垃圾的用户输入并清理数据。
答案 3 :(得分:0)
我不知道确切的PHP语法,但我会编写一些应该做的技巧的伪代码。基本的想法是,当您检索$ _POST值时,您将需要创建一个具有可接受值的新哈希,然后您可以将该哈希传递给构建查询或其他任何需要的方法。我这样做的方法是从哈希中完全删除无效值,所以看起来它们从来就不存在。显然,您可以采用不同的方式(将它们标记为无效等)。
$cleaned_args = array();
foreach ($_POST as $key => $value) {
if ($_POST[$key] != "" && is_valid_email($_POST[$key])) {
$cleaned_args[$key] = $_POST[$key];
}
make_db_call_or_whatever($cleaned_args);
其中is_valid_email
是PHP可能或您必须编写的方法。如果需要,您甚至可以将if子句概括为is_valid($_POST[arg])
方法,但这取决于情况的复杂程度。
希望这有助于您了解如何执行此操作。我认为这比在表单提交之前使用JavaScript动态删除输入更容易,并且如上所述,比仅在客户端执行它更安全。