【发布时间】:2020-04-18 04:33:25
【问题描述】:
我的代码可以正常地从数据库中插入或删除。刷新页面后,它将正确显示。但是,我怎样才能让它在点击时切换?我在网上搜索并尝试了解决方案,但没有一个奏效。
这是我的代码:
// PHP CODE TO SEE IF USER ALREADY LIKES VIDEO
<?php
$query272 = "SELECT * FROM video_likes WHERE video_id = :video_id272 AND user_id = :user_id272";
$stmt272 = $pdo->prepare($query272);
$stmt272->bindValue(':video_id272',$id123);
$stmt272->bindValue(':user_id272',$userID);
$stmt272->execute();
$count272 = $stmt272->rowCount();
if($count272 > 0) { $you_like_this = 1; } else { $you_dont_like_this = 1; }
if($you_dont_like_this == 1) {
?>
Ajax 代码
<script>
$(function() {
$('#insertLike').click(function () {
var videoID271 = $('#id').val();
var userID271 = $('#userID').val();
console.log('starting ajax');
$.ajax({
url: "./insert-like.php",
type: "post",
data: { id: videoID271, userID: userID271 },
success: function (data) {
var dataParsed = JSON.parse(data);
console.log(dataParsed);
}
});
});
});
</script>
点赞按钮形式:
<div style="float:left;margin-right:12px" id="like">
<input type="hidden" name="id" id="id" value="<?php echo $id123; ?>" />
<input type="hidden" name="userID" id="userID" value="<?php echo $userID; ?>" />
<input type="hidden" name="you_like_this" id="you_like_this" value="1" />
<button onclick="insertLike(this)" class="insertLike" id="insertLike" style="background:none;border:none;text-decoration:none; color:#DD4400;font-weight:bold">Like</button>
</div>
<?php } else { ?>
不喜欢按钮 Ajax:
<script>
$(function () {
$('#deleteLike').click(function () {
var unlikeVideoID272 = $('#unlikeVideoID').val();
var unlikeUserID272 = $('#unlikeUserID').val();
console.log('starting ajax');
$.ajax({
url: "./delete-like.php",
type: "post",
data: { unlikeVideoID: unlikeVideoID272, unlikeUserID: unlikeUserID272 },
success: function (data) {
var dataParsed = JSON.parse(data);
console.log(dataParsed);
}
});
});
});
</script>
不喜欢表格:
<div style="float:left;margin-right:12px" id="unlike">
<input type="hidden" name="unlikeVideoID" id="unlikeVideoID" value="<?php echo $id123; ?>" />
<input type="hidden" name="unlikeUserID" id="unlikeUserID" value="<?php echo $userID; ?>" />
<button onclick="deleteLike(this)" class="deleteLike" id="deleteLike" style="background:none; border:none; text-decoration:none; color:#DD4400; font-weight:bold">Unlike</button>
</div>
PHP 关闭:
<?php } ?>
编辑(按要求):
Table users Table likes Table videos
user_id <------- user_id -------> user_id
likes
video_id ------> id
不使用不喜欢。取而代之的是,使用喜欢和不喜欢(当你已经喜欢它时,你可以改变主意和不喜欢它)。不像会简单地从表中删除like。
再一次,插入数据库工作正常。我只需要在 Ajax Success 200 之后将单词 like 更改为 like 单词。嗯,不仅仅是单词。剧本也一样。当喜欢变成不喜欢时,点击不喜欢应该再次喜欢视频。好像有人是双相的,并不断改变他们的情绪/观点。想想 Facebook 的点赞按钮。你点击它。它喜欢一个帖子。您再次单击它,它与帖子不同。无需刷新页面。
【问题讨论】:
-
我开始回答,但还不够。有很多重复需要被排除:你不需要两个脚本去两个 url 来进行二进制更改。只需发送类似 videoId、userId 和 vote 的内容。投票可以是喜欢或不喜欢。您的 php 脚本更新数据库并以 json 响应,JavaScript 接收响应并调整页面。这里的所有都是它的。但是,我没有看到您已成功从 php 接收到 json 的证据(您的 php 脚本没有显示任何输出),也没有在您的 ajax 函数中看到任何处理它的东西
-
正如我在问题中提到的,此脚本唯一要做的就是将记录正确插入数据库。我需要帮助的是向 PHP 部分报告。此外,我尝试使用一个脚本,在我使用的单个页面中,我有一个 else 语句。 If like then insert into like else delete from like...不确定这是否是正确的方法,但我就是这样做的。它没有用。所以,我创建了两个脚本,它可以插入数据库。但仍然不能向 PHP 报告(我需要帮助的部分)。我可以很好地理解 PHP,但不是 Ajax / JQuery。
-
“但不是为了向php报告”...您的意思是向浏览器报告吗?我遇到的问题是 1)我不知道架构(你如何保存用户、喜欢和视频的关系 2)我不知道你如何显示喜欢或不喜欢的视频.如果您可以将这些添加到问题中(不是 cmets),我会看看我们是否可以从那里开始