Как сохранить теги/ключевые слова из массива в базу данных с помощью PHP?
Я видел этот вопрос: Как сохранить теги(ключевые слова) в базу данных?
хороший ответ на то, как должна быть структурирована база данных. Но какой способ лучше всего сделать процесс сохранения в php? Процесс, который обрабатывает как добавление, так и удаление.
ключевые слова разносятся как массив.
Edit: Текущий код выглядит так:
<?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());
}
?>
1 ответов
Я предлагаю выбрать текущие теги и после этого вы можете сделать:
$tags_to_add = array_diff($new, $old);
$tags_to_remove = array_diff($old, $new);
после этого вы пишете 2 тривиальных запроса: один для массовой вставки и один для удаления.