POST后如何保留多个字段?

时间:2017-12-27 10:35:33

标签: php post

我有一个提交博客文章的标题/参赛表格。在提交时,它会检查数据库中的相同标题(您不允许这样做),然后返回错误以告知您更改标题。我想让它在POST后保持两个字段都填满,因为用户不应该重写整个条目。但是,它只保留TITLE。 session_start存在于header.php中。请忽略任何SQL注入易受攻击的部分。

<?php
require("connect.php");
require("header.php");
if(isset($_POST['post'])){
$title = $_POST['blogtitle'];
$entry = $_POST['blogentry'];
$author = $_SESSION['username'];
$newBlogPostQuery = "SELECT * FROM contents WHERE title='$title'";
$newBlogPostResult = mysqli_query($conn, $newBlogPostQuery) or die("Error:".mysqli_error($conn));
$newBlogPostRow = mysqli_fetch_array($newBlogPostResult, MYSQLI_ASSOC);

if(mysqli_num_rows($newBlogPostResult) ==1){
    $blogPostExists = TRUE;
}
else{
    $blogQuery = mysqli_query($conn, "INSERT INTO contents (timestamp, title, entry, authorName) VALUES (now(), '$title', '$entry', '$author')");
    if($blogQuery){
        header("Location: index.php");
    }
}
}

?>
<div class="flex-enable flex-center blog-body">
<?php if(isset($blogPostExists)&&$blogPostExists){
                echo '<div class="exception" style="margin: 0;"><span class="small-white-subtitle">Please use a different title.</div>';
            }
            ?>
    <form class="flex-enable flex-column" method="POST">
        <label for="blogtitle"><span class="blog-insert-title">Title</span></label>
        <input class="blog-input-text small-white-title" id="blogtitle" type="text" name="blogtitle" placeholder="Your title" value="<?php echo isset($_POST['blogtitle']) ? $_POST['blogtitle']:''; ?>">
        <label for="blogentry"><span class="blog-insert-title">Blog post</span></label>
        <textarea class="blog-input-text blog-insert-entry" id="blogentry" type="text" rows="20" name="blogentry" placeholder="Write something amazing here..." value="<?php echo isset($_POST['blogentry']) ? $_POST['blogentry']:''; ?>"></textarea>
        <input class="form-button small-white-title" type="submit" name="post" value="Post">
    </form>
</div>

4 个答案:

答案 0 :(得分:6)

Textarea没有value属性,内容介于<textarea></textarea>之间。

<textarea class="blog-input-text blog-insert-entry" id="blogentry" type="text" rows="20" name="blogentry" placeholder="Write something amazing here..."><?php echo isset($_POST['blogentry']) ? htmlentities($_POST['blogentry']) : ''; ?></textarea>

答案 1 :(得分:4)

您需要在textarea开始和结束标记之间设置值

在你的情况下,它将是

    <textarea class="blog-input-text blog-insert-entry" id="blogentry" type="text" rows="20" name="blogentry" placeholder="Write something amazing here..."><?php echo isset($_POST['blogentry']) ? $_POST['blogentry']:''; ?></textarea>

答案 2 :(得分:3)

你应该把值设置为textarea标签之间的值

<textarea class="blog-input-text blog-insert-entry" id="blogentry" type="text" rows="20" name="blogentry" placeholder="Write something amazing here..." ><?php echo isset($_POST['blogentry']) ? $_POST['blogentry']:''; ?></textarea>

答案 3 :(得分:2)

Textarea没有值属性

<form class="flex-enable flex-column" method="POST">
    <label for="blogtitle"><span class="blog-insert-title">Title</span></label>
    <input class="blog-input-text small-white-title" id="blogtitle" type="text" name="blogtitle" placeholder="Your title" value="<?php if(isset($_POST['post'])){ echo $_POST['blogtitle']; } ?>">
    <label for="blogentry"><span class="blog-insert-title">Blog post</span></label>
    <textarea class="blog-input-text blog-insert-entry" id="blogentry" type="text" rows="20" name="blogentry" placeholder="Write something amazing here..." value="<?php if(isset($_POST['post'])){ echo $_POST['blogentry']; } ?>"></textarea>
    <input class="form-button small-white-title" type="submit" name="post" value="Post">