表单不发布到数据库 - PHP

时间:2012-01-12 16:09:01

标签: php mysqli

我是PHP的新手并且设计了一个小博客。我正在尝试提交一个表单以创建一个新帖子,但它不起作用,我无法弄清楚原因。我将它与我的工作代码进行了比较,看起来就像寄存器一样。我没有收到任何错误,它只是重新加载页面而不是发布到数据库。

查看 - v_newpost.php

    <article>
    <?php
    if (!isset ($_SESSION['username']))
    {
    ?>
    <span class="alert">Please login to create a post.</span>
    <?php
    }

    else 
    {
    ?>
    <form class="newpost" action="" method="post">
    <fieldset>
    <legend>Submit a new post</legend>
    <?php if ($error['alert'] != '') { echo "<span class='alert'>".$error['alert']."</span>";} ?>
    <ul>
    <li>
    <label for="title">Title:</label>
    <input type="text" name="title" value="<?php echo $input['title']; ?>" required autofocus>
    </li>
    <li>
    <label for="content">Content:</label>
    <textarea id="content" name="content" rows=6 value="<?php echo $input['content']; ?>"></textarea>
    </li>
    </ul>
    </fieldset>
    <fieldset>
    <button type="submit" class=postbutton>Publish</button>
    </fieldset>
    </form>
    </div>
    <?php
    }
    ?>
</article>

newpost.php

    <?php
    require_once 'includes/connection.php';

$error['alert'] = '';
$input['title'] = '';
$input['content'] = '';

if (isset($_POST['submit']))
{
    if ($_POST['title'] == '' || $_POST['content'] == '')
    {
        $error['alert'] = 'Please give your post a title and content.';

        $input['title'] = $_POST['title'];
        $input['content'] = $_POST['content'];

        include_once('v_newpost.php');
    }
    else
    {
        $input['title'] = htmlentities($_POST['title'], ENT_QUOTES);
        $input['content'] = htmlentities($_POST['content'], ENT_QUOTES);

        if ($stmt = $mysqli->prepare("INSERT INTO posts (title, content) VALUES (?,?)"))
        {
            $stmt->bind_param("ss", $input['title'], $input['content']);
            $stmt->execute();
            $stmt->close();

            $error['alert'] = '';
            $input['title'] = '';
            $input['content'] = '';

            header('Location: index.php');
        }
        else
        {
            $error['alert'] = 'Failed to create post';
        }
    }

}
else
{
    include_once('v_newpost.php');
}


?>

我确定这可能是愚蠢的事情,但我已经多次查看它并且无法理解为什么它不起作用......

4 个答案:

答案 0 :(得分:1)

您必须将表单的操作设置为指向newpost.php

答案 1 :(得分:0)

您需要在表单中执行操作。尝试:

<form class="newpost" action="newpost.php" method="post">

答案 2 :(得分:0)

以下情况永远不会成立,因为您没有name="submit"的表单元素。

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

答案 3 :(得分:0)

在newpost.php中你有    if(isset($ _ POST ['submit'])) 它不起作用,因为你没有发送任何名称提交。