6

この質問を見ました:データベースにタグ (キーワード) を保存する方法は?

データベースをどのように構築するかについての良い答えです。しかし、PHPで保存プロセスを行うにはどの方法が最適ですか? 追加と削除の両方を処理するプロセス。

キーワードは配列として投稿されます。

編集: 現在のコードは次のようになります。

<?php
    $new = explode(',', $_POST['tags']);

    $query = mysql_query("SELECT * FROM pages_tags WHERE page_id = '".$page_id."'") or die(mysql_error());
    while ($row = mysql_fetch_array($query))
    {
    $old[] = $row['tag'];
    }

    $tags_to_add    = array_diff($new, $old);
    $tags_to_remove = array_diff($old, $new);

    if (is_array($tags_to_add))
    {
    foreach ($tags_to_add as $add_tag) { $insert_tags[] = "('".$add_tag."', '".$page_id."')"; }
    $sql_insert_tags = "INSERT INTO pages_tags (tag, page_id) VALUES ".implode(',', $insert_tags);
    mysql_query($sql_insert_tags) or die(mysql_error());
    }

    if (is_array($tags_to_remove))
    {
    foreach ($tags_to_remove as $remove_tag) { $delete_tags[] = "('".$remove_tag."')"; }
    $sql_delete_tags = "DELETE FROM pages_tags WHERE page_id = '".$page_id."' AND tag IN (".implode(',', $delete_tags).")";
    mysql_query($sql_delete_tags) or die(mysql_error());
    }
?>
4

1 に答える 1

4

現在のタグを選択することを提案します。その後、次のことができます。

$tags_to_add = array_diff($new, $old);
$tags_to_remove = array_diff($old, $new);

その後、2 つの簡単なクエリを記述します。1 つは一括挿入用、もう 1 つは削除用です。

于 2011-05-21T09:20:03.393 に答える