【发布时间】:2021-12-20 05:31:08
【问题描述】:
所以,我有这个系统,您可以在其中发帖。因此,它的工作原理是,有一个输入字段,无论您在输入字段中键入什么,然后单击发布,它将作为输入发送到数据库并被发布。将显示该帖子。但是,在我当前的系统中,在输入字段中输入内容并单击帖子后,该条目会发送到数据库,但帖子实际上并未显示。要显示它,您需要再次刷新页面,然后它会显示该页面,并且两个条目会进入数据库。
我不希望这种情况发生。当用户在输入字段中输入文本并单击帖子时,帖子应该随时显示,您不必刷新帖子即可显示,并且应该只将一个条目发送到数据库,而不是两个。现在,我不会包括我的数据库连接和我的插入语句,但这里是显示帖子的代码:
<div class="textPost">
<?php
$sql = "SELECT * FROM posts";
$result = mysqli_query($connection, $sql);
if (mysqli_num_rows($result) > 0) {
while ($row = mysqli_fetch_assoc($result)) {
?>
<div class="textpostFormat">
// all the displayed post content
</div>
<?php
}
}
?>
</div>
插入语句(post.php):
<?php
session_start();
// Making Connection To The Database
$dbHost = "localhost";
$dbUser = "root";
$dbPass = "root";
$database = "feed";
$connection = mysqli_connect($dbHost, $dbUser, $dbPass, $database) or die ("Sorry, we could not connect to the database");
// Posting System
if (!empty($_POST['postContent'])) {
$post = $_POST['postContent'];
$firstname = $_SESSION['firstname'];
$lastname = $_SESSION['lastname'];
$sql = "INSERT INTO posts (firstname, lastname, body, date_posted) VALUES (?, ?, ?, NOW())";
$stmt = mysqli_stmt_init($connection);
// nested if statement
if (!mysqli_stmt_prepare($stmt, $sql)) {
echo "";
} else {
mysqli_stmt_bind_param($stmt, "sss", $firstname, $lastname, $post);
mysqli_stmt_execute($stmt);
}
} else {
echo "";
}
?>
我应该怎么做才能解决这个问题?请帮忙。
【问题讨论】:
-
您正在通过 AJAX/FORM 保存帖子?
-
如何提交表格?这会导致页面刷新吗?从它的声音来看...所以我们需要查看您的实际页面代码。
-
在你的 php 脚本的最后一行使用重定向来刷新你的页面。
-
@AliBabaAzimi 怎么样?你能解释一下代码的位置和内容吗?
-
伙计们,我没有任何 AJAX 来防止或导致通过 AJAX 刷新页面。现在,正如@AliBabaAzimi 所建议的那样,我可以在我的 PHP 脚本的最后一行中使用重定向来自动刷新我的页面。那么,我怎么能这样做。但是,一个限制是,如果我再次刷新,同一个帖子的多个条目不会被发送到数据库吗?
标签: php