使用PHP循环向单个MySql表添加多个项

使用PHP循环向单个MySql表添加多个项,php,mysql,spotify,Php,Mysql,Spotify,我在一个网站上工作,用户可以搜索Spotify库并点击结果,然后将自己添加到“播放列表”中。然后将通过PHP将此播放列表添加到MySql数据库中。所有这些都添加了spotify href,但很明显,用户会希望在他们的播放列表中添加多首歌曲 感谢Brad在下面的回答,我现在有了一个改进的数据库结构,但我仍然不确定如何循环播放列表中添加的每首歌曲,发布所有这些歌曲,并将它们作为单独的行添加到我的“歌曲”表中 更新了“spotify.js”中的这段代码,将单击的歌曲添加到播放列表div中,然后添加一个

我在一个网站上工作,用户可以搜索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 result')。单击(函数(){
$(this.clone().appendTo($('.selected list'));
$('.submit spotify')。在('')之前提交;
$('.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);
if($db\u服务器){
mysql\u选择\u数据库($db\u数据库)或死亡(找不到数据库。

);
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);
$playlist\u query=“插入播放列表(用户标识、路由标识)值(“$route\u id”、“用户标识”)”; if(mysql_查询($playlist_查询)){ $song_query=“插入歌曲(href)值('$href')”; if(mysql_查询($song_查询)){ $message=“祝贺您,您的播放列表已添加。

”; }否则{ $message=(“插入失败。”.mysql\u error()。“
。”$song\u查询); } }否则{ $message=(“插入失败。”.mysql\u error()。“
。”$playlist\u查询); } }否则{ $message=“错误:无法连接到数据库。”; } mysql\u close($db\u服务器);

我猜我需要一个循环来遍历每个“.spotify result”并获取每个结果的.val(),为每个结果的表单添加一个新的?我根本不知道该从哪里开始将每一个输入到一个新行,或者如果这是正确的方法。

从它的声音来看,您现在使用的方法将只允许一个用户拥有一个播放列表。更好的方法可能是将其提取到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()。与其存储整个url,不如只存储歌曲ID。

回答得好,我现在就开始。谢谢