Изменение и удаление данных из базы данных

Автор: Илья Остапенко /

Сегодняшний пост, как вы уже поняли, будет о изменение и удаление данных из базы данных, через админку компонента. А для того чтобы изменять в нем данные, их надо сначала добавить, поэтому обязательно прочитайте урок добавление данных в базу данных. Нового кода будет не много, так же как и новой информации.

изменение данных в базе даных

Хорошо это или плохо решать вам самим. Кстати, курс по созданию компонента подходит к завершению, это не, значит, что я больше ничего не буду писать о создании компонента, писать буду, но не так часто. Ладно, хватит лирики, переходим к делу.

 

Добавляем кнопку редактирования

Для начала нам необходимо открыть файл управления данными(view.html.php) видаcreate и между двумя фигурными скобками, добавить следующий код:

Мы создали функцию $tpl, которая будет открывать доступ для редактирования  конкретной записи в таблице. Давайте я, подробно опишу код.

Переменной $row инстанцировали объект нашей таблицы lesson. Тем самым получили доступ ко всем полям нашей таблицы.

Переменной $cid присваиваем массив ID всех записей в таблице.

Переменной $id присваивается ID выбранной записи. Иначе говоря, он становиться первым элементом массива и передается переменной.

Создаем условие: если выбрана запись тогда из таблицы передаются данные. Иначе говоря загружаются все поля выбранного ID.

Теперь давайте отредактируем файл отображения данных(default.php) чтобы уже не возвращаться к этому виду.  Обновленный файл будет выглядеть так:

Тут изменений немного, сейчас я вам их опишу.

То, что здесь дважды повторяется команда <?php echo $this->row->text; ?> это не ошибка, так и должно быть. Дело в том, что тег <textarea> в отличие от тега <input>может только отправлять данные в базу данных, а принимать данные из базы данных для редактирования не может. Поэтому между тегами <textarea> я повторил команду <?phpecho $this->row->text; ?> , которая позволяет принимать данные из базы данных, для редактирования. У вас может появиться вопрос, а почему бы не заменить  <textarea> на<input>, тут опять же маленькая запарка. Тег <input> можно отобразить только одной строкой, его нельзя отобразить в несколько строк. Конечно, если вы хотите, можете заменить <textarea> на <input>, тут дело вкуса. Лично я считаю, что поле задания должно быть большим, так как задание тоже может быть большим, и в маленьком поле его будет неудобно редактировать ил писать.

Эти два скрытых поля передают значения ID и название компонента.

Вид create нужен для создания и редактирования информации из базы данных. В нем все функции мы успешно прописали. Теперь нам нужно изменить вид lesson, в который мы попадаем при первом запуске компонента, а, следовательно, из него будет переход в видcreate. В виде lesson нам нужно изменить только файл отображения данных, а, следовательно, переходим в папку views/lesson/tmpl и редактируем файл default.php. новый код файла будет выглядеть так:

Тут изменений произошло немного больше. Давайте их расмотрим.

Добавлена кнопка редактирования записи.

Добавляем, в пустую ячейку для чекбоксов. Можете в принципе написать между тегами что хотите, дело ваше.

Тут используя специальный тип grid (который относится к JHTML)? который позволит отобразить чекбокс для каждой записи.

Переменной $link присваиваем ссылку  номер выбранного ID на созданный массив в файле управления данными вида create.

Ячейка для  вывода чекбокса, напротив записи.

Залинковываем название предмета, то есть при нажатии на название откроется форма редактирования данных. Как видите, ссылка на форму редактирования берется из переменной $link, которую я описал выше.

Данное скрытое поле позволяет кнопкам взаимодействовать с чекбоксами.

Вот в принципе и все, осталось отредактировать контроллер и добавить в него функцию редактирования. В принципе, функция редактирования будет почти идентична функции создания, только теперь нам надо, чтобы отображались уже существующие данные. Поэтому открываем файл контроллера controller.php и добавляем в него следующий код:

Данный код  я описывал при добавлении функции add в уроке добавление данных в базу данных. Теперь наш компонент способен на изменение данных из базы данных.

 

Добавляем кнопку удаления

С удалением все будет проще. Для начала следует добавить вот эту строчкуJToolBarHelper::deleteList(JText::_('Вы уверены?')); в файл default.php вида lesson,сразу после добавления кнопки редактировать. Фраза «Вы уверены?» будет появляться, когда вы выберите записи и нажмете на кнопку «удалить».

Теперь давайте настроим функции удаления записи. Для начала напишем метод удаления данных в контроллере.

Сейчас я все вам объясню, хотя эта функция почти идентична созданию записи. Сейчас я все объясню.

Создаем функцию remove которая по умолчанию привязана к кнопке deleteList.

Далее вызываем модель lesson, в которой будет происходить функция удаления.

Дальше идет условие, если функция remove() в модели прошла успешно тогда в переменную $message записывается фраза «Удаление прошло успешно» иначе запишется  фраза «Удаление невозможно», а так же в переменную $messageпередастся ошибка из модели.

Далее идет перенаправление на главную страничку компонента и вывод переменной$message.

С контроллером мы закончили теперь давайте перейдем к функциям, которые будут выполняться в модели. Открываем модель, которая находиться в папке models/lesson.phpи добавляем следующий код:

Так ну и как обычно приступаю к описанию кода.

Создаем функцию remove() которая будет вызываться из контроллера.

Соединяемся с таблицей нашего компонента.

Получаем массив, который состоит из всех выбранных ID записей, которые нужно удалить.

Далее идет условие, которое будет проходить по массиву и удалять записи методом  delete()объекта JTable. Если произойдет какая-либо ошибка, то в контроллер отправиться ошибка из модели.

Ну, вот и все! Теперь наш компонент способен на удаление данных. Как видите, ничего сложного в этом нет, все доступно для понимая даже новичку! Ну а если вы попали на эту статью из поисковой системы или с другого сайта, тогда советую прочитать серю статей с самого начала, а именно с урока "Как устроен компонент Joomla".

Надеюсь, вам понравилась статья, и вы поставите лайк! А если вы поставите лайк, просто, по доброте душевной буду ещё больше вам признателен.  Обновленные файлы админки компонента можете скачать в приложении, оно находиться сразу под тегами. Найдете ошибки или появятся вопросы, пишите их в комментариях к этому посту.

Скачать файлы компонента можно по ссылке ниже
com_lesson_4

Комментарии к записи

Оставить комментарий

Это не спам.