0

我正在使用 jquery.webspirited.coms tagit jquery,它在创建标签的意义上工作正常,在前端分离,但是当我发布数据时,它只是将最后一个标签作为值发布到数据库..

除了要在标头中放入什么代码等之外,我找不到有关如何正确安装插件的任何文档,这是标头代码。

<script type="text/javascript">
$(function () {

  $('#topic').tagit();    

  $('#topicGetTags').click(function () {
    showTags($('#topic').tagit('tags'))
  });
  $('input[type=submit]').click(function(){
    tag = $('#topic').tagit('tags');
    console.log(tag);
    for (var i in tag)
      $('form').append("<input type='hidden' name='tags[]' value='"+tag[i].value+"' >");

  });
  function showTags(tags) {
    console.log(tags);
    var string = "Tags (label : value)\r\n";
    string += "--------\r\n";
    for (var i in tags)
      string += tags[i].label + " : " + tags[i].value + "\r\n";
    alert(string);
  }
});
</script>

输入

<ul id="topic" name="tags[]"></ul>

tagit.js 文件本身有将近 500 行,所以不要在这里复制/粘贴它,这里是它的链接。

http://webspirited.com/tagit/js/tagit.js

另外这里是插入代码,以防我需要在那里查看

$tags = isset($_POST['tags']) ? $_POST['tags'] : null;

if (is_array($tags)) {
foreach ($tags as $t) {
    // escape the $t before inserting in DB
    $sql = "INSERT INTO tags (tags) VALUES('$t')";
}

感谢您的任何提示

4

2 回答 2

0

尝试这个:

$tag = isset($_POST['tag']) ? $_POST['tag'] : null;

if (is_array($tag)) {
    foreach ($tag as $t) {
        // escape the $t before inserting in DB
        $sql = "INSERT INTO tags (tag) VALUES('$t')";
    }
} else {
    echo 'Invalid tag';
}

*已更新:更改以下代码(tage[]用于名称并将附加代码包装在{}. 可能是您在循环结束后执行的代码和for代码之间有一些东西)appendappendfor

for (var i in tag)
    $('form').append("<input type='hidden' name='tag' value='"+tag[i].value+"' >");

如下:

for (var i in tag) {
    $('form').append("<input type='hidden' name='tag[]' value='"+tag[i].value+"' >");
}
于 2013-07-21T08:24:29.400 回答
0

将隐藏的输入名称更改为name="tag[]",您将$_POST['tag']在 PHP 脚本中收到一个数组 - 目前您正在覆盖先前的输入,这就是您只收到一个项目的原因。

然后,您可以遍历数组并根据需要将它们插入数据库中。

于 2013-07-21T08:22:00.667 回答