Перейти к содержимому


Загрузка одного изображения для нескольких товаров


  • Вы не можете ответить в тему
Сообщений в теме: 6

#1 wirty

    Новичок

  • Assistent vsupport.club
  • Pip
  • 7 сообщений
Репутация: 0
Начинающий

Отправлено 12 February 2015 - 05:51 PM

Появилась задача загружать одну картинку для нескольких товаров. Делаю это в категории.
В файле шаблона админки catalog_products_categories.tpl.html добавляю следующее:
	<h3>Добавить фотографию к отмеченным товарам</h3>
	<input type="file" name="imgFile" />
	<a href="#" onclick="document.getElementById('add_command').value='imageImport'; document.getElementById('form').submit(); return false">Добавить</a>

Далее, в catalog_products_categories.php добавляю следющее:
if ( isset($val["checkbox_products_id"]) )
  {
...
...
...
elseif ($_POST["add_command"]=="imageImport") {
	   $prodID = (int)$key;
	   $img = $_POST["imgFile"];
	   AddNewPictures($prodID, $img, $img, $img, -1);
   }
}

Функция AddNewPictures(), как я понимаю, отвечает за добавление изображения. Но не работает, ошибок нет ни в админке, ни в error.log
Не могу понять, почему не добавляется изображение.
  • 0

#2 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 12 February 2015 - 07:43 PM

Не могу понять, почему не добавляется изображение.

Не выполняется условие

if ( isset($_POST["add_command"]) && ($_POST["add_command"]=="prod_off" || $_POST["add_command"]=="prod_on" || $_POST["add_command"]=="prod_dell" || $_POST["add_command"]=="prod_move") )

  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#3 wirty

    Новичок

  • Assistent vsupport.club
  • Pip
  • 7 сообщений
Репутация: 0
Начинающий

Отправлено 12 February 2015 - 08:41 PM

Не могу понять, почему не добавляется изображение.

Не выполняется условие

if ( isset($_POST["add_command"]) && ($_POST["add_command"]=="prod_off" || $_POST["add_command"]=="prod_on" || $_POST["add_command"]=="prod_dell" || $_POST["add_command"]=="prod_move") )


Выполняется, просто не написал:
isset($_POST["add_command"]) && ($_POST["add_command"]=="prod_off" || $_POST["add_command"]=="prod_on" || $_POST["add_command"]=="prod_dell" || $_POST["add_command"]=="prod_move" || $_POST["add_command"]=="cat_app" || $_POST["add_command"]=="add_options" || $_POST["add_command"]=="imageImport")
Если в функции добавления изображения нарочно не указывать файл изображения, в статистике ошибок появится error, то бишь все условия соблюдаются, в функцию передаются данные.
  • 0

#4 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 12 February 2015 - 09:18 PM

Выполняется, просто не написал:

Тогда еще что-нибудь не выполняется. Например, необходимость дописать в <form..> строку enctype="multipart/form-data" (если я правильно помню), которая нужна для загрузки файлов. Или еще что-то, сложно рассуждать не видя исходников (не надо их выкладывать целиком, все равно смотреть не буду).

По любому вот тех двух кусочков кода недостаточно. Мне, что естественно, лень вникать в Ваши кодовые задачи, но я прекрасно помню свои потуги по загрузке файла. Они куда более развесисты по коду. Подчеркну - не вникал в Ваш код.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#5 wirty

    Новичок

  • Assistent vsupport.club
  • Pip
  • 7 сообщений
Репутация: 0
Начинающий

Отправлено 12 February 2015 - 10:50 PM

Выполняется, просто не написал:

Тогда еще что-нибудь не выполняется. Например, необходимость дописать в <form..> строку enctype="multipart/form-data" (если я правильно помню), которая нужна для загрузки файлов. Или еще что-то, сложно рассуждать не видя исходников (не надо их выкладывать целиком, все равно смотреть не буду).

По любому вот тех двух кусочков кода недостаточно. Мне, что естественно, лень вникать в Ваши кодовые задачи, но я прекрасно помню свои потуги по загрузке файла. Они куда более развесисты по коду. Подчеркну - не вникал в Ваш код.

enctype дописан, не собирался, ни в коем случае, перекладывать задачи на ваши плечи, просто, видимо, опыт не позволяет отследить ошибку. Сделаю через аякс и отдельным файлом с функцией.
Спасибо за помощь.
  • 0

#6 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 13 February 2015 - 02:39 PM

Функция AddNewPictures(), как я понимаю, отвечает за добавление изображения. Но не работает,

Глянул повнимательнее. Все работает.
Просто Вы не то в функцию передаете :).
Во-первых, при <input type=''file" name="xxxx"> элемента $_POST['xxxx'] не будет, а будет элемент $_FILES['xxxx'].
Во-вторых, передавать в функцию надо не значение, а имя элемента массива $_FILES, т.е.

$img = $_POST["imgFile"];

надо заменить на

$img = "imgFile";

при этом все равно получится только small-картинка, но это потому, что первая же обработка загруженной картинки удаляет ее из /tmp, т.е. картинку для medium и large после этого неоткуда брать. Этот момент надо как-то отработать. Либо поставить модуль, где грузится одна картинка сразу в три места, там это уже исправлено.
  • 1
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#7 wirty

    Новичок

  • Assistent vsupport.club
  • Pip
  • 7 сообщений
Репутация: 0
Начинающий

Отправлено 17 February 2015 - 06:31 PM

Действительно, именно в этом все заключалось. Спасибо за помощь!
  • 0