【发布时间】:2017-07-24 17:14:07
【问题描述】:
那里有很多类似的问题,但我的问题有点复杂。
我有一个名为movies 的表,我使用下面的代码在循环中显示数据:
<?php
// LISTS MOVIES ORDERED BY RELEASE DATE -- LATEST MOVIES BY YEAR.
$stmt = $connect->prepare("SELECT id, title, releaseDate, posterUrl FROM movies ORDER BY releaseDate DESC LIMIT 4");
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($movieId, $movieTitle, $movieDate, $moviePoster);
while ($stmt->fetch()) { ?>
<div class="index-movie">
<div class="meta-container">
<img src="<?php echo $moviePoster; ?>" alt="<?php echo $movieTitle; ?>" class="poster">
<div class="meta">
<span class="title"><?php echo $movieTitle . ' (' . substr($movieDate, 0, 4) . ')'; ?></span>
</div>
</div>
<form method="POST" class="watchlist-form">
<input type="text" name="watchlist-movie-id" style="display: none;" class="watchlist-movie-id" value="<?php echo $movieId; ?>">
<input type="submit" class="add-to-watchlist" value="Add to Watchlist" name="add-to-watchlist">
</form>
</div>
<?php
}
$stmt->free_result();
$stmt->close();
?>
此循环显示来自movies 表的四个条目。当用户单击.add-to-watchlist 按钮时,电影将被添加到用户列表中。我有两个单独的表users 用于用户,watchlist 用于users 和movies 之间的连接表。
我的问题是,如何实现一个函数,以便我可以将四个列表中的“特定”电影添加到用户列表中?为了获取movieId,我将其回显到隐藏的输入字段中,但仍然无法正常工作。
我的 jQuery 代码是:
$('.add-to-watchlist').on('click', function(e) {
e.preventDefault();
var data = $(this).parent().find('.watchlist-movie-id').val();
$.ajax({
type: 'POST',
url: 'includes/watchlist.php',
dataType: 'text',
data: data,
success: function() {
$(this).hide();
},
error: function(error) {
alert(error);
}
});
});
而watchlist.php 是:
<?php
require('includes/config.php');
require('includes/auth.php');
$defaultId = 'DEFAULT';
$currentDate = 'now()';
$movieId = $_POST['watchlist-movie-id'];
$stmt = $connect->prepare("INSERT INTO watchlist (id, date, userId, movieId) VALUES (?, ?, ?, ?)");
$stmt->bind_param("ssii", $defaultId, $currentDate, $currentUser, $movieId);
$stmt->execute();
$stmt->close();
?>
【问题讨论】:
-
旁注:
$currentDate = 'now()';为什么不直接在查询中传递它呢?你这样做有什么特别的原因吗? -
$currentUser分配在哪里? -
@Fred-ii-,我没有特别的理由解释为什么我为 now() 分配了一个变量,我认为所有类似的变量在查询中看起来更清晰。至于 $currentUser,它来自 auth.php,其中保存了当前用户的 userId。
-
当您检查 DOM 时,电影 id 是否出现在您的 div 属性中?如果是这种情况,当您发送 ajax 请求时,您是否在服务器上收到了 id?如果您可以调试它,我们将能够提供更多帮助。干杯