Всем привет!
При редактировании статьи, скрипт ждет от пользователя название изображений в массиве
$_POST['old_images']
, если он их загрузил только что и они лежат в папке temp. Или id изображений в массиве
$_POST['new_images']
, если он загружал их ранее когда создавал статью.
Пользователь мог в браузере удалить одно или несколько старых изображений вместе со скрытыми input-ами, поэтому массив
$_POST['old_images']
может и вовсе не прилететь.
Далее я беру все id старых изображений из базы и помощью функции
array_diff()
сравниваю их с теми, которые прилетели в
$_POST['old_images']
В результате получаю массив с ID картинок, которые раньше были, а сейчас их нет, поэтому удаляю их из базы и сервера.
Правильный ли это подход? Для наглядности оставлю код (без проверок и прочей фигни).
$res = $db->query("SELECT `id` FROM `images` WHERE `mode` = 'news' AND `user_id` = {$user_id} AND `mode_id` = {$news_id}");
while($row = $res->fetch_assoc()){
$db_images[] = $row['id'];
}
$delete_images = array_diff($db_images, (array)$data['old_images']));
DeleteImages($delete_images); // удаляет картинки