需要一个文本表单字段

时间:2014-04-26 16:25:01

标签: php

我一直在努力想要一个文本表单字段。因此,如果某个人没有填写他的名字,他将收到一个错误,例如“没有标题填写!”

我现在得到了这个,但是当我将其插入数据库时​​,它不能正常工作。

if(isset($_POST['submit'])) {
    $update = "UPDATE post SET `title`='$_POST[title]', `pic`='$_POST[pic]', `youtube`='$_POST[youtube]' WHERE id = $_POST[id]";
    $db->query($update) or die($db->error);

        if($_POST['title'] == "") {
            $error = "Title is required!";
        }
        if ($_POST['pic'] == "") {
            $error = "Picture is required!";
        }
        if(isset($error)){
            echo $error;
        } else {
        echo '<p>Your post has been updated!</p>';
        } 

 }

2 个答案:

答案 0 :(得分:4)

如果发现错误,您需要停止执行代码,而不仅仅是回显错误。如果没有错误,则只应执行将数据提交到数据库的所有其他代码。尝试这样的事情:

编辑:看到代码更新后,您需要这样做:

if(isset($_POST['submit'])) {
    if(!isset($_POST['title']) || trim($_POST['title']) == "") {
        $error = "Title is required!";
    }
    if (!isset($_POST['pic']) || trim($_POST['pic']) == "") {
        $error = "Picture is required!";
    }
    if(isset($error)){
        echo $error;
    } else {
        $update = "UPDATE post SET `title`='" . mysql_real_escape_string($_POST['title']) . "', `pic`='" . mysql_real_escape_string($_POST['pic']) ."', `youtube`='" . mysql_real_escape_string($_POST['youtube']) ."' WHERE id = " . mysql_real_escape_string($_POST['id']);
        $db->query($update) or die($db->error);
        echo '<p>Your post has been updated!</p>';
    } 
}

问题是,无论验证后发生了什么,您的数据都会被提交到数据库 - 当您检查错误时,由于SQL已经执行,因此为时已晚。 如果你按照上面显示的方式进行操作,它只会在未设置$error变量的情况下提交,这就是你想要的。

答案 1 :(得分:0)

我不会只依靠

if($_POST['title'] == "")

因为如果有人在文本字段中输入空格,它将无效。首先,标题不应该太长?那你可以为它设置最大长度吗?

也可以再运行一些检查,例如:

我不会只依靠

if(!isset($_POST['title'] || $_POST['title'] == "" || $_POST['title'] == " ")
{
   // Error
}
else
{
    // Database query
}

你想要else,否则它将始终执行数据库查询,无论他们是否没有正确填写表单。