0

私のサイトは Spotify ライブラリを検索し、結果のリストを返します。ユーザーは結果の 1 つをクリックしてプレイリストに追加し、フォーム送信の一部として投稿することができます。以下のコードは、クリックされた曲を .selected-list コンテナーに追加し、Spotify の曲の href の値を使用して非表示の入力を DOM に追加します。

 $('.spotify-result').click(function() {
    var $input = $('<input type="hidden" id="track_href" class="track" value="" name="track_href" />');
    $(this).clone().appendTo($('.selected-list'));
    $('.submit-spotify').before($input);
    $input.val($('.track-href', this).text());
 });

ここでの問題は、各入力に 'track_href' の ID が与えられており、これが $_POST 変数で送信されることです。以下の PHP は、これをテーブルに追加する方法を示しています。

$song_query = "INSERT INTO songs (playlist_id, href) VALUES ('$playlist_id', '$href')";
if (mysql_query($song_query)) {
    $message = "<p>Congratulations, your Journix has been added.</p>";
} else {
    $message = ("Insert failed. " . mysql_error() . "<br/>" . $song_query);
}   

その瞬間に何が起こるかというと、最初の曲がテーブルに追加されるだけです。各入力をループすると推測しているある種のループが必要ですが、同じIDで各入力を投稿することは、それを行う方法ではないと確信しています。

mysql 関数が減価償却されていることは承知していますが、これは大学のプロジェクトのためのもので、mysql を使用する必要があります。

4

3 に答える 3

3

2 つの問題があります。

まず、html ID は一意でなければなりません。これらの ID を取得するために jquery を使用していない限り、これは実際には影響しませんが、それでも変更する必要があります。本当にIDが必要ですか?

次に、同じ名前の入力は互いに上書きされます。すべてを保存するには、配列にします。

name="track_href[]"

その後、$_POST['track_href'] をループして挿入するだけです。

于 2013-03-29T19:20:35.787 に答える
1

それはフィールドのidではなく、属性です。バックエンドPHPスクリプトで簡単にアクセスできるように、それらを一意にするか配列にする必要があります。inputname

フロントエンドでの 使用

var $input = $('<input type="hidden" id="track_href" class="track" value="" name="track_href[]" />');

それ以外の

var $input = $('<input type="hidden" id="track_href" class="track" value="" name="track_href" />');

バックエンドで

//$href is an array now
  foreach($href as $v){
     $tmp[] = "('$playlist_id', '".mysql_real_escape_string($v)."')";
  }
  $song_query = "INSERT INTO songs (playlist_id, href) VALUES ".implode(',', $tmp);
于 2013-03-29T19:25:43.010 に答える
1

$_POST 配列のキーは、入力の ID ではなく名前です。

于 2013-03-29T19:23:24.143 に答える