Просмотр категорий пользователя
Метод user принимает идентификатор пользователя, категории которого необходимо просмотреть. Затем согласно номеру пользователя выбираются категории, им созданные. Это осуществляется вызовом метода модели categories_model – get_categories: /** * Получение списка категорий */ public function get_categories( $where, $limit = 999, $offset = 0 ) { $categories = CATEGORIES_TABLE; $albums = ALBUMS_TABLE;
$this->db ->select(" C.id, C.user_id, C.title, C.date, COUNT( A.id ) AS count_of_albums") ->from("$categories C") ->join("$albums A", "A.category_id = C.id", "LEFT") ->group_by("C.id, C.user_id, C.title, C.date") ->having($where);
$res = $this->db->get();
return $res->result_array(); } Внешний вид страницы категорий: Рисунок 16 либо, если это категории текущего пользователя: Рисунок 17
Добавление новой категории За добавление категории отвечает метод add. Он загружает форму добавления и заносит запись в базу данных: Рисунок 18 и сообщение: Код обработчика добавления категории: /** * Добавление новой категории */ public function add() { // Принимаем данные формы if ( $this->input->post("submit") ) { // Определяем правила проверки
// Устанавливаем правила
// Проверяем данные формы if ( $this->form_validation->run() == true ) { // Данные корректны, принимаем их $category['user_id']= $this->user['id']; $category['title'] = $this->input->post('title'); $category['date'] = date('Y-m-d H:i:s');
if ( $id = $this->db_model->insert(CATEGORIES_TABLE, $category) ) { $this->setMessage( "Категория <b>{$category['title']}</b> успешно создана", "albums/category/$id" ); } else $this->setError("Произошла ошибка при добавлении категории"); } } // Загружаем вид $this->load->view('view', $this->data); } Редактирование категории Редактирование категории происходит в методе edit и имеет аналогичную добавлению структуру, за исключением того, что данные после проверки не добавляются, а обновляются. Внешний вид редактирования категории: Рисунок 19 и, если обновление произошло успешно: Удаление категории Удаление категории производится методом delete, в который передается номер удаляемой категории. Для удаления необходимо перейти по соответствующей ссылке: Рисунок 20 Обработчик удаления проверяет авторство категории, е, если текущий пользователь является автором удаляемой категории, то удаляет ее: Листинг удаления категории: /** * Удаление категории */ public function delete( $category_id ) {
$category = $this->categories_model->get_category($category_id);
if ( !$category ) { $this->setError( "Категория не найдена", "categories/user/" . $this->user['id'] ); }
if ( $this->user['id'] != $category['user_id'] ) { $this->setError( "Вы не можете удалять чужие категории", "categories/user/" . $this->user['id'] ); }
if ( $this->db_model->delete(CATEGORIES_TABLE, array('id'=>$category_id)) ) { $this->setMessage( "Категория <b>{$category['title']}</b> успешно удалена" ); } else { $this->setMessage( "Категория <b>{$category['title']}</b> не удалена" ); } redirect("categories/user/" . $this->user['id']); }
Альбомы Альбомы по структуре приложения создаются пользователями в определенной категории. Поведение альбомов определяется контроллером albums, а запросы на выборку из БД описаны в модели albums_model. Контроллер определяет следующие действия:
Структура контроллера albums: <?php /** * Контроллер альбомов */ class Albums extends MY_Controller { /** * Количество альбомов на странице */ private $_albums_per_page = 10;
public function __construct() { parent::__construct(); }
/** * Вывод списка альбомов */ public function index( $page = 1 ) {}
/** * Отображение списка альбомов в категории */ public function category( $category_id ) {}
/** * Отображение альбомов конкретного пользователя */ public function user( $user_id ) {}
/** * Добавление альбома */ public function add( $category_id = null ) {}
/** * Изменение альбома */ public function edit( $album_id ) {}
/** * Удаление альбома */ public function delete( $album_id ) {} } Вывод списка альбомов Вывод списка альбомов происходит через вызов метода index, который вызывается по умолчанию при переходе на страницу /albums. Он принимает страницу, и, исходя из ее значения, отображает постранично список альбомов всех пользователей: Рисунок 21 Выборка производится методом get_albums в модели albums_model со следующим листингом: public function get_albums( $where = array(), $limit = 999, $offset = 0 ) { $albums = ALBUMS_TABLE; $photos = PHOTOS_TABLE; $categories = CATEGORIES_TABLE;
$res = $this->db ->select(" A.*, C.title AS category_title, COUNT(P.id) AS count_of_photos") ->from("$albums A") ->join("$categories C", "A.category_id = C.id", 'LEFT') ->join("$photos P", "P.album_id = A.id", 'LEFT') ->group_by("A.id") ->having($where) ->order_by("count_of_photos DESC") ->limit($limit, $offset) ->get() ->result_array(); return $res; }
Популярное: Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней... Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас... Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы... Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (705)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |