Всем привет! Вопрос довольно избитый, но все же, нужно реализовать загрузку фото в каталог на сервере с записью названия в БД. Оговорюсь сразу,в PHP не силён, так что сильно не ругайте. Есть модель (models/item.php) в которую изначально вставил код для сохранения фото PHP: protected function prepareTable($table){ if (isset($table->images) && is_array($table->images)){ $registry = new Registry; $registry->loadArray($table->images); $table->images = (string)$registry; } } Так как код взял с админки, где для загрузки использовался type="media", поменял на type="file" и подправил филд в форме .xml PHP: <fields name="images"> <field name="file" type="file" label="COM_ZAKUPKA_ITEM_IMG" description="" accept="image/jpeg,image/png,image/gif" /> </fields> Добавил в форму где выводятся все филдсеты enctype="multipart/form-data" PHP: <form action="index.php?option=com_zakupka&layout=edit&id=<?php echo $this->item->id?>" method="POST" enctype="multipart/form-data" id="adminForm" name="adminForm" class="form-validate"> <input type="hidden" name="task" value=""> <div class="form-horizontal"> <?php foreach($this->form->getFieldsets() as $name => $fieldset) :/?> <fieldset class="adminForm"> <legend><?php echo JText::_($fieldset->label);?></legend> <div class="row-fluid"> <div class="span6"> <?php foreach($this->form->getFieldset($name) as $field) :?> <div class="control-group"> <div class="control-label"><?php echo $field->label;?></div> <div class="controls"><?php echo $field->input;?></div> </div> <?php endforeach;?> </div> </div> </fieldset> <?php endforeach;?> </div> <?php echo JHtml::_('form.token'); ?></form> Нашел код который проверил в index.php, как в песочнице, на работоспособность. PHP: <form method="post" enctype="multipart/form-data"><input type="file" name="file" /><input type="submit" name="upload" value="Загрузить" /></form><?phpif(isset($_POST['upload'])) {if(empty($_FILES['file']['size'])) die('Вы не выбрали файл');if($_FILES['file']['size'] > (5 * 1024 * 1024)) die('Размер файла не должен превышать 5Мб');$imageinfo = getimagesize($_FILES['file']['tmp_name']);$upload_dir = 'uploads/'; //имя папки с картинками$name = $upload_dir.date('YmdHis').basename($_FILES['file']['name']);$mov = move_uploaded_file($_FILES['file']['tmp_name'],$name); if($mov) {//здесь коннект к БД$name = htmlentities(stripslashes(strip_tags(trim($name))),ENT_QUOTES,'UTF-8');//если mysql - здесь еще mysql_real_escape_string обработай, mysqli - mysqli_real_escape_string,PDO - quote$query = "INSERT INTO `shop_zakupka`(`images`) VALUES('$name')";//выполняешь запрос, если все ок - то выводишь "поздравления" если все плохо - выводишь ошибку//здесь запрос } else echo 'Произошла ошибка при загрузке фотографии. Пожалуйста, попробуйте снова';}?> Сохранение фото идёт, но в БД не записывает, немного покопавшись понял, что для записи в базу мало обращения только к одному столбцу в таблице, пытался прикрутить его к модели на место старого но не могу найти какую функцию необходимо использовать. Да, название БД - `shop_zakupka`, столбец - `images` И ещё вопрос, будет ли идти сохранение через кнопки из общего представления view.html.php PHP: <div class="formelm-buttons"> <button type="button" onclick="Joomla.submitbutton('item.save')"> <?php echo JText::_('JSAVE') ?> </button> <button type="button" onclick="Joomla.submitbutton('item.cancel')"> <?php echo JText::_('JCANCEL') ?> </button> </div> так как <input type="submit" name="upload" value="Загрузить" /> из формы выше конечно прийдется убрать. За ранее спасибо всем кто откликнется, уже несколько дней не могу решить эту головоломку.
вы пытаетесь скрестить ужа с ежом? потому что в начале у вас код от какого-то движка, а потом самописный кусок. Так вы определитесь если это джумла, то зачем вообще что-то писать новое? Для джумлы хватает плагинов.
Вся проблема в том что я пытаюсь написать компонент под свои нужды (как бы несуразно это не звучало с моими то знаниями PHP), функционал у него минимальный, сохранение данных от пользователя и вывод этих данных в админке, а "код от какого-то движка" это из такого же файла, только из админки models/item.php где формируется страница с помощью родительского контроллера JModelAdmin (подсмотрел создание компонента у одного автора), что характерно, код реально работает, но лишь записывает имя фото в указанную БД и при выводе на странице ссылается на корневой каталог. --- Добавлено, 24 май 2020 --- Также не совсем понимаю как встроить сторонний плагин в связку загрузки фото в каталог а названия в БД --- Добавлено, 24 май 2020 --- Готов заплатить за решение данного функционала