我在一个网站上工作,用户可以搜索Spotify库并点击结果,然后将自己添加到‘播放列表’中。这个播放列表将通过PHP添加到一个MySql数据库中。所有这一切都添加了spotify href,但显然用户会想要添加多首歌曲到他们的播放列表中。
感谢Brad下面的回答,我现在有了一个改进的数据库结构,但我仍然不确定如何循环播放列表中添加的每首歌曲,发布所有这些歌曲,并将它们作为单独的行添加到我的“歌曲”表中。
更新了“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-.val”,并获得每个结果的.val(),为每个结果添加一个新的表单?我根本不知道从哪里开始将每个元素输入到新的行中,或者这是不是正确的方法。
发布于 2013-03-29 08:52:38
听起来,你现在使用的方法只允许一个用户拥有一个播放列表。更好的方法可能是将其提取到3个不同的表中
Users [ id | username ]
Playlists [ id | user_id | playlist_name ]
Songs [ id | playlist_id | href ]这可以描述为:
"Users can have many playlists" <=> "Playlists will have one user"
"Playlists have many songs" <=> "Songs have many playlists"此外,我不确定它是如何工作的,但我假设在Spotify URL中你会有一个歌曲ID (http://www.spotify.com?id=V92Ksj2)。与其存储整个url,不如只存储歌曲ID。
https://stackoverflow.com/questions/15694625
复制相似问题