Kors Опубликовано 23 августа, 2016 Жалоба Поделиться Опубликовано 23 августа, 2016 Понадобилось немного поработать с картинками при обмене с 1С. Вот код для записи картинок при обновлении товара: // Обновляем изображение товара if(isset($xml_product->Картинка)) { foreach($xml_product->Картинка as $img) { $image = basename($img); if(!empty($image) && is_file($dir.$image) && is_writable($simpla->config->original_images_dir)) { $simpla->db->query('SELECT id FROM __images WHERE product_id=? ORDER BY position LIMIT 1', $product_id); $img_id = $simpla->db->result('id'); if(!empty($img_id)) $simpla->products->delete_image($img_id); rename($dir.$image, $simpla->config->original_images_dir.$image); $simpla->products->add_image($product_id, $image); } } } Видно, что в цикле перебираются поступающие картинки.Что будет, если текущие картинки товара (в порядке возрастания position) 1.jpg, 2.jpg, 3.jpg, а загружаются одна картинка 3.jpg ? 1. При первом (и единственном) шаге цикла удалится картинка 1.jpg и запишется новая картинка 3.jpg (поверх старой) - список станет 2.jpg, 3.jpg. В итоге имеем полное безобразие. В более сложных случаях, результаты могут быть, естественно, еще хуже и менее предсказуемы. Таким образом, имеем непредсказуемую пропажу картинок. Результаты работы стандартного скрипта не лезут ни в какие ворота... Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.