我正在一个网站上工作,用户可以搜索 Spotify 图书馆并点击结果,然后将自己添加到“播放列表”中。然后将通过 PHP 将此播放列表添加到 MySql 数据库中。添加的所有这些都是 Spotify href,但显然用户想要在他们的播放列表中添加不止一首歌曲。
感谢布拉德在下面的回答,我现在有了一个改进的数据库结构,但我仍然不确定如何循环播放已添加到播放列表中的每首歌曲,发布所有这些歌曲并将它们作为单独的行添加到我的“歌曲”中桌子。
已更新 'spotify.js' 中的这段代码将点击的歌曲添加到播放列表 div,然后添加要提交的隐藏输入。每次单击新歌曲时,它都会创建一个新输入,但每个输入的值都会发生变化。
$('.spotify-result').click(function() {
$(this).clone().appendTo($('.selected-list'));
$('.submit-spotify').before('<input type="hidden" id="track_href" class="track" value="" name="track_href" />');
$('.track').val($('.track-href', this).text());
});
这是来自“spotify.php”的硬编码形式...
<form action="submit_spotify.php" method="post">
<input type="hidden" id="track_href" value="" name="track_href" />
<input type="submit" value="Submit Journix" />
</form>
这是“submit-spotify.php”的一个片段,目前可以使用,但当然只会将第一首歌曲添加到数据库中。
if($db_server) {
mysql_select_db($db_database) or die ("<p>Couldn't find database.</p>");
$playlist_query = "INSERT INTO playlists (user_id, route_id) VALUES ('$route_id', '$user_id')";
if (mysql_query($playlist_query)) {
$song_query = "INSERT INTO songs (href) VALUES ('$href')";
if (mysql_query($song_query)) {
$message = "<p>Congratulations, your playlist has been added.</p>";
} else {
$message = ("Insert failed. " . mysql_error() . "<br/>" . $song_query);
}
} else {
$message = ("Insert failed. " . mysql_error() . "<br/>" . $playlist_query);
}
} else {
$message = "Error: could not connect to the database.";
}
mysql_close($db_server);
我猜我需要一个循环来遍历每个'.spotify-result'并获取每个'.val()',为每个表单添加一个新的?我根本不知道从那里去哪里将每个输入到一个新行中,或者这甚至是正确的方法。