Файл: Разработка WEB-ресурса по обмену книгами «BookTrade.org».pdf
Добавлен: 25.04.2023
Просмотров: 323
Скачиваний: 2
3. Описание структуры базы данных
Подключение к базе данных осуществляется с использованием расширения драйвера реляционных баз данных, используемого в PHP, MySQLi. Для упрощения работы с СУБД, а также упрощения возможного перехода на другой сервер, в отдельный подключаемый файл connect.php были прописаны переменные, содержащие данные для подключения к базе данных, а также прописана кодировка UTF8. Все последующие модули включают в себя данный файл и, как следствие, отсутствует необходимость в каждом файле прописывать подключение к СУБД, выбор конкретной БД и кодировку для обращения к СУБД. Также при разработке модуля личных сообщений было использовано расширение PHP Data Object (PDO). Код, прописанный в файле connect.php, при разработке веб-ресурса на домашнем компьютере показан на рисунке 2.
Рисунок 2
Структура разработанной базы данных показана на рисунке 3 в виде ER-модели.
Таблица ‘users’ (структура отображена в таблице 3) используется для регистрации и аутентификации пользователя. В нее заносится логин, электронная почта и пароль пользователя при регистрации. Таблица ‘user_info’ (таблица 4) содержит второстепенную информацию о пользователе, в обязательном порядке при регистрации пользователем заполняется только поля, содержащие логин пользователя, при желании также заполняются остальные поля либо во время регистрации, либо после; также при определенных действиях пользователя (начало и конец сессии) изменяются поля, содержащие информацию об онлайне и дате последней активности пользователя.
Рисунок 3
Таблица 3
|
Столбец |
Тип |
Атрибуты |
Назначение |
|
id |
int(11) |
AUTO_INCREMENT PRIMARY_KEY |
Идентификационный номер пользователя |
|
username |
varchar(255) |
INDEX UNIQUE NOT_NULL |
Имя (логин) пользователя |
|
|
varchar(255) |
NOT_NULL |
Электронная почта пользователя |
|
password |
varchar(255) |
NOT_NULL |
Пароль пользователя |
|
rights |
int(1) |
NULL |
Определяет права пользователя (при регистрации заполняется как 1, при бане – 0, для администраторов – 2) |
Таблица 4
|
Столбец |
Тип |
Атрибуты |
Назначение |
|
username |
varchar(255) |
INDEX NOT_NULL |
Имя (логин) пользователя |
|
fullname |
varchar(255) |
NULL |
Полное имя пользователя |
|
age |
int(3) |
NULL |
Возраст пользователя |
|
location |
varchar(255) |
NULL |
Место жительства пользователя |
|
userinfo |
varchar(255) |
NULL |
Информация о пользователе |
|
active |
int(1) |
NULL |
Онлайн пользователя (1 – онлайн, 0 – оффлайн) |
|
active_date |
timestamp |
Отметка о дате и времени последней активности |
Таблица ‘messages’ (таблица 5) содержит имена отправителя и получателя. Имя отправителя берется из сессии и автоматически заполняется при отправке пользователем сообщения, имя получателя вводится пользователем вручную. Также таблица содержит данные о том, прочитано сообщение или нет, что использовано при отображении списка входящих сообщений в пользовательском интерфейсе.
Таблица 5
|
Столбец |
Тип |
Атрибуты |
Назначение |
|
m_id |
int(11) |
AUTO_INCREMENT PRIMARY_KEY |
Идентификационный номер сообщения |
|
data |
timestamp |
Дата отправки сообщения |
|
|
u_from |
varchar(255) |
NOT_NULL |
От кого |
|
u_to |
varchar(255) |
NOT_NULL |
Кому |
|
message |
text |
NOT_NULL |
Текст сообщения |
|
flag |
int(11) |
NOT_NULL |
Отметка о прочтении сообщения |
Таблица ‘books’ (таблица 6) является своего рода библиотекой веб-ресурса и содержит в себе названия, авторов и жанры книг.
Таблица 5
|
Столбец |
Тип |
Атрибуты |
Назначение |
|
book_id |
int(11) |
AUTO_INCREMENT PRIMARY_KEY |
Идентификационный номер книги |
|
bookname |
varchar(255) |
INDEX NOT_NULL |
Название книги |
|
author |
varchar(255) |
NOT_NULL |
Автор книги |
|
genre |
varchar(255) |
NOT_NULL |
Жанры книги |
Таблица ‘quotes’ (таблица 7) является сборником цитат и содержит текст цитаты и название книги, из которых взята эта цитата.
Таблица 7
|
Столбец |
Тип |
Атрибуты |
Назначение |
|
quote_id |
int(11) |
AUTO_INCREMENT PRIMARY_KEY |
Идентификационный номер цитаты |
|
bookname |
varchar(255) |
INDEX NOT_NULL |
Название книги |
|
quote_text |
text |
NOT_NULL |
Текст цитаты |
Таблица ‘readed’ (таблица 8) предназначена для составления персональных библиотек пользователей и содержит имя пользователя, название и автора книги, дату добавления.
Таблица 8
|
Столбец |
Тип |
Атрибуты |
Назначение |
|
r_id |
int(11) |
AUTO_INCREMENT PRIMARY_KEY |
Идентификационный номер прочитанной книги |
|
username |
varchar(255) |
INDEX NOT_NULL |
Имя пользователя |
|
bookname |
varchar(255) |
INDEX NOT_NULL |
Название книги |
|
author |
varchar(255) |
NOT_NULL |
Автор книги |
|
date |
timestamp |
Дата добавления |
Таблица ‘w_read’ (таблица 9) предназначена для составления персональных пожеланий пользователя и содержит имя пользователя, название и автора книги.
Таблица 9
|
Столбец |
Тип |
Атрибуты |
Назначение |
|
wr_id |
int(11) |
AUTO_INCREMENT PRIMARY_KEY |
Идентификационный номер желаемой книги |
|
username |
varchar(255) |
INDEX NOT_NULL |
Имя пользователя |
|
bookname |
varchar(255) |
INDEX NOT_NULL |
Название книги |
|
author |
varchar(255) |
NOT_NULL |
Автор книги |
Таблица ‘w_trade’ (таблица 10) предназначена для составления предложений для обмена книгами и содержит имя пользователя, название и автора книги, информацию об обмене и дату добавления предложения.
Таблица 10
|
Столбец |
Тип |
Атрибуты |
Назначение |
|
item_id |
int(11) |
AUTO_INCREMENT PRIMARY_KEY |
Идентификационный номер предложения об обмене |
|
username |
varchar(255) |
INDEX NOT_NULL |
Имя пользователя |
|
bookname |
varchar(255) |
INDEX NOT_NULL |
Название книги |
|
author |
varchar(255) |
NOT_NULL |
Автор книги |
|
trade_info |
text |
NOT_NULL |
Информация об обмене |
|
date |
timestamp |
Дата добавления |
Таблица ‘reviews’ (таблица 11) предназначена для хранения обзоров пользователей на книги и содержит название и автора книги, имя пользователя, текст обзора, оценку книги, дату добавления обзора.
Таблица 11
|
Столбец |
Тип |
Атрибуты |
Назначение |
|
review_id |
int(11) |
AUTO_INCREMENT PRIMARY_KEY |
Идентификационный номер обзора |
|
bookname |
varchar(255) |
INDEX NOT_NULL |
Название книги |
|
author |
varchar(255) |
NOT_NULL |
Автор книги |
|
username |
varchar(255) |
INDEX NOT_NULL |
Имя пользователя |
|
review |
text |
NOT_NULL |
Текст обзора |
|
rating |
int(2) |
NOT_NULL |
Оценка по десятибалльной шкале |
|
date |
timestamp |
Дата добавления |
Таблица ‘lit_news’ (таблица 12) предназначена для хранения новостей литературы и содержит название новости, краткое содержание, основное содержание (текст) новости, имя пользователя и дату добавления.
Таблица 12
|
Столбец |
Тип |
Атрибуты |
Назначение |
|
new_id |
int(11) |
AUTO_INCREMENT PRIMARY_KEY |
Идентификационный номер новости |
|
title |
varchar(255) |
NOT_NULL |
Название новости |
|
small_text |
varchar(255) |
NOT_NULL |
Краткий текст новости |
|
text |
text |
NOT_NULL |
Полный текст |
|
username |
varchar(255) |
INDEX NOT_NULL |
Имя пользователя |
|
date |
timestamp |
Дата добавления |
Таблица ‘site_news’ (таблица 13) предназначена для хранения новостей и оповещений о веб-ресурсе и содержит название новости, текст, имя пользователя и дату добавления.
Таблица 13
|
Столбец |
Тип |
Атрибуты |
Назначение |
|
n_id |
int(11) |
AUTO_INCREMENT PRIMARY_KEY |
Идентификационный номер новости |
|
title |
varchar(255) |
NOT_NULL |
Название новости |
|
text |
text |
NOT_NULL |
Текст новости |
|
username |
varchar(255) |
INDEX NOT_NULL |
Имя пользователя |
|
date |
timestamp |
Дата добавления |
4. Описание структуры клиентской части
4.1. Описание интерфейса пользователя
Для неавторизованных пользователей домашняя страница выглядит следующим образом (рисунок 4). Для того, чтобы получить доступ к полноценному пользовательскому интерфейсу, необходимо пройти аутентификацию и тогда домашняя страница будет выглядеть несколько иначе (рисунок 5), в частности не содержать приветственного сообщения для новых посетителей веб-ресурса и иметь ссылки для доступа к профилю и личным сообщениям.
Рисунок 5
Рисунок 6
Также на домашней странице для всех пользователей отображается навигация, блок со списком пользователей, которые в данный момент находятся на сайте, и блок с последними новостями веб-ресурса.
Страницы ‘What to read?’ и ‘Quotes’ выглядят одинаково как для аутентифицированных пользователей, так и для неаутентифицированных и выглядят следующим образом (рисунок 7, 8 соответственно).
Рисунок 7
Рисунок 8
При нажатии на кнопки “Get another book!” и “Get another quote!” страницы обновляются и выдают другие случайные данные из БД.
Страница ‘Users’ reviews’ выглядит следующим образом (рисунок 9). На нее выводятся из базы данных пять абсолютно случайных обзоров. Для аутентифицированных пользователей также присутствует кнопка ‘Add your review!’ и соответственно возможность добавить свой обзор. Если авторизованный пользователь является автором обзора, он может перейти на страницу редактирования обзора, нажав на кнопку ‘Edit review’.
Рисунок 9
Страница с формой добавления обзора выглядит следующим образом (рисунок 10). При добавлении обзора используется метод POST.
Рисунок 10
Страница редактирования обзора выглядит следующим образом (рисунок 11) и генерируется автоматически с помощью метода GET. Все данные, отредактированные в данной форме, отправляются методом POST.
Рисунок 11
Страница ‘Trade offers’ выглядит следующим образом (рисунок 12). На странице формируется динамически сто последних предложений обмена, для удобства сразу же присутствует кнопка для перенаправления на форму написания сообщения автору объявления. При переходе посредством нажатия на эту кнопку строка адресата заполняется автоматически. Для неаутентифицированного пользователя кнопка ‘Add your trade offer!’ отсутствует. Данная кнопка перенаправляет пользователя на внутренний пользовательский интерфейс (см. рисунок 18).