私は、ユーザーが 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() を取得して、それぞれのフォームに新しいものを追加するには、そこにループが必要だと思いますか? そこからそれぞれを新しい行に入力する場所、またはこれが正しいアプローチであるかどうかはまったくわかりません。