我的网站搜索Spotify库并返回结果列表。用户可以单击其中一个结果并将其添加到播放列表中,该播放列表将作为表单提交的一部分发布。下面的代码将单击的歌曲添加到.selected-list容器中,然后使用Spotify song 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());
});
我在这里遇到的问题是每个输入的id都是'track_href',它是在$ _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的大学项目。
答案 0 :(得分:3)
有两个问题。
首先,html ID必须是唯一的。除非您使用jquery来获取这些ID,否则这对您没有影响,但您仍然应该更改它。你真的需要一个身份证吗?
其次,具有相同名称的输入将相互覆盖。为了保存它,我会把它变成一个数组。
name="track_href[]"
之后,你可以循环遍历$ _POST ['track_href']并进行插入。
答案 1 :(得分:1)
这是$ _POST数组中的键的名称,而不是输入的id。
答案 2 :(得分:1)
它不是id
字段的input
,而是name
attirbute。您需要使它们成为唯一或数组,以便在后端PHP脚本中轻松访问。
在前端 使用
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);