$ _POSTing具有相同id的多个输入,这些输入在点击时通过jQuery添加。

时间:2013-03-29 19:15:39

标签: php javascript jquery mysql

我的网站搜索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的大学项目。

3 个答案:

答案 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);