我需要帮助,基于我已经做过的事情:在输出中,每次单击按钮,它都会显示数据库中的行(注释)。但我希望如果我单击下一个按钮,它将显示数据库中的行(注释),当我再次单击它时,它将删除数据库中的上一行(注释)并显示下一行(注释)。
以下是代码:
<?php
include 'dbh.php';
$commentNewCount = $_POST['commentNewCount'];
$sql = "SELECT * FROM comments LIMIT $commentNewCount";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
while ($row = mysqli_fetch_assoc($result)) {
echo $row['id'];
}
} else {
echo "There are number!";
}
?>
这是按钮:
<script>
//jQuery code here!
$(document).ready(function() {
var commentCount = 0;
$("button").click(function() {
commentCount = commentCount + 1;
$("#comments").load("load-comments.php", {
commentNewCount: commentCount
});
});
});
</script>
答案 0 :(得分:0)
你的问题中有AJAX标记,所以我假设你对这个术语有些熟悉。这确实可以通过AJAX完成,但我在代码中没有看到任何AJAX尝试?
另外,当你说 delete 时,你的意思是按字面意思明确删除,或者只是你的评论显示作为一种滑动功能,删除来自显示的先前评论,显示队列中的下一个评论?在我的例子中,我是按照字面意义去做的,因为那是我真正想要的。
您可以做的是拥有一个处理所有评论的文件,并根据您的喜好显示它们。例如,
<?php
$sql="SELECT * FROM comments ORDER BY id DESC";
$result_set=mysqli_query($conn, $sql);
while ($row=mysqli_fetch_assoc($result)) {
/*
html construction of displaying comments,
echo'ing the row value that displays the comments.
echo $row['comments']; as a guess
*/
}
?>
为了稍后引用,我们称之为PHP文件 comments.php 。另请注意,我选择按降序排列ORDER BY
。假设您的评论ID 是自动递增,那么这将始终首先显示最新的评论,因为最高的 id&#39> 将是最新的条目。
然后,在另一个文件 display-comments.php 中作为示例,您可以创建document.ready函数,将您的注释加载到元素<div>
元素中,例如
AJAX功能可能如下所示:
$( document ).ready(function() {
function loadCommentsAjax()
{
$.ajax({
type : "POST",
url : "comments.php",
data : { },
success: function (html) {
$("#commentContainer").html(html);
}
})
}
});
我在这里做的是,我在一个document.ready
函数中封装了一个AJAX函数。这样做的是,当文档准备就绪时,它会激活AJAX函数。
AJAX函数的工作原理是我们声明一种数据类型。最常见的可能是POST
和GET
。您可以查找不同的数据类型,如何处理它们以及它们的具体含义。例如,POST
和GET
之间的主要区别在于GET
将其值显示为URL中的参数。由于我们没有解析任何数据,我们可以使用GET
就好了,因为它没有任何影响。但是,如果您需要解析敏感数据,而不希望用户与数据混合,则应使用POST
。
然后我们告诉AJAX函数,它应该使用哪个页面/文件。在我们的示例中,它将是我们之前创建的 comments.php 。然后在成功函数中,将html内容粘贴到我们定义的容器中。在这种情况下, commentContainer 。请注意,它是 id 特定定位,这意味着我们的容器元素需要具有特定的 id 。请注意,容器位于我们的主文件中,即 display-comments.php 文件。
容器的示例可能如下:
<div id="commentContainer"></div>
这个div元素将包含我们在 comments.php 文件中创建的注释和html逻辑。
在你的按钮中,你可以拥有另一个AJAX函数,处理注释删除,并在成功时调用我们的 loadCommentsAjax()函数,以适当的方式重新加载我们的评论。
处理删除注释的AJAX函数将再次具有将执行删除的PHP文件。我们在示例中将此称为 delete-comments.php 。
我们删除AJAX函数的例子:
function deleteNewestComment() {
$.ajax({
type : "POST",
url : "delete-comments.php",
data : { },
success: function (html) {
loadCommentsAjax();
}
})
}
我们的delete-comments.php将如下所示:
<?php
/*
since you are deleting the latest entry each time, what we could do,
is make an SQL query that deletes the max id from the comments table
*/
$sql="DELETE FROM comments WHERE id=(SELECT max(id) FROM comments)";
$result=mysqli_query($conn, $sql);
?>
然后我们将按钮调用delete函数,如下所示:
<button onclick="deleteNewestComment();">Delete latest comment</button>
让我知道这是否是您正在寻找的,或者您是否真的只想要一种滑动的逻辑,您只需遍历您的评论,一次显示一条。
但是如果您确实意味着删除,那么将删除按钮链接到每个评论会不会更好,这样您就可以单独删除它们,并且可以独立删除?