| Индекс материала |
|---|
| Создаем компонент «Моя доска объявлений» - II |
| Учимся делать запросы в БД |
| Реакция на нажатие кнопок |
| Оптимизация кода |
| Редактирование сообщений |
| Все страницы |
Шаг десятый. Редактирование сообщений в панели администратора.
Для того чтобы реализовать редактирование сообщения нам нужно написать функцию, которая получив в качестве параметра идентификатор сообщения отобразит форму с полем: объявление. В форме уже присутствует текст сообщения. Пользователю остается ввести другой текст или отредактировать существующий и сохранить сообщение.
Для начала я напомню, что идентификатор сообщения у нас передается в массив $cid. Да, да именно в массив (ведь пользователь может выбрать и несколько сообщений). Так как отредактировать физически мы можем только одно сообщения (ну по крайней мере одновременно 2 и больше я не умею редактировать), то передавать в функцию будем не весь массив а только первый его элемент ($cid[0]).
Сначала напишем пустую функцию и вставим ее вызов (edit_mess($cid[0]);) в место строчки:
echo 'Редактирование сообщения';
Функция:
function edit_mess($id_mess){}
Начнем:
1.Не забываем описать глобальную переменную $database
global $database;
2.Далее нужно запросить данные из базы данных. Нужно взять значение поля message той записи у которой значение поля id_message равно $id_mess. Следующие инструкции выполнят поставленную задачу:
//Пишем запрос $query = "SELECT message FROM mdo_message WHERE id_message=".$id_mess; //Устанавливаем значение свойства query объекта $database $database->setQuery($query); //Выполняем запрос и помещаем результат в переменную $message = $database->loadResult();
3.Показываем поле <textarea>, с текстом $message:
Объявление<br> <textarea cols="50" rows="6" name="message" style="width: 500px"><?php echo($message); ?></textarea>
4.Для того, чтобы после нажатия на кнопку Сохранить скрипт передал дальше значение $id_mess нужно вставить поле скрытого типа (hidden):
<input type="hidden" name="id_mess" value="<?php echo($id_mess); ?>">}
В результате получается:
function edit_mess($id_mess) { global $database; $query = "SELECT message FROM mdo_message WHERE id_message=".$id_mess; $database->setQuery($query); $message = $database->loadResult(); ?> Объявление<br> <textarea cols="50" rows="6" name="message" style="width: 500px"><?php echo($message); ?></textarea> <input type="hidden" name="id_mess" value="<?php echo($id_mess); ?>"> <?php }
После того как пользователь отредактировал объявление нужно его сохранить, для этого напишем соответствующую функцию (save_mess();). Данная функция не будет иметь параметров, потому что единственный параметр который мы передаем это id_mess. Мы его можем с помощью функции mosGetParam взять прямо в теле функции. Хотя конечно на вкус и цвет…. Можно в начале файла получить значение id_mess и использовать функцию с параметром:
function save_mess() { global $database; $id_mess = intval( mosGetParam( $_REQUEST, 'id_mess', 0 ) ); $message = mosGetParam( $_REQUEST, 'message', '' ); if (($id_mess<>0) and ($message<>'')) { $query = "UPDATE mdo_message SET message='".$message."' WHERE id_message=".$id_mess; $database->setQuery($query); if ($database->query()) { echo("<br>Обновление записи успешно<br>"); } else { echo("<br>Ошибка баз данных!<br>"); } } else { echo("<br>Ошибка! Попробуйте еще раз!<br>"); } }
Вызов функции вставляем вместо строчки:
echo 'Сохраниение сообщения';
В итоге мы закончили с панелью администратора, в следующем шаге начнем реализовывать лицевую часть компонента.
Оригинал статьи - Создай компонент Joomla свлими руками
© 2008 Created by Dapmoed
| < Предыдущая | Следующая > |
|---|
Комментарии
Коммент от
Июл 11, 2009Комментатор
Alika- Создание пустых файлов
- Редактирование файла myboard.xml
- Панель управления компонентом
- Все страницы
Не, ну я так не играю
система ругается и говорит, что нету-ть продолжения у статей. Может лучшн не разбивать их на страницы, а выложить просто разными частями?
Коммент от
Июл 12, 2009Комментатор
Aleks_El_DiaКоммент от
Июл 12, 2009Комментатор
AlikaRSS лента комментариев этой записи