tag - Cómo guardar etiquetas/palabras clave de la matriz a la base de datos con php?
tags input js (1)
Propongo seleccionar las etiquetas actuales y luego puedes:
$tags_to_add = array_diff($new, $old);
$tags_to_remove = array_diff($old, $new);
Después de eso, escribe 2 consultas triviales: una para insertar de forma masiva y otra para eliminar.
Vi esta pregunta: ¿cómo guardar etiquetas (palabras clave) en la base de datos?
Buena respuesta sobre cómo debería estructurarse la base de datos. ¿Pero de qué manera es mejor hacer el proceso de ahorro en php? Un proceso que maneja tanto la adición como la eliminación.
Las palabras clave se publican como una matriz.
Editar: el código actual se ve así:
<?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());
}
?>