0

我有一个指向搜索我的数据库的PHP脚本的 HTML 表单。MySQL如果用户没有在表单中输入任何值,我想向他们返回一条错误消息。我已经尝试了下面的代码,但现在发生的情况是,即使我在表单字段中输入了一个值,它也会返回下面的错误消息。如果下面的命令不是最好的,你能指出什么是错误的,或者甚至建议一个替代方案。

if ($_POST['checkbox01'] == "on")
{
    $result = mysql_query("SELECT * FROM colour", $connection) or die("Cannot run     query");
    //Search for all records
}

elseif (!$_POST[''])
//Or else, if no fields are filled in...
{
    die('Please complete at least one search field');
    //Give an error message
}

else
... //Search the MySQL db using vaues entered into the form

(我也试过...)

elseif(empty($_POST[''])) 
{
die('Please complete at least one search field');
} 
4

6 回答 6

1

我认为isset函数是您在这里需要的,我会将它与逻辑结合起来检查您的所有表单输入字段,例如(快速 hacky 示例 - 尽管不要使用 die 作为真正的解决方案):

vfield1 = "";
vfield2 = "";
vfield3 = "";

if (isset($_POST['field1'])) { vfield1 = $_POST['field1']; }
if (isset($_POST['field2'])) { vfield2 = $_POST['field2']; }
if (isset($_POST['field3'])) { vfield3 = $_POST['field3']; }

if (vfield1.vfield2.vfield3 == "") {
    die('Please complete at least one search field');
}
于 2013-03-14T13:05:24.883 回答
0

$_POST[''] 不会做任何事情,$_POST 是从表单发送的字段数组。例如,如果您有一个简单的登录表单(用户名/密码),则 $_POST 数组将类似于:

array('username' => 'value', 'password' => 'value');

如果要检查所有字段是否为空,最好在数组中运行一个循环。例如:

foreach($_POST as $key => $value) {
   if($value == "") { die("Please enter a value into $key") }
}
于 2013-03-14T13:05:12.100 回答
0

这也将起作用:

<?php

echo '
<form action="" method="post">
<input type="text" name="search"><input type="submit" name="submit" value="Search">
</form>';

if(isset($_POST['submit'])) {

    // Check if NOT searchfield is emty
    if(!$_POST['search'] == "") {
        echo $_POST['search'];
    }

    else {
        echo 'You have to search for something!';
    }

}

?>
于 2013-03-14T13:21:18.083 回答
0

也许看看这个?这是一个实时验证,非常适合我的表单。

于 2013-03-14T13:03:00.727 回答
0

在旁注中,如果您检查复选框以指定一个值,它可能会有所帮助,即:

<input type="checkbox" name="search_active" value="t" />

....然后在 PHP 中检查它

if ($_POST['search_active'] == "t") { // box checked } else { //box not checked }

无论如何,要检查列,我会用强制列填充一个数组,然后在 POST 数组上进行 foreach 以检查列是否都在那里。

...更好的是使用某种 jQuery 验证,这意味着您甚至不需要重新加载页面:)

这是一些用强制列填充数组的示例代码:)

$field_check = array("field1", "field2", "field3");
foreach ($field_check as $field) { 
   if (empty($_POST[$field])) { 
      die("Please enter a value into $field");
   }
}
// if we have got to here - continue with the search.
mysql_query(....);
于 2013-03-14T13:03:06.313 回答
-1

这样的事情应该更容易在客户端使用一些 Javascript 来实现。jQuery为此提供了一些非常有用的方法,例如:

$('#Your_Form input').blur(function()
{
    if( $(this).val().length == 0 ) {
        $('#warningDiv').addClass('warning');
    }
    else{
        $('#warningDiv').removeClassClass('warning');
    }
});

#warningDiv当输入为空时,可能是一个 div 变为红色。您还可以在输入按键/更改事件中实现类似的行为,以定期检查值。

如果您坚持在服务器端执行此操作,我建议您使用不同的答案。

于 2013-03-14T13:04:21.650 回答