Разработка и внедрение сайта со ступенчатым администрированием

Исследование информационных технологий, используемых для создания сайтов. Проектирование модели базы данных разрабатываемого веб-ресурса с созданием ступенчатого администрирования и управления контентом. Регистрация коммерческого домена и хостинга.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 07.08.2018
Размер файла 934,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Структура нашего сайта многоуровневая. У разделов «Компания» и «Продукция» есть подразделы. Эти подразделы добавляются к разделам тем способом, что описан выше: щелкаем правой кнопкой по разделу и выбираем пункт «Новый подчиненный узел».

К любым узлам можно добавлять комментарии. Для этого внизу окна приложения есть небольшое окошечко. Выделяем узел и пишем в окне текст комментария к нему. У узла с комментарием появляется специальный значок. Текст комментария можно увидеть сразу после наведения мыши на него.

Ниже на рис. 2.1 Можно увидеть разработанную структуру сайта компании ООО «Адамант. сайт контент домен хостинг

Рис. 2.1 - Разработанная структура сайта компании ООО «Адамант»

После создания документа, с описанием структуры сайта компании ООО «Адамант, его можно экспортировать в различные форматы. Например, PDF, PNG, SVG и JPEG, а также HTML и XHTML.

У приложения FreeMind очень широкие возможности.

Выбрав FreeMind для создания структуры сайта, мы не ошиблись и решили задачи разработки сайта компании ООО «Адамант» без особых проблем.

Таким образом, была разработана архитектура сайта компании ООО «Адамант», при помощи свободно распространяемого программного обеспечения FreeMind, и с учетом требования заказчика и выданным техническим заданием на выпускную квалификационную работу.

2.2 Проектирование базы данных сайта ООО «Адамант» со ступенчатым доступом

Далее приступим к проектированию базы данных сайта компании ООО «Адамант» со ступенчатым доступом. Для того, чтобы получить представление о данных, которые будут использоваться, давайте обозначим задачи, которые должен выполнять сайт компании ООО «Адамант».

· Отображение товаров

· Классификация товаров

· Регистрация клиентов

· Добавление товаров в корзину покупок

· Отображение содержимого корзины покупок

· Оформление заказов посетителями

· И т.д.

Определяем сущности и отношения.

Из списка задач мы можем вывести сущности, которые имеют важные роли в нашей системе. Товары, категории, клиенты и заказы - сущности, которые можно найти почти в каждой базе данных коммерческого сайта компании ООО «Адамант». В данном случае модель, будет содержать только следующие сущности: клиент, заказ и товар. Определившись с сущностями, мы можем подумать над связями между ними.

Между заказом и товаром существует связь многие-ко-многим. Каждый заказ содержит 1 или более товаров и каждый товар может быть связан с 0, 1 или большим количеством заказов. Связь многие-ко-многим создается с помощью трех таблиц. Две таблицы - источники данных (order -- заказ и products -- товары) и одна - соединительная (OrderProducts), что и можно увидеть на рис. 2.2 ниже. И заказы, и товары имеют связь один-ко-многим с соединительной таблицей. Вместе они образуют связь многие-ко-многим между заказами и товарами.

Клиенты и заказы имеют связь один-ко-многим. Каждая запись о клиенте может быть связана с множественными записями о заказах (заказами) и наоборот, каждая запись о заказе (конкретный заказ) может быть связана только с одной записью о клиенте.

Рис. 2.2 - Связь между разрабатываемыми таблицами сайта компании ООО «Адамант»

Данная схема-таблица является часть будущей модели. Полная таблица клиентов, конечно, будет содержать больше информации (адрес, город и т.д.)

Таблица заказов (order). Каждая запись таблицы заказов, каждый заказ связан с уникальной записью о клиенте, с уникальным клиентом с помощью внешнего ключа - поля customer_id.

Количество заказов. Далее добавим поле количества заказов (order_quantity). Эти данные могут быть получены из существующих данных. Общее количество товаров в заказе (order_quantity) может быть получено из таблицы OrderProduct. Запрос, который находит количество товаров в заказе может быть легко сформирован с помощью SQL.

Тип платежа. Поле, которое можно бы добавить в таблицу заказов - payment_type (тип платежа). Это информация уникальна для конкретного заказа и не может быть получена из других данных (поле payment_type стало внешним ключом в таблице заказов - order - с сылкой на отдельную таблицу, содержащую типы платежей).

Общая сумма заказа. Еще одно поле, которое можно добавить в таблицу order - это поле для общей суммы заказа. Можно сложить стоимости всех товаров заказа. Цена товара - это величина изменяемая. Поэтому, когда посчитается общая стоимость заказа, сложив стоимости каждого его товара, а владелец магазина удвоит стоимость одного из товаров в заказе, то и общие стоимости всех уже выполненных заказов тоже изменятся. Иначе говоря, если высчитывать общую стоимость заказа при просмотре, а цены на товары могут меняться, то при этом самом просмотре истории может возникнуть такая ситуация, когда количество денег, которые заплачены за весь заказ, будет меняться. Вот почему лучше высчитывать общую стоимость в момент оформления заказа и хранить ее в таблице order.

Хранение истории цен на товары. Говоря про историю, можно предположить, что может понадобится сохранять и историю цен на каждый товар. В этом случае администратор мог бы посмотреть на дату заказа, сделать запрос к таблице price_history (история цен) и получить стоимость товара на дату оформления заказа. В данном случае не пришлось бы хранить общую стоимость заказа в таблице order. Большинство коммерческих сайтов с элементами продаж сохраняют общую стоимость товаров заказа и не хранят историю цен на эти товары.

Таблица товаров. В таблице товаров цены на товары хранятся без учета НДС. Цена с НДС может быть вычислена с помощью программного кода или с помощью SQL-запроса. Вот почему не нужно хранить цены с включенным НДС. Хранение стоимости товаров, таким образом, может иметь смысл и в будущем. В рассматриваемой модели цена товара хранится в единственном поле таблицы. Однажды изменив цену на товар, можно потерять прежнюю стоимость. Но нужно будет иметь возможность получать отчеты о продажах в прошлом из базы данных сайта компании ООО «Адамант», значит нужно хранить историю цен для каждого товара. Если товар менял стоимость дважды в определенном году, то нужна история цен, чтобы знать сколько денег компания выручила за этот товар в данном году. А так как НДС, на величину которого возрастает цена товара при продаже, не достается компании, то и учитывать его в отчетах о полученной прибыли за товар бессмысленно.

Реляционные базы данных - это отличное средство для эффективного хранения большого количества информации. Эта модель будет реализована с помощью любой СУБД MySql, а запросы к ней могут выполняться с помощью SQL.

Далее для разработки базы данных сайта компании ООО «Адамант», будем использовать Mysql Workbench. Это утилита для создания диаграмм сущность-связь и не только.

Следующим логичным шагом будет выделение сущностей для запросов структурированного языка запросов (SQL). Моделирование баз данных с помощью Mysql Workbench создает наиболее полную модель.

В первую очередь, несколько слов об отношениях между сущностями. Мы уже разобрались ранее с тем, что в структуре базы данных коммерческого сайта, сущности соответствует таблица. Таблица представляет собой набор полей, которые соответствуют атрибутам сущности.

В каждой таблице обязательно должно быть поле, хранящее идентификатор записи. Значение идентификатора, как правило, формируется автоматически при добавлении новой записи и никогда не повторяется. Это необходимо потому, что связь между таблицами осуществляется как раз по этому полю, и при дублировании значений сбоев в работе ресурса не избежать [8]. Ниже на рис. 2.3 представлены отношения во втором блоке создаваемой базы данных.

Рис. 2.3 - Основные сущности базы данных сайта ООО «Адамант»

Основные сущности базы данных коммерческого сайта и отношения между ними представлена на рис. 2.3. На схематичном изображении таблиц приведены только поля, хранящие идентификатор записи, остальные же отмечены многоточием.

Поэтому следующим этапом создания базы данных сайта ООО «Адамант» является подробный обзор основных сущностей и атрибутов и, следовательно, вариантов возможных таблиц и их полей:

1. Товар. Данная сущность и одноимённая таблица базы данных сайта ООО «Адамант» содержит информацию о том, чем, собственно говоря идёт торговля на сайте. Поскольку покупатель не может вживую оценить продукт, то задача разработчиков -- предоставить максимально полный перечень свойств, чтобы возникло желание его приобрести. Следовательно, список атрибутов будет таким:

· Наименование товара (краткое наименование). Всю необходимую информацию лучше вынести в «Описание»;

· Описание -- данный атрибут в некоторых случаях лучше вынести в отдельную таблицу ввиду большого количества данных, что может снизить скорость выполнения запросов к БД;

· Изображения -- здесь имеет место быть связь «один-ко-многим», т.к. у товара может быть несколько изображений. Следовательно, целесообразно будет создать для них отдельную таблицу;

· Модель. Содержит номер модели;

· Цена;

· Доступность -- это, как правило, поле в двумя вариантами значений: «В наличии»/«Нет в наличии»;

· Количество -- если товар в наличии, здесь хранится кол-во доступных товаров на складе. Но, как показывает практика, очень часто товар, которого нет в действительности на складе, имеет ненулевое значение. Это возникает, как правило, из-за человеческого фактора.

· Опции -- этот атрибут подразумевает список различных характеристик: цвет, объём, и т.д. У товара может быть несколько атрибутов, поэтому целесообразно было бы также создать таблицу, хранящую наличие у товаров определённых атрибутов.

· SEO-атрибуты -- это группа полей, хранящие содержимое для мета-тегов description и keywords, которые необходимы для придания веса страницы для поисковых роботов и, следовательно, влияют на позиции сайта в поисковой выдаче.

· Язык -- данный атрибут характерен для магазинов, имеющих мультиязычный интерфейс. В данном случае для каждого языка вводится наименование товара и его описание. Как правило, для языков вводится отдельная таблица, содержащее поле идентификатора и наименования языка. В таблице товаров указывается идентификатор, а наименования, при необходимости, подтягивается с помощью запросов.

2. Производитель. У товара обязан быть производитель. Его необходимо указывать для того, чтобы пользователи могли ориентироваться на качество товара ввиду рейтинга и известности бренда. В структуре базы данных наличие данной таблицы нужно для организации фильтрации товаров и ряда других возможностей. У данной сущности набор атрибутов выглядит следующим образом:

· Наименование -- следует отметить, что названия зарубежных производителей лучше указывать на языке международного общения (как правило английский), чтобы покупатели не вчитывались в иероглифы и не теряли из-за этого доверия к проверенным брендам;

· Описание -- здесь обычно указывают информацию о производителе: историю фирмы, сертификаты качества, различные награды и участие в выставках, повышающие доверие покупателей;

· Логотип -- поле для хранения логотипа фирмы;

· Количество товаров -- введено для упрощения фильтрации товаров.

3. Категория. Главным назначение данной сущности базы данных сайта ООО «Адамант» является группировка товаров. У категорий существует иерархия (категория-подкатегория и т.д.), что необходимо учитывать в виде атрибутов:

· Название -- будет как можно лаконичнее, 1-2 слова;

· Описание -- содержит краткое описание товаров, которые можно найти в данной рубрике;

· Изображения -- одно поле таблицы.

· Доступность -- здесь она так же нужна, как и для товаров. Всё дело в том, что в данной категории может не быть товаров вообще или они будут не в наличии. Тогда пользователю она не показывается. Но поисковые роботы видят её и индексируют, продвигая сайт в поисковой выдаче;

· Количество товаров -- показывает общее количество товаров в категории;

· SEO-атрибуты -- такой же смысл и рекомендации, как и у товаров;

· Иерархия -- указывается номер ступени категории в иерархии. Учитывается при формировании различных меню на сайте;

· Язык -- также необходим для мультиязычных проектов.

4. Покупатель. Таблица, соответствующая данной сущности, хранит в базе данных сайта ООО «Адамант» информацию о покупателе, которую он указывает при регистрации на сайте. содержит следующий набор атрибутов:

· Логин -- ник пользователя, под которым он будет входить на сайт;

· Пароль -- стоит отметить -- пароль часто хранится в зашифрованном виде, чтобы исключить его явное использование при взломе базы данных сайта. Его, конечно же, можно расшифровать, подобрав алгоритм, но на это уйдёт время, за которое добросовестный администратор примет должные действия;

· Группа пользователей -- пользователи группируются между собой по различным критериям: по количеству заказов («Редкий покупатель», «Частый покупатель», «VIP»), по объёмам закупок (оптовый, розничный) и т.д. Данная градация делается с целью предоставления скидок и определённых товаров различным категориям. Поле может содержать как наименование группы, так и её идентификатор;

· Контакты -- телефон пользователя, e-mail, факс, почтовый индекс, адрес и др. -- каждый атрибут хранится в отдельном поле;

· IP-адрес -- необходим для ограничения доступа пользователя на сайт. Для заблокированных IP может быть создана отдельная таблица базы данных сайта, автоматически при помощи встроенных возможностей MySql. Подобную блокировку можно легко обойти с помощью динамического IP или захода из различных точек;

· Статус -- может быть различным: «Онлайн»/»Оффлайн», «Удалён», «Давно не посещал» и т.д.;

· Скидки -- данное поле хранит количество скидочных баллов, % скидки -- всё зависит от политики компании;

· Язык -- поле необходимо для хранения языка пользователя, который он указывает при регистрации. И который используется при отображении товаров, их описаний, категорий и прочих сущностей, и подписей элементов интерфейса, которые имеют языковые настройки.

· Геозона -- здесь хранится код страны. Необходим, в основном, для автоматического определения языка интерфейса в случае, если пользователь первый раз на сайте и для предложения транспортных компаний при оформлении заказов. Описание геозон, если требуется, хранится в отдельной таблице.

5. Заказ. Таблица базы данных сайта ООО «Адамант», соответствующая данной сущности, хранит в себе информацию о заказах покупателей. Предназначение данной сущности -- информирование покупателей и помощь администраторам, которые рассматривают заказы, согласовывая их в телефонном режиме. Список атрибутов таков:

· Покупатель -- это поле хранит, идентификатор покупателя из одноимённой таблицы, который сделал заказ;

· Товар -- идентификатор товара из соответствующей таблицы. Поскольку в одной заказе может быть несколько товаров, есть смысл сделать отдельную таблицу для фиксации этой связи, хранящей идентификатор заказа и товара;

· Количество товаров;

· Цена товара -- цена каждого товара, присутствующего в заказе;

· Цена заказа -- суммарная цена всех товаров, значащихся в заказе. Необходима для ведения статистики доходов магазина, исключая необходимость высчитывать её каждый раз на основании товаров в заказе и их отдельной стоимости;

· Способ доставки -- здесь указывается либо название транспортной компании, либо указывается её идентификатор, а сами фирмы хранятся в другой таблице базы данных сайта ООО «Адамант».

· Способ оплаты -- здесь, хранится название платёжной системы (WebMoney, VISA, MasterCard, PayPal и др.) или её идентификатор из одноимённой таблицы;

· Статус -- фиксирует состояние заказа: «В обработке», «Выполнен», «Отклонён» и др.;

· Название заказа -- в данном поле хранится текстовое описание заказа, которое формируется автоматически при его формировании. Данный атрибут служит для ориентации администраторов при поиске необходимого заказа;

· Комментарий -- поле, которое заполняет пользователь при оформлении. Не является обязательным.

Таким образом, после рассмотрения всех сущностей и связей между ними, а также частичного графического отображения части таблиц, была построена, при помощи Workbench, модель базы данных сайта ООО «Адамант». Модель изображена на рис. 2.4

Рис. 2.4 - Модель, разработанная в Workbench, базы данных сайта ООО «Адамант»

Таким образом, на основе технического задания, спроектированной ранее архитектурой сайта, была спроектирована модель базы данных сайта ООО «Адамант».

3. Разработка и внедрение сайта ООО «Адамант»

3.1 Разработка и внедрение базы данных сайта ООО «Адамант»

На этапе создания непосредственно базы данных и скрипта страниц сайта компании ООО «Адамант» необходимо использовать либо виртуальный сервер, либо использовать возможности коммерческого хостинга. Так как на предыдущем этапе разработки сайта компании ООО «Адамант» было принято решение разрабатывать гибридную систему управления контентом, то одним из условий успешной разработки является использование коммерческого домена и хостинга с наиболее современными технологиями и программным обеспечением на данный момент времени. Создание гибридной технологии управления контентом предполагает регистрацию коммерческого домена первого уровня, что совпадает с требованиями заказчика. Был выбран и зарегистрирован домен первого уровня при использовании системы регистрации доменных имен - regis.ru. При выборе хостинга был проведен анализ по критериям:

· Предоставление наиболее новой версии Php и MySql;

· Предоставление наиболее современного программного обеспечения;

· Предоставление админ-панели хостинга;

· Предоставление информационной составляющей для обеспечения ступенчатого доступа;

· Стоимость;

· Наличие технической поддержки 24 часа в сутки, 7 дней в неделю;

· Предоставление программ sql dynamycs и MyPhpAdmin;

· Управление динамическими альбомами изображений;

· Предоставление Ftp менеджера и доступа.

Было рассмотрено несколько предложений хостингов, но всем вышеперечисленным критериям соответствует только один из рассмотренных - sortyhost.ru. Аккаунт на хостинге был зарегистрирован и оплачен заказчиком компанией ООО «Адамант».

Рис. 3.1 - Создание списка IP - адресов с которых будет доступно администрирование базы данных

Создание базы данных сайта компании ООО «Адамант» на хостинге показано на рис. 3.2.

Рис. 3.2 - Создание базы данных сайта компании ООО «Адамант»

Таким образом, хостинг предоставляет возможности создавать использовать и редактировать базу данных компании ООО «Адамант», сразу на сервере без применения виртуальных серверов типа Denwer.

Перед созданием базы данных сайта компании ООО «Адамант» приступим к созданию, при помощи возможностей хостинга, к ступенчатому доступу. Создадим на хостинге список IP - адресов с которых будет доступно администрирование базы данных сайта компании ООО «Адамант», как показано на рис. 3.1

Вход в программу MyPhpAdmin для создания, редактирования и заполнения таблиц отображен на рис. 3.3.

Рис. 3.3 - Вход в программу MyPhpAdmin

Создание и редактирование первоначальных таблиц базы данных сайта компании ООО «Адамант» при помощи MyPhpAdmin отображено на рис. 3.4

Рис. 3.4 - Создание и редактирование таблиц базы данных сайта компании ООО «Адамант»

В соответствие с ранее разработанной моделью базы данных создаем таблицы базы данных сайта компании ООО «Адамант», для этого используем как возможности MyPhpAdmin, так и чистое написание кода в Notepad++. Создаем таблицы и парольный доступ, код описан ниже;

create database a0130044_base;

use a0130044_base;

create table customers

(

customerid int unsigned not null auto_increment primary key,

name char(60) not null,

address char(80) not null,

city char(30) not null,

state char(20),

zip char(10),

country char(20) not null

);

create table orders

(

orderid int unsigned not null auto_increment primary key,

customerid int unsigned not null,

amount float(6,2),

date date not null,

order_status char(10),

ship_name char(60) not null,

ship_address char(80) not null,

ship_city char(30) not null,

ship_state char(20),

ship_zip char(10),

ship_country char(20) not null

);

create table tovar

(

isbn char(13) not null primary key,

author char(80),

title char(100),

catid int unsigned,

price float(4,2) not null,

description varchar(255)

);

create table categories

(

catid int unsigned not null auto_increment primary key,

catname char(60) not null

);

create table order_items

(

orderid int unsigned not null,

isbn char(13) not null,

item_price float(4,2) not null,

quantity tinyint unsigned not null,

primary key (orderid, isbn)

);

create table admin

(

username char(16) not null primary key,

password char(40) not null

);

grant select, insert, update, delete

on a0130044_base.*

to a0130044_base @localhost identified by 'password';

При такой реализации базы данных учитывается ряд требований, которые вызваны доступом к базе данных в режиме онлайн. В базе будет реализовано:

· дополнительные поля под адреса клиентов;

· адрес доставки заказа клиента. Контактный адрес клиента не всегда совпадает с адресом доставки и это необходимо учитывать;

· таблица категорий (categories), а в таблицу товаров (tovars) добавлено поле идентификатора категории (catid). При этом, сортировка товаров по категориям будет упрощать просмотр сайта;

· в таблицу order_items добавлено поле items_price, которое хранит цену товара. Таким образом, учитывается возможность изменения цены товара. Но цену товара необходимо знать на тот момент, когда клиент заказывает товар;

· таблица admin для хранения входного имени и пароля администратора;

· для каждого товара существует поле описания, содержащее краткую аннотацию;

· механизм хранения на InnoDB изменен так, чтобы можно было использовать внешние ключи и транзакции;

Аналогично создаем оставшиеся таблицы согласно, модели базы данных сайта ООО «Адамант». Далее создаем запросы к базе данных сайта компании ООО «Адамант»:

<?php

$mysqli = @new mysqli('localhost', 'Admin', 'pass', ' a0130044_base ');

if (mysqli_connect_errno()) {

echo "Подключение невозможно: ".mysqli_connect_error();

}

$mysqli->query('INSERT INTO tovar (name, email) VALUES ("MyName", "myname@mail.ru")');

$mysqli->close();

?>

Вышенаписанный запрос соединяет с базой данных. Ниже приведена часть кода запроса на подключение и выборку записей из таблицы:

<?php

$mysqli = @new mysqli('localhost', 'Admin', 'pass', ' a0130044_base ');

if (mysqli_connect_errno()) {

echo "Подключение невозможно: ".mysqli_connect_error();

}

$result_set = $mysqli->query('SELECT * FROM tovar');

$result_set->num_rows;

while ($row = $result_set->fetch_assoc()) {

print_r($row);

echo "<br />";

}

$result_set->data_seek(0);

while ($row = $result_set->fetch_assoc()) {

print_r($row);

echo "<br />";

}

$result_set->close();

$mysqli->close();

?>

Аналогично создаются все запросы к базе данных сайта компании ООО «Адамант», согласно разработанной ранее модели.

Таким образом, был зарегистрирован коммерческий домен и хостинг, была разработана и размещена база данных сайта компании ООО «Адамант».

3.2 Разработка и внедрение системы управления сайтом ООО «Адамант»

После создания и размещения базы данных сайта компании ООО «Адамант», было создано ступенчатое администрирование базы данных и подключены дополнительные возможности через админ-панель хостинга.

Далее создаем при помощи PHP, используя возможности хостинга систему управления контентом при совмещении базы данных, страниц и системы скриптов.

PHP - это язык сценариев, который используется на стороне сервера и разработан специально для Web. Он позволяет непосредственно в HTML-страницу внедрять код, выполняемый при каждом ее посещении. При этом программа на PHP интерпретируется Web-сервером, а результат ее работы в виде HTML-странички отображается браузером пользователя.

При обращении к серверу клиент, как правило, просит выполнить некоторый запрос и дать на него ответ. При этом на сервере выполняются различные Web-приложения, соблюдая интерфейсы CGI или HTTP.

Одним из наиболее распространенных применений любого языка серверных сценариев является написание HTML-форм для сайта. Опишем процесс создания такой формы для сайта компании ООО «Адамант». Предположим, что гипотетический покупатель через Интернет зашел в универмаг и хочет сделать заказ из нескольких товаров. Сервер предоставляет ему HTML-форму (Рис. 3.5) для заполнения, которая учитывает, что заказывает клиент.

Рис. 3.5 - Форма заказа

Затем данные, введенные в форму, передаются обработчику формы или сценарию, который принимает эти данные, обрабатывает их по определенному алгоритму и выдает ответ заказчику в виде HTML (Рис. 3.6). При этом интерпретатор PHP, выполнив свой код, полностью формирует ответ на чистом HTML. Это означает, что из PHP-кода можно построить чистый HTML-код, допускающий просмотр в любом браузере.

Рис. 3.6 - Ответ сервера

HTML-код Web-формы имеет вид:

<html>

<head>

<meta http-equiv="content-type" content="text/html; charset=UTF-8" >

<title>ООО «Адамант»</title>

</head>

<body>

<h1> ООО «Адамант»</h1>

<h2>Результаты заказа</h2>

<form action="php_var.php" method=post>

<table border=1>

<tr bgcolor=#cccccc>

<td width=150>Товар</td>

<td width=150>Количество</td>

</tr>

<tr>

<td>Черника</td>

<td align="center"><input type="text" name="tireqty" size= "3" maxlength="3"></td>

</tr>

<tr>

<td>Клюква</td>

<td align= "center"><input type="text" name="oilqty" size="3" maxlength="3"></td>

</tr>

<tr>

<td>Маслята мороженные</td>

<td align="center"><input type="text" name="sparkqty" size= "3" maxlength="3"></td>

</tr>

<tr>

<td>Ваш адрес</td>

<td align="center"><input type="text" name="address"></td>

</tr>

<tr>

<td colspan="2" align="center"><input type="submit" value= "Подтвердить заказ"></td>

</tr>

</table>

</form>

</body>

</html>

Здесь в третьей строке задается имя скрипта PHP, который будет заниматься обработкой полученных данных php_var.php. Затем формируется таблица из двух столбцов и нескольких строк с наименованием предлагаемых товаров и полем для ввода адреса клиента. Ниже выводится кнопка «Подтвердить заказ», при нажатии на которую данные формы методом post (<form action="php_var.php" method=post>) отправляются на сервер, где и подвергаются обработке.

Код PHP-скрипта, обрабатывающего данные HTML-формы, имеет вид:

<?php

//Создаем короткие имена переменных, используя длинную форму записи.

$tireqty = $HTTP_POST_VARS['tireqty'];

$oilqty = $HTTP_POST_VARS['oilqty'];

$sparkqty = $HTTP_POST_VARS['sparkqty'];

$address = $HTTP_POST_VARS['address'];

?>

<html>

<head>

<meta http-equiv="content-type" content="text/html; charset=UTF-8">

<title> ООО «Адамант»</title>

</head>

<body>

<h1> ООО «Адамант»</h1>

<h2>Ваш заказ</h2>

<?php

//вычисляем общее количество товара

$totalqty = 0;

$totalqty = $tireqty + $oilqty + $sparkqty;

// Проверяем на пустой заказ

if ($totalqty == 0)

{

echo '<font color=red>';

echo 'Вы ничего не заказали!!!';

echo '</font>';

exit;

}

echo '<p>Результаты Вашего заказа:</p>';

echo $tireqty . ' - Морошки;</br>';

echo $oilqty . ' - Клюквы;</br>';

echo $sparkqty . ' - Грибов;</br>';

echo 'Ваш адрес: ' . "$address</br>";

echo 'Ваш заказ: '. "$totalqty</br>";

$totalamount = 0.00;

// Расчет итоговой суммы с учетом цен в прайс-листе

define('TIREPRICE',100);

define('OILPRICE',10);

define('SPARKPRICE',4);

$totalamount = $tireqty * TIREPRICE

+ $oilqty * OILPRICE

+ $sparkqty * SPARKPRICE;

echo 'Итого: '.number_format($totalamount,3).' руб'.'</br>';

$taxrate = 0.10; // Местный налог с продаж составляет 10%

$totalamount = $totalamount * (1 + $taxrate);

echo 'Всего, включая налог с продаж: '.

number_format($totalamount,3).' руб'.'<br>';

echo "<p>Заказ обработан: "; echo date('H:i, jS F');

$date = date('H:i, jS F');

// открываем файл, указав абсолютный путь /var/www/html/orders/orders.txt

@ $fp = fopen("/var/www/html/orders/orders.txt", "a");

flock($fp, 2); // блокируем файл - файл недоступен другим

//Проверяем, открылся ли файл. Если мы вошли внутрь файла,

то $fp имеет значение //TRUE

if (!$fp)

{

echo '<p><strong>Вы не можете сейчас сделать заказ -

база данных недоступна!.</strong></p>';

exit;

}

//Если файл доступен - идет запись в строку для каждого заказа

$outputstring=$date."\t".$tireqty."tire\t"

.$oilqty."oil\t"

.$sparkqty."spark\t\$".$totalamount."\t".$address."\n";

// записываем данные в файл

fwrite($fp, $outputstring);

flock($fp, 3); // Снимаем блокировку файла

fclose($fp); // закрываем файл

#echo phpinfo();

?>

</body>

</html>

В начале сценария переменным $tireqty, $oilqty , $sparkqty, $address присваиваются значения, получаемые из HTML-формы. После суммирования общего количества всех заказанных товаров совершается проверка на отсутствие заказа (нажимается кнопка «подтвердить заказ» при пустых полях формы). Если поля не были заполнены, выводится сообщение о том, что вы ничего не заказали. Если значения переменных не нулевые, то выводится результирующая информация о том, чего и сколько было заказано с указанием текущей даты и сколько все это стоит с учетом местного налогообложения. После этого открывается текстовый файл, куда заносится информация (по одному заказу в строку) о сделанных заказах и адресе клиента, которые он указал в форме. До процесса записи в файл он блокируется для исключения возможности одновременной записи и потери информации. После окончания записи блокировка файла снимается, и он закрывается.

Выше были рассмотрены основные технологии разработки многофункциональных динамических веб-сайтов с использованием PHP и MySQL. Далее переходим к созданию покупательской корзине (shopping cart) или корзине для покупок (shopping basket), как ее иногда именуют.

В процессе построения покупательской тележки будут реализованы следующие модули:

· соединение с базой данных продукции для продажи;

· каталог товаров с разбивкой по категориям;

· покупательская корзина, позволяющая фиксировать товар, отбираемый заказчиком по мере изучения ассортимента;

· главный расчетный сценарий, обрабатывающий детали платежа и поставки отобранного товара;

· интерфейс администрирования проекта.

Построение онлайн-каталога товаров

ООО «Адамант», продает замороженные товары - грибы и ягоды. Для реализации проекта была создана база данных с информацией о категориях, адресах доставки товара, условиях оплаты и тд. Выше были рассмотрены механизмы реализации интерфейса к базам данным. Конечно, для завершения обработки заказов будут применяться транзакции, что тоже должно найти свое отражение в реализации базы данных.

Отслеживание выбираемого товара

В общем, можно реализовать два метода отслеживания товаров, которые выбирают посетители. Один из них - это помещение выбираемых элементов в базу данных, второй - манипулирование переменной сеанса. Использование переменной сеанса для отслеживания выбираемых товаров гораздо проще в реализации, так как не использует в своей работе постоянного обращения к базе данных. Помимо этого, такой подход позволяет избегать загромождения базы ненужными данными в процессе работы. Отдельные посетители могут просто просматривать магазин, что-то выбирать, но ничего не покупать. И если каждый раз их действия будут вносить изменения в базу данных, то процесс станет чрезмерно накладным для реальной работы. Поэтому разработка и манипулирование переменными сеанса будут лучшим выбором для решения этих вопросов. При этом, когда пользователь завершает посещение магазина и выполняет окончательный расчет, информация будет помещаться в БД в виде записи, регистрирующей транзакцию. Помимо этого, эти данные могут отображаться в каком-нибудь, удобном месте в браузере, для того чтобы пользователь мог видеть в любой момент времени сумму для расчета по закупкам.

В проект будет включен механизм приема заказа от посетителей и информации относительно доставки товаров по заказу. Реализация реальной обработки платежей будет разработана позже. Для этих целей существует большое разнообразие уже готовых платежных систем, будет интегрирована система, предоставленная заказчиком ООО «Адамант».

Такие системы привязаны к административным и даже географическим границам, а их интерфейс может не меняться (или меняться косметически) и быть универсальным. Суть рассматриваемой платежной системы заключается в том, чтобы передавать в банк информацию по финансовым операциям и возвращать либо код успешного завершения операции, либо один из многочисленных кодов ошибки. В обмен на передачу такой информации платежная система будет взимать плату в виде годовой оплаты или оплаты за установку. При этом платежной системе необходимы данные клиента (к примеру - номер его кредитной карточки), идентификационная информация владельца магазина для указания счета кредитования, а также общая сумма транзакции. Сумму заказа будем брать из переменного сеанса покупательской тележки, а окончательная информация по заказу будет занесена в базу данных, после чего переменная сеанса удаляется.

Разработка интерфейса администрирования

Кроме платежной системы и других элементов нужен интерфейс администрирования, который мог бы реализовать такие возможности как добавление, удаление и редактирование информации о товарах и категориях в базе данных. Чаще всего, приходится менять цену на товар. Это связано с проведением в магазинах специальных акций или организации продаж со скидкой. Все это приводит к необходимости сохранения не только заказа клиента, но и цены, которая должна быть выплачена за выбранный товар. Отражение в записях позиций только по заказам каждого клиента и текущую цену каждого наименования может существенно затруднить работу бухгалтерии организации. Помимо этого, при возврате клиентом товара или его обмене ему, возможно, будут возвращаться лишние денежные средства, если он приобрел что-то по акции и затем отказывается от покупки. Все это необходимо учитывать в реализации работы системы.

Таким образом, обобщая, можно сказать, что осуществляется построения системы, имеющей два основных представления - пользовательское и административное. Логика пользовательской ветки состоит в том, что клиент сначала открывает главную страницу, на которой перечислены все категории товаров на сайте. Эта страница дает ему возможность перейти далее к определенной категории, а затем и к информации по отдельному, выбранному товару. Здесь же будет представлена возможность пользователю добавить выбранный товар в корзину. В рамках работы с корзиной можно будет так же произвести окончательный расчет и покинуть магазин, либо вернуться на титульную страницу.

Логика административной ветки состоит в том, что она позволяет администратору входить в систему и добавлять новые товары и категории. При этом, самый простой способ реализовать возможность редактирования и удаления товаров и категорий состоит в том, чтобы отобразить администратору отличную от пользовательской версию сайта. В этом случае администратор должен иметь возможность просматривать категории и товары, но вместо доступа к покупательской тележке он может переходить к определенному товару или категории, а затем редактировать или удалять ее.

В этом контексте нужно иметь возможность разработать хотя бы часть сценариев, одновременно пригодных для работы как пользователей, так и администраторов. В этом случае, тремя китами, образующими основной костяк системы, будут являться каталог, покупательская корзина + обработка заказа и администрирование сайта. Для этого нужно будет создать набор библиотек функций так, чтобы объединить фрагменты кода, отвечающие за вывод HTML содержимого и за логику всех остальных схожих фрагментов тем самым, отделяя логику от содержимого. Такой подход значительно упростит создание и сопровождение кода.

Вид титульной страницы сайта определяет скрипт:

<?php

require ('book_sc_fns.php');

// Для покупательской тележки необходимо запустить сеанс

session_start();

do_html_header(Добро пожаловать на сайт компании ООО «Адамант»');

echo '<p>Пожалуйста, выберите категорию:</p>';

// Извлечь категории из базы данных

$cat_array = get_categories();

// Отобразить в виде ссылок на соответствующие страницы категорий

display_categories($cat_array);

// Если пользователь вошел в систему как администратор, вывести

// ссылки на добавление, удаление и редактирование категорий

if(isset($_SESSION['admin_user']))

{

display_button('admin.php', 'admin-menu', 'Меню администрирования');

}

do_html_footer();

?>

Функции, реализующие вид верхнего и нижнего колонтитула, имеют вид:

<?php

function do_html_header($title = '')

{

// Выводит HTML-заголовок

// Объявить переменные сеанса

if(!$_SESSION['items']) $_SESSION['items'] = '0';

if(!$_SESSION['total_price']) $_SESSION['total_price'] = '0.00';

?>

<html>

<head>

<title><?php echo $title; ?></title>

<style>

h2 { font-family: Arial, Helvetica, sans-serif; font-size: 22px;

color = red; margin = 6px }

body { font-family: Arial, Helvetica, sans-serif; font-size: 13px }

li, td { font-family: Arial, Helvetica, sans-serif; font-size: 13px }

hr { color: #FF0000; width=70%; text-align=center}

a { color: #000000 }

</style>

</head>

<body>

<table width='100%' border=0 cellspacing = 0 bgcolor='#cccccc'>

<tr>

<td rowspan = 2>

<a href = 'index.php'><img src='images/grib.gif' alt= ООО «Адамант»' border=0

align='left' valign='bottom' height = 55 width = 325></a>

</td>

<td align = 'right' valign = 'bottom'>

<?php if(isset($_SESSION['admin_user']))

echo '&nbsp;';

else

echo 'Всего товаров = '.$_SESSION['items'];

?>

</td>

<td align = 'right' rowspan = 2 width = 135>

<?php if(isset($_SESSION['admin_user']))

display_button('logout.php', 'log-out', 'Выход');

else

display_button('show_cart.php', 'view-cart', 'Показать корзину');

?>

</tr>

<tr>

<td align = right valign = top>

<?php if(isset($_SESSION['admin_user']))

echo '&nbsp;';

else

echo 'Общая сумма = $'.number_format($_SESSION['total_price'],2);

?>

</td>

</tr>

</table>

<?php

if($title)

do_html_heading($title);

}

function do_html_footer()

{

// Выводит завершающие HTML-дескрипторы

?>

</body>

</html>

<?php

// Далее идет продолжение кода из библиотеки функций

}

При такой реализации базы данных необходимо учесть ряд требований, которые вызваны доступом к базе данных в режиме онлайн. В базе будет реализовано:

· дополнительные поля под адреса клиентов;

· адрес доставки заказа клиента. Контактный адрес клиента не всегда совпадает с адресом доставки и это необходимо учитывать;

· таблица категорий (categories), а в таблицу товаров (tovars) добавлено поле идентификатора категории (catid). При этом, сортировка товаров по категориям будет упрощать просмотр сайта;

· в таблицу order_items добавлено поле items_price, которое хранит цену товара. Таким образом, учитывается возможность изменения цены товара. Но цену товара необходимо знать на тот момент, когда клиент заказывает товар;

· таблица admin для хранения входного имени и пароля администратора;

· для каждого товара существует поле описания, содержащее краткую аннотацию;

· механизм хранения на InnoDB изменен так, чтобы можно было использовать внешние ключи и транзакции;

Суть администрирования системы сводится к программной реализации веб-интерфейса взаимодействующего с базой данных, при котором применяется входная аутентификация. Для реализации этих функция необходимо обеспечить вход в систему авторизованного пользователя через сценарий:

<?php

require_once('book_sc_fns.php');

do_html_header('Администрирование');

display_login_form();

do_html_footer();

?>

Данный сценарий требует подключение ряда функций:

<?php

include_once('db_fns.php');

include_once('data_valid_fns.php');

include_once('output_fns.php');

include_once('book_fns.php');

include_once('user_auth_fns.php');

include_once('admin_fns.php');

include_once('order_fns.php');

?>

Наиболее важные библиотеки это book_fns.php:

<?php

function calculate_shipping_cost()

{

// фиксируется стоимость доставки

return 20.00;

}

function get_categories()

{

// Эапросить в базе данных список категорий

$conn = db_connect();

$query = 'select catid, catname

from categories';

$result = @$conn->query($query);

if (!$result)

return false;

$num_cats = $result->num_rows;

if ($num_cats == 0)

return false;

$result = db_result_to_array($result);

return $result;

}

function get_category_name($catid)

{

// Запросить в базе данных имя категории для данного идентификатора категории

$catid = intval($catid);

$conn = db_connect();

$query = "select catname

from categories

where catid = $catid";

$result = $conn->query($query);

if (!$result)

return false;

$num_cats = $result->num_rows;

if ($num_cats == 0)

return false;

$row = $result->fetch_object();

return $row->catname;}

Идентификация администратора после входа в систему осуществляется через переменную сеанса admin_user и функцию check_admin_user(). Как только администратор вошел на сайт, он тут же получает возможность изменять свой пароль или выйти из системы. Когда требуется добавить новую категорию или товар, вызываются соответствующие сценарии.

В случае категорий все происходит аналогичным образом. При попытке удаления категории проверяется наличие товаров в ней. Если это имеет место, то удалить категорию невозможно. И в противном случае - в случае пустой категории ее возможность удаления не вызывает сомнений. При этом минимизируется опасность случайного удаления информации, что недопустимо в принципе. Но если все же удалить категорию, содержащую товары, то статус товаров окажется неопределенным и переход к ним окажется невозможным, поскольку с ними не связана ни одна категория.

Таким образом, были созданы скрипты страниц сайта фирмы ООО «Адамант», соединены с базой данных и создан интерфейс администрирования базы данных и страниц сайта, работающего в режиме онлайн. Приведены хорошо прокомментированные скрипты, реализующие его работу и раскрыт механизм их функционирования.

Заключение

Выполненная выпускная квалификационная работа по созданию сайта для компании ООО «Адамант» со ступенчатым доступом является наиболее актуальной на данный момент времени поскольку является работой, в которой в комплексе применяются самые современные информационные технологии, и работа выполнялась по заказу реальной фирмы.

Поставленные в работе задачи выполнены полностью: проанализирована предметная область - деятельность фирмы ООО «Адамант»; выявлены требования заказчика ООО «Адамант» к создаваемому сайту; проанализированы существующие информационные технологии, используемые на данный момент времени для создания сайтов; спроектирована архитектура разрабатываемого сайта ООО «Адамант» с созданием ступенчатого администрирования и управления контентом; спроектирована модель базы данных разрабатываемого сайта ООО «Адамант» с созданием ступенчатого администрирования и управления контентом; зарегистрирован коммерческий домен и хостинг для разрабатываемого сайта ООО «Адамант» с созданием ступенчатого администрирования и управления контентом; разработана и внедрена база данных и скрипт разрабатываемого сайта ООО «Адамант» с созданием ступенчатого администрирования и управления контентом; проанализирована работа разработанного сайта ООО «Адамант» с созданием ступенчатого администрирования и управления контентом в тестовом режиме.

Цель выпускной квалификационной работы достигнута в полном объеме. Сайт компании ООО «Адамант» с созданием ступенчатого администрирования создан и размещен по адресу. Сайт работает в тестовом режиме, о чем свидетельствует акт о внедрении от компании ООО «Адамант».

Размещено на Allbest.ru

...

Подобные документы

  • Понятие и виды хостинга. Характеристика способов раскрутки веб-сайта. Обоснование необходимости и особенности разработки сайта для гостиничного предприятия, его назначение. Анализ сайтов-конкурентов. Выбор хостинга и домена, метода продвижения сайта.

    контрольная работа [310,6 K], добавлен 25.12.2012

  • Сайтостроение. Классификация сайтов. CMS, выбор системы управления контентом для сайта. Регистрация домена, хостинг, размещение сайта в сети. VPS или виртуальный выделенный сервер. Поисковая оптимизация сайта. Файл robots.txt. Карта сайта sitemap.xml.

    курсовая работа [139,4 K], добавлен 18.02.2015

  • Программный инструментарий, применяемый для разработки и создания Web-сайтов. Методы и способы представления на Web-страницах различных видов информации. Покупка хостинга и домена. Система управления содержимым сайта. Установка Drupal 7 на хостинг.

    курсовая работа [993,8 K], добавлен 14.07.2012

  • Анализ сетевых технологий в гостиничном деле. Официальные сайты компаний. Технологии при создании и поддержке сайтов. Разработка модели web-ресурса, шаблона, тестового примера. Основные этапы создания веб-сайта и презентации. Цены на разработку сайта.

    курсовая работа [3,6 M], добавлен 30.03.2014

  • Преимущества и недостатки статических и динамических сайтов. Эволюция и классификация web-приложений. Требования, предъявляемые к системам управления контентом (CMS). Создание структуры сайта, информационное наполнение страниц. Разработка базы данных CMS.

    дипломная работа [856,2 K], добавлен 27.06.2012

  • Повышение информационной обеспеченности кафедры информационных технологий. Анализ технических требований для развертывания системы управления контентом Joomla. Организация структуры хранилища базы данных. Физическое расположение файлов системы на диске.

    презентация [1,6 M], добавлен 19.06.2014

  • Выявление целей создания сайта и постановка проблемы, решаемой с его созданием. Анализ сайтов–аналогов, обоснование типа разрабатываемого web–узла. Специфика разработки набора макетов страниц. Оптимизация контента сайта, его верстка и тестирование.

    курсовая работа [1,4 M], добавлен 12.02.2011

  • Теория разработки интернет-магазина: описание предметной области. Сравнение систем управления контентом. Установка локального сервера "OpenServer". Установка CMS "MODX" на локальный сервер. Развертывание сайта на хостинге. Регистрация хостинга и домена.

    дипломная работа [2,7 M], добавлен 16.06.2017

  • Обзор и анализ используемых технологий, содержания и дизайна сайтов ВУЗов, в том числе созданных на основе CMS. Исследование содержания сайта ПРИПИТ и информационных потребностей различных групп его потенциальных посетителей. Разработка дизайна сайта.

    дипломная работа [129,4 K], добавлен 11.03.2010

  • Инфологическая и даталогическая модели данных. Описание пользовательской части и используемых sql-запросов. Физическая и логическая модель web-приложения. Описание используемых программных средств, языка программирования и информационных технологий.

    курсовая работа [1,3 M], добавлен 29.04.2015

  • Классификация современных web-технологий. Сравнительный анализ систем управления сайтами. Исследование методов разработки, оптимизации и продвижения Web-сайта. Изучение фреймворков, используемых при разработке сайтов. Обзор создания графического дизайна.

    дипломная работа [3,8 M], добавлен 07.11.2013

  • Анализ структуры и технологий создания сайтов машиностроительных предприятий, автоматизирующих систему продвижения товара через интернет. Установка и конфигурация системы управления контентом Joomla. Дизайн сайта, подбор необходимых модулей и плагинов.

    дипломная работа [2,6 M], добавлен 21.06.2015

  • История создания WordPress. Выбор домена и хостинга для сайта. Минимальные требования для установки системы. Загрузка Wordpress для самостоятельной установки. Создание базы данных mysql. Установка прав доступа к директориям. Повышение производительности.

    курсовая работа [1,7 M], добавлен 18.12.2013

  • Разработка сайта интерактивной карты городского пассажирского транспорта. Описание системы управления контентом Joomla! Выбор технических параметров хостинга. Разработка структуры сайта, его основные разделы. Выгрузка сайта на хостинг в интернете.

    дипломная работа [6,3 M], добавлен 13.12.2014

  • История развития и характеристика всемирной компьютерной сети Интернет. Особенности систем управления контентом и специализированного ПО. Основные этапы создания коммерческого сайта в среде разработки Joomla. Финансово-экономическое обоснование проекта.

    дипломная работа [4,2 M], добавлен 27.06.2012

  • Обзор проблемы разработки сайтов. Системы управления контентом. Сайты для агентств недвижимости. Контекстная диаграмма и оценка трудоемкости разработки сайта. Анализ предметной области и выделение информационных объектов. Описание реализации сайта.

    дипломная работа [2,9 M], добавлен 12.08.2017

  • Системы управления контентом. Проектирование сайта агентства недвижимости. Информационное обеспечение системы. Построение логической модели данных. Разработка интерфейса сайта: программные средства, структура сценария, его компьютерная реализация.

    дипломная работа [2,4 M], добавлен 27.10.2017

  • Процесс разработки Web-сайта. Состав и содержание работ по созданию подсистемы. Требования к Web-сайту. Определение сущностей модели базы данных. Разработка логической модели базы данных. Реализация PHP-скриптов и заполнение базы данных Web-сайта.

    дипломная работа [8,2 M], добавлен 29.06.2011

  • Принципы построения распределенных информационных приложений. Распределенное трех уровневое приложение. Необходимость использования приложений в средней школе. Системы управления контентом для создания сайта. Анализ сайтов учителей начальных классов.

    дипломная работа [2,1 M], добавлен 26.05.2014

  • Обзор методов и средств по созданию и проектированию Web–сайтов. Языки программирования для создания Web–сайтов. Анализ достоинств и недостатков систем управления сайтом CMS. Разработка дизайна и макета сайта. Расчет затрат на разработку продукта.

    дипломная работа [1,1 M], добавлен 02.06.2016

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.