Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[Решено] Удалить запись из таблицы


Recommended Posts

Подскажите как сделать удаление из таблицы записи о доп изображении если файл не существует. То есть мне надо чтобы в доп. изображениях небыло картинки "нет фото". Нужно именно удалить запись из таблицы.

Может не там искал, но правильный ход мысли или нет, не знаю. По идее надо где выбираем картинки из таблиц в catalog/model/catalog/product.php 

 

public function getProductImages($product_id) {
		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_image WHERE product_id = '" . (int)$product_id . "' ORDER BY sort_order ASC");

		return $query->rows;
	} 

добавить проверку на пустоту значения. Вообщем нужен совет и помощь.

Заранее спасибо за советы.

Надіслати
Поділитися на інших сайтах


в контроллере товара поставить заглушку надо (1.5.5.)

$this->data['images'] = array();

 

$results = $this->model_catalog_product->getProductImages($this->request->get['product_id']);

 

foreach ($results as $result) {

$this->data['images'][] = array(

'popup' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height')),

'thumb' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_additional_width'), $this->config->get('config_image_additional_height'))

);

}

Хотя в TPL файле есть условие вывода при переборе массива <?php if ($images) { ?>
Надіслати
Поділитися на інших сайтах

в контроллере товара проверка есть (1.5.5.)

А как оттуда удалить запись из таблицы?!
Какую именно запись ? если нет доп. изображения - нет и записи в таблице соотв.
Надіслати
Поділитися на інших сайтах

Какую именно запись ? если нет доп. изображения - нет и записи в таблице соотв.

В том то и дело что запись есть, но изображения при редактировании и проверки некоторые удаляются,а потом заливаются на сервер и чтобы не редактировать затем страницу товара нужно удалить запись из таблицы oc_product_image
Надіслати
Поділитися на інших сайтах


То есть мне надо чтобы в доп. изображениях небыло картинки "нет фото". Нужно именно удалить запись из таблицы.

 

в какой момент хотите удалять "пустые изображения" - при открытии карточки товара в каталоге или в админке (при открытии товара, добавлении нового, редактировании(сохранении) существующего)?

Надіслати
Поділитися на інших сайтах

То есть мне надо чтобы в доп. изображениях небыло картинки "нет фото". Нужно именно удалить запись из таблицы.

 

в какой момент хотите удалять "пустые изображения" - при открытии карточки товара в каталоге или в админке (при открытии товара, добавлении нового, редактировании(сохранении) существующего)?

Да наверно проще при открытии товара в каталоге.
Надіслати
Поділитися на інших сайтах


файл: /catalog/controller/product/product.php

 

foreach ($results as $result) {
  $this->data['images'][] = array('popup' => $this->model_tool_image->resize($result['image'],      $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height')),
'thumb' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_additional_width'), $this->config->get('config_image_additional_height'))	);
}	

 

заменяем на 
 

foreach ($results as $result) {
  if (!$this->imageExists($result)) continue;
  $this->data['images'][] = array('popup' => $this->model_tool_image->resize($result['image'],     $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height')),
					'thumb' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_additional_width'), $this->config->get('config_image_additional_height'))	);
}	

 

и добавляем функцию, например, перед public function review() {
 

private function imageExists($result){

  if (!file_exists(IMAGE.$result['image'])){
     $this->db->query("DELETE FROM " . DB_PREFIX . "product_image WHERE product_image_id=".(int)$result['product_image_id']);
     return '';
  }

  return $result;

}

Змінено користувачем sergiosinicin
  • +1 1
Надіслати
Поділитися на інших сайтах


файл: /catalog/controller/product/product.php

 

foreach ($results as $result) {
  $this->data['images'][] = array('popup' => $this->model_tool_image->resize($result['image'],      $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height')),
'thumb' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_additional_width'), $this->config->get('config_image_additional_height'))	);
}	

 

заменяем на 

 

foreach ($results as $result) {
  if (!$this->imageExists($result)) continue;
  $this->data['images'][] = array('popup' => $this->model_tool_image->resize($result['image'],     $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height')),
					'thumb' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_additional_width'), $this->config->get('config_image_additional_height'))	);
}	

 

и добавляем функцию, например, перед public function review() {

 

private function imageExists($result){

  if (!file_exists(IMAGE.$result['image'])){
     $this->db->query("DELETE " . DB_PREFIX . "product_image WHERE product_image_id=".(int)$result['product_image_id']);
     return '';
  }

  return $result;

}

При изменении не открывается страница товара.

Надіслати
Поділитися на інших сайтах


При изменении не открывается страница товара.

Поправил ошибку 

private function imageExists($result){
//DIR_IMAGE или IMAGE в зависимости от версии, смотреть файл config.php путь к картинкам вида /.../.../...
  if (!file_exists(DIR_IMAGE.$result['image'])){
     $this->db->query("DELETE FROM " . DB_PREFIX . "product_image WHERE product_image_id=".(int)$result['product_image_id']);
     return '';
  }

  return $result;

}
  • +1 1
Надіслати
Поділитися на інших сайтах


В том то и дело что запись есть, но изображения при редактировании и проверки некоторые удаляются,а потом заливаются на сервер и чтобы не редактировать затем страницу товара нужно удалить запись из таблицы oc_product_image

Да наверно проще при открытии товара в каталоге.

Предположу, что после проверки и удаления части картинок, перед заливкой на сервер папка с изображениями на сервере удаляется, затем на её место заливается почищенная папка.

Процесс более-менее объёмный обычно. И за эти несколько минут или десятков минут вполне может нагрянуть бот поисковика и запросить эдак пару тысяч страниц. А папка с картинками, напомню, пустая (или частично залитая). Неплохо так база почистится. От картинок, которые должны быть, но просто не успели в этот момент закачаться и отсутствовали во время запросов.

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.