
- •Хранилище фотоальбомов
- •Введение
- •Постановка задачи
- •Описание инструментов субд
- •Язык программирования
- •Структура базы данных Диаграмма
- •Описание таблиц
- •Структура web-приложения Определение основных страниц
- •Определение реализации страниц
- •Контроллеры
- •Просмотр списка пользователей
- •Просмотр профиля пользователя
- •Вход пользователя в систему
- •Выход пользователя из системы
- •Регистрация нового пользователя
- •Редактирование профиля
- •Удаление профиля
- •Восстановление пароля
- •Категории
- •Просмотр категорий пользователя
- •Добавление новой категории
- •Редактирование категории
- •Удаление категории
- •Альбомы
- •Вывод списка альбомов
- •Отображение списка альбомов в категории
- •Отображение альбомов конкретного пользователя
- •Добавление альбома
- •Изменение альбома
- •Удаление альбома
- •Фотографии
- •Вывод списка фотографий
- •Вывод списка фотографий в альбоме
- •Вывод списка фотографий пользователя
- •Просмотр фотографии
- •Добавление фотографии
- •Редактирование фотографии
- •Удаление фотографии
- •Поиск фотографии
- •Комментарии
- •Добавление комментариев
- •Просмотр комментариев
- •Оценивание фотографии
- •Просмотр средней оценки
- •Просмотр друзей пользователя
- •Добавление в друзья
- •Запросы в мои друзья
- •Принятие заявки
- •Отклонение заявки
- •Просмотр отправленных мной заявок
- •Удаление пользователя из списка друзей
- •Сообщения
- •Отправка сообщения
- •Просмотр списка диалогов
- •Просмотр диалога
- •Заключение
Категории
Категории управляются классом-контроллером categories, который имеет следующие функции, представленные методами:
Действие |
Метод |
Просмотр категорий пользователя |
user |
Добавление новой категории |
add |
Редактирование категории |
edit |
Удаление категории |
delete |
Для манипулирования данными в БД используется модель categories_model, содержащая несколько специфических методов для категорий.
Структура контроллера categories
<?php
/**
* Контроллер категорий
*/
class Categories extends MY_Controller
{
/**
* Количество категорий на странице
*/
private $_categories_per_page = 2;
public function __construct()
{
parent::__construct();
}
/**
* Вывод списка категорий определенного пользователя
*/
public function user( $user_id, $page = 1 ) {}
/**
* Добавление новой категории
*/
public function add() {}
/**
* Редактирование категории
*/
public function edit( $category_id ) {}
/**
* Удаление категории
*/
public function delete( $category_id ) {}
}
Просмотр категорий пользователя
Метод 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);
}