0

我的网站搜索 Spotify 库并返回结果列表。用户可以单击其中一个结果并将其添加到播放列表中,该列表又将作为表单提交的一部分发布。下面的代码将点击的歌曲添加到 .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

有两个问题。

首先,html id 必须是唯一的。除非您使用 jquery 来获取这些 id,否则这不会真正影响您,但您仍然应该更改它。你真的需要身份证吗?

其次,具有相同名称的输入将相互覆盖。为了保存这一切,我会把它做成一个数组。

name="track_href[]"

之后,您可以遍历 $_POST['track_href'] 并进行插入。

于 2013-03-29T19:20:35.787 回答
1

它是 $_POST 数组中的键,而不是输入的名称。

于 2013-03-29T19:23:24.143 回答
1

it isnt the id of the input field but the name attirbute. You need to make them unique or an array for easy access in backend PHP script.

in frontend use

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

instead of

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

in backend

//$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 回答