Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПвБД_Курсовик_ОрищенкоТС.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
895.63 Кб
Скачать

Редактирование категории

Редактирование категории происходит в методе 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. Контроллер определяет следующие действия:

Действие

Метод

Вывод списка альбомов

index

Отображение списка альбомов в категории

category

Отображение альбомов конкретного пользователя

user

Добавление альбома

add

Изменение альбома

edit

Удаление альбома

delete

Структура контроллера 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;

}