将tagit输入数据拆分为多行

时间:2013-07-21 08:17:14

标签: php jquery mysql tag-it

我正在使用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

此处还有INSERTION代码,这是我需要查看的内容

$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')";
}

感谢您提供任何提示

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分: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[]作为名称并在{}中换行追加代码。可能您在forappend以及append之间有某些内容1}}代码在for循环结束后执行)

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+"' >");
}