0

私は jquery.webspirited.coms tagit jquery を使用しています。これは、タグを作成するという意味で正しく機能し、フロントエンドで分離されていますが、データを POST すると、最後のタグが値としてデータベースに投稿されるだけです..

アドオンを正しくインストールする方法に関するドキュメントが見つかりません。ヘッダーなどに入れるコードは別として、ヘッダー コードを次に示します。

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

ヒントをありがとう

4

2 に答える 2

0

非表示の入力名を に変更すると、PHP スクリプトでname="tag[]"配列を受け取り$_POST['tag']ます。現在、前の入力を上書きしているため、1 つのアイテムしか受け取っていません。

その後、配列をループして、必要に応じてデータベースに挿入できます。

于 2013-07-21T08:22:00.667 に答える
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あり、ループ終了後にコードを実行している可能性がappendあります)appendfor

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 に答える