0

我正在一个网站上工作,用户可以搜索 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()',为每个表单添加一个新的?我根本不知道从那里去哪里将每个输入到一个新行中,或者这甚至是正确的方法。

4

1 回答 1

2

从它的声音来看,您现在使用的方法将只允许一个用户拥有一个播放列表。更好的方法可能是将其提取到 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。

于 2013-03-29T00:52:38.087 回答