Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Разработка сайта книжного интернет-магазина Гермес

Содержание:

ВВЕДЕНИЕ

Мы живем в эпоху перемен. Она совершенно меняет способы создания, публикации, сбора и использования информации. Это отражается на характере профессиональной, познавательной, развлекательной и других сфер деятельности людей. И в центре этих изменений находится Интернет.

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

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

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

На данный момент интернет-магазины представляют собой новую, но уже устоявшуюся систему реализации товаров или услуг. По сути эта система является более эффективной по сравнению со стандартным «физическим» магазином.

Тема данной курсовой работы – создание сайта книжного магазина. Основные задачи:

- закрепление теоретических знаний с дисциплины «Современные Интернет-технологии»;

- разработать структуру сайта;

- разработать удобный интерфейс для посетителей;

- разработать дизайн сайта;

- подобрать и обработать данные.

Тема курсового является очень актуальной в наше время, так как сегодня, интернет-магазины становятся одним из наиболее перспективных способов ведения и развития большого и малого бизнеса при снижении расходов и увеличении прибыли [1].

1 ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

1.1. Анализ технического задания

Разрабатывается интернет-магазин. Интернет-магазин (также называют «электронный магазин», «сетевой магазин», «e-shop», «internet-shop») – это интерактивный сайт с каталогом, в котором представляются товары и услуги, а также корзиной для формирования заказа [5].

В правильном интернет-магазине обязательно должны присутствовать: рекламируемые товары и услуги, возможность осуществить покупку.

Для решения поставленных задач были созданы:

- главная страница;

- регистрация;

- поиск;

- навигация по жанрам;

- корзина.

На главной странице предоставлен каталог товаров, которые покупатель может выбрать. Если клиент ищет определённую книгу – он может воспользоваться функцией поиска. В случае пожелания книги определённого жанра – поиском по категориям. Для осуществления покупки необходимо зарегистрироваться, после чего появится новый раздел в шапке сайта – корзина и выход (2.4).

1.2 Анализ принципов построения

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

- шапка;

- подвал;

- тело страницы;

Шапка содержит логотип, панель навигации. В тело страниц, будут загружаться данные из БД. В подвале находится разная информация, а также разные параметры страницы (в случае, если сайт находится в разработке).

1.3 Обоснование выбора языка программирования

Интернет магазин нужно реализовать на стороне сервера, так как ведется активная работа с БД. В этом случае используются серверные сценарии, построенные на таких технологиях как Ruby on Rails, SQLite и т.п.

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

Разработка операционной части.

Данный интернет магазин разрабатывается на языке программирования PHP. Для этого была выбрана среда разработки Denver.

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

Сегодня PHP используется сотнями тысяч разработчиков. Несколько миллионов сайтов написаны на PHP, что составляет более 20% доменов Internet.

Пользовательская часть будет реализована с помощью языков CSS и HTML.

CSS — формальный язык описания внешнего вида документа, написанного с использованием языка разметки[7].

Преимущественно используется как средство описания, оформления внешнего вида веб-страниц, написанных с помощью языков разметки HTML и XHTML, но может также применяться к любым XML-документам, например, к SVG или XUL.

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

HTML (от англ. HyperText Markup Language — «язык гипертекстовой разметки») — стандартизированный язык разметки документов во Всемирной паутине. Большинство веб-страниц содержат описание разметки на языке HTML (или XHTML). Язык HTML интерпретируется браузерами; полученный в результате интерпретации форматированный текст отображается на экране монитора компьютера или мобильного устройства.

Язык HTML был разработан британским учёным Тимом Бернерсом-Ли приблизительно в 1986—1991 годах в стенах ЦЕРНа в Женеве в Швейцарии. HTML создавался как язык для обмена научной и технической документацией, пригодный для использования людьми, не являющимися специалистами в области вёрстки. HTML успешно справлялся с проблемой сложности SGML путём определения небольшого набора структурных и семантических элементов — дескрипторов. Дескрипторы также часто называют «тегами». С помощью HTML можно легко создать относительно простой, но красиво оформленный документ. Помимо упрощения структуры документа, в HTML внесена поддержка гипертекста. Мультимедийные возможности были добавлены позже.

Изначально язык HTML был задуман и создан как средство структурирования и форматирования документов без их привязки к средствам воспроизведения (отображения). В идеале, текст с разметкой HTML должен был без стилистических и структурных искажений воспроизводиться на оборудовании с различной технической оснащённостью (цветной экран современного компьютера, монохромный экран органайзера, ограниченный по размерам экран мобильного телефона или устройства и программы голосового воспроизведения текстов). Однако современное применение HTML очень далеко от его изначальной задачи. Например, тег <table> предназначен для создания в документах таблиц, но часто используется и для оформления размещения элементов на странице. С течением времени основная идея платформонезависимости языка HTML была принесена в жертву современным потребностям в мультимедийном и графическом оформлении.

1.4 Анализ и сравнение выбранной БД

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

Факторы, влияющие на выбор СУБД, можно разделить на ряд групп. Прежде всего, можно выделить факторы, характеризующие функциональные возможности СУБД при решения поставленной задачи. Другая группа факторов связана с объемом баз данных, которые может обрабатывать выбрана СУБД. Третья группа связана с наличием средств проектирования приложений, а четвертая - с поддержкой современных языков программирования. Пятая группа связана с операционной системой, в среде которой может использоваться выбрана СУБД. Для сравнения различных СУБД был выбран Oracle, Microsoft SQL Server, Access, MySQL.

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

С технической точки зрения важно то, что Oracle работает практически на всех существующих компьютерных платформах, в том числе и на больших ЭВМ ( OS / 390 ) и на еще сохраняют популярность системах Vax VMS , не говоря уже о Windows NT и различных разновидностях Unix , в том числе Solaris, HP- UX , AIX , Linux, SCO Unix и т.д.

Другой важной характеристикой является поддержка Oracle всех возможных вариантов архитектуры, в том числе симметричных многопроцессорных систем, кластеров, систем с массовым параллелизмом и т.д. Очевидна значимость этих характеристик для систем масштаба корпорации, где эксплуатируется множество компьютеров различных моделей и производителей. В таких условиях фактором успеха является максимально возможная типизация предлагаемых решений, ставит целью существенное снижение стоимости владения программным обеспечением. Для персонального использования предназначен продукт Oracle Database Personal Edition (персональная редакция).

Что касается объемов информации, то максимальный объем базы данных Oracle Database XE составляет 12 гигабайт (Гб). Из них от 0.5 до 0.9 Гб используются словарем данных, внутренними схемами и временным дисковым пространством. Поэтому остается 11.0 ГБ данных.

Важнейшим преимуществом перед конкурентами Oracle является идентичность кода различных версий сервера баз данных Oracle для всех платформ, гарантирует идентичность и предсказуемость работы Oracle на всех типах компьютеров, которые не входили в ее состав. Все варианты сервера Oracle имеют в своей основе один и тот же исходный программный код и функционально идентичны, за исключением некоторых функций, которые, например, могут быть добавлены к Oracle Database Enterprise Edition и не могут - в Oracle Database Standard Edition.

СУБД Microsoft Access - наиболее широко используемая в среде Microsoft Windows реляционная СУБД, Microsoft Access - типичная СУБД для персональных компьютеров, обеспечивает хранение , сортировка и поиск данных для множества приложений. В СУБД Access для создания таблиц , запросов , форм и отчетов предусмотрен графический интерфейс пользователя ( Graphical User Interface - GUI) для разработки пользовательских приложений с базой данных является инструментальные средства, используемые макроязык Microsoft Access или речь VBA ( Microsoft Visual Basic for Applications ).Кроме того , в СУБД Access предусмотрены программы , называемые мастерами ( Wizards ) , которые упрощают многие процессы формирования приложений с базой данных , проводя пользователя через ряд диалоговых окон в вопрос- соответствующем режиме. В СУБД Access предусмотрены также конструкторы (Builders), которые могут помочь пользователю сформировать синтаксически правильные выражения, например операторы и макрокоманды языка SQL. СУБД Access поддерживает значительная часть стандарта языка SQL, а также стандарт Microsoft ODBC (Open Database Connectivity - открытый интерфейс доступа к базам данных), обеспечивает общий интерфейс для доступа к различным базам данных SQL, таким как Oracle и Informix. К ознакомлению с СУБД Microsoft Access необходимо рассмотреть объекты, которые способны помочь в разработке программы базы данных.

Пользователь взаимодействует с Microsoft Access и разрабатывает приложение базы данных, используя ряд объектов.

СУБД MySQL - свободная система управления базами данных. MySQL является собственностью компании Oracle Corporation, получившей ее вместе с поглощенной Sun Microsystems, которая осуществляет разработку и поддержку приложения. Распространяется под GNU General Public License и под собственной коммерческой лицензией, на выбор. Кроме этого разработчики создают функциональность по заказу лицензионных пользователей, именно благодаря такому заказу почти в самых первых версиях появился механизм репликации.

Эта система управления базами данных с открытым кодом была создана как альтернатива коммерческим системам. MySQL с самого начала была очень похожей на mSQL, однако со временем она все расширялась и сейчас MySQL - одна из самых распространенных систем управления базами данных. Она используется, в первую очередь, для создания динамических веб-страниц, поскольку имеет прекрасную поддержку со стороны различных языков программирования.

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

Гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц: пользователи могут выбрать как таблицы типа MyISAM, поддерживающие полнотекстовый поиск, так и таблицы InnoDB, поддерживающие транзакции на уровне отдельных записей. Более того, СУБД MySQL поставляется со специальным типом таблиц EXAMPLE, демонстрирующим принципы создания новых типов таблиц. Благодаря открытой архитектуре и GPL - лицензированию, в СУБД MySQL постоянно появляются новые типы таблиц. MySQL характеризуется большой скоростью, устойчивостью и простотой использования. Для данного проекта была выбрана СУБД MySQL.

1.5 Обоснование выбора ПО сервера

Денвер (от сокр. Д.н.w.р или ДНВР — джентльменский набор Web-разработчика) — набор дистрибутивов (локальный сервер WAMP) и программная оболочка, предназначенные для создания и отладки сайтов (веб-приложений, прочего динамического содержимого интернет-страниц) на локальном ПК (без необходимости подключения к сети Интернет) под управлением ОС Windows.

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

Третья версия поддерживает работу со съемного флеш-накопителя.

Особенностью, отличающей Denwer от других WAMP-дистрибутивов, является автоматическая правка системного файла hosts, являющегося локальным аналогом DNS-сервера, что позволяет обращаться к локальным сайтам, работающим под управлением Денвера, по именам, совпадающим с именем папки, расположенной в каталоге home Денвера.

Apache - это полнофункциональный, расширяемый веб-сервер, полностью поддерживающий протокол HTTP/1.1 и распространяющийся с открытым исходным кодом. Сервер может работать практически на всех распространенных платформах. Существуют готовые исполняемые файлы сервера для Windows NT, Windows 9x, OS/2, Netware 5.x и нескольких UNIX-систем. При этом он очень прост в установке и конфигурации.

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

Самая простая функция, которую может выполнять Apache – стоять на сервере и обслуживать обычный HTML-сайт. При получении запроса на определенную страницу сервер отправляет в ее ответ браузеру. Набираете адрес, открывается страница — все просто.

С помощью сервера Apache можно производить простую аутентификацию. С помощью штатных средств сервера Apache вы можете разграничить доступ к определенным страницам сайта для разных пользователей. Это нужно, например, для того чтобы сделать администраторский интерфейс к сайту. Для этого используются файлы .htaccess и .htpasswd, а также модули mod_auth и mod_access. Пользователи могут быть разбиты на группы, и для каждой из них можно назначить свои права доступа.

Сервер Apache поддерживает работу с технологией SSI для разделения дизайна и функциональной части сайта, а также для упрощения изменения статических объектов существует технология SSI*. Она позволяет вам поместить всю повторяющуюся информацию в один файл (например, top.inc), а затем вставлять в страницы ссылку на нее. Затем, если понадобится изменить несколько строк в этой информации, то придется поменять их только в одном файле. Сервер Apache поддерживает эту технологию и позволяет использовать серверные включения в полном объеме.

1.6 Схема работы сайта

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

Работа сайта происходит по следующей схеме:

- пользователь сделал запрос;

- серверный скрипт обрабатывает запрос;

- контроллеры являются связующим звеном между html-разметкой и "моделью", где модель у нас db.php;

- сохраняет результат в базе данных;

- серверный скрипт отправляет данные назад пользователю.

https://habrastorage.org/storage2/64c/838/bb9/64c838bb9594c7e28ebbc5c8b355500c.jpg

Рисунок 1.1 – Схема работы сайта

Рисунок 1.1 демонстрирует схему работы практически любого сайта. Такую схему работы ещё называют MVC. Шаблон проектирования MVC предполагает разделение данных приложения, пользовательского интерфейса и управляющей логики на три отдельных компонента: модель, представление и контроллер – таким образом, что модификация каждого компонента может осуществляться независимо.

2 РАЗРАБОТКА СТРУКТУРЫ ПОСТРОЕНИЯ

2.1 Построение структуры базы данных

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

Для сайта книжного интернет-магазина была разработана БД, имеющая таблицы books, category, basket, checkout, users. В первой таблице размещается информация о названии, авторе, содержании, цене и обложки книги books(id, name, autor, description, short_description, image, cost), тип данных полей int, varchar(255), text, прочие характеристики остались не тронутыми. Вторая таблица создана для осуществления сортировки по жанрам. Третья таблица содержит id книги и пользователя, для реализации корзины. Следующая таблица создана для оформления заказа, и соответственно users – содержит id, логин и пароль зарегистрированных пользователей.

В результате получили БД следующего вида:

books(id, name, author, description, image, cost, short_description,

cat_id, slag);

category(id, name, slag);

users (id, login, pass);

basket (book_id, user_id);

checkout (book_id, user_id, date).

2.2 Анализ архитектуры сайта

Архитектура сайта – систематизация информации и навигация по ней с целью помочь посетителям легко находить нужные им данные[5].

Рисунок 2.1 – Архитектура сайта-органайзера

Грамотно построенная архитектура обеспечивает быструю навигацию по сайту для пользователей.

Архитектура сайта должна быть проста и интуитивно удобна. И состоит из клиентской части и программной части.

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

    1. Разработка интерфейса

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

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

- средства отображения информации, отображаемая информация, форматы и коды;

- командные режимы, язык пользователь-интерфейс;

- устройства и технологии ввода данных;

-диалоги, взаимодействие и транзакции между пользователем и компьютером;

- обратная связь с пользователем;

- поддержка принятия решений в конкретной предметной области;

- порядок использования программы и документация на нее.

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

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

Чем проще выполнена верхняя часть страницы, тем легче запомнить название сайта и саму фирму.

Далее представлены скриншоты страниц:

Рисунок 2.3 – Шапка сайта

Рисунок 2.4 – Шапка сайта при осуществлённом входе

Рисунок 2.5 – Про сайт

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

Возле каждой книги имеются кнопочки позволяющие просмотреть полное описание книги либо купить её.

В случае выбора «детально» (2.6) сайт открывает страницу с просмотром книги. На ней присутствуют полное описание, обложка, цена, название книги и автор. Если же нажать «купить» книга заносится в корзину (2.7).

Рисунок 2.6 – Пример просмотра книги

Рисунок 2.7 – корзина

Рисунок 2.8 – Поиск

Рисунок 2.9 – Страница авторизации

Рисунок 2.10 – Регистрация пользователя

Для покупки книги, пользователю необходимо зарегистрироватся. Рисунок 2.10 демонстрирует пример неудачной регистрации. При удачном входе на сайт, шапка страницы преобразится (2.4). Как можно заметить, для осуществления покупок создана «Корзина», в неё пользователь добавляет все желаемые для покупки товары после чего может заказать их одним нажатием (2.7).

Рисунок 2.11 – Пример найденных книг по категории

Рисунок 2.12 – Навигация по жанрам

3 РАЗРАБОТКА ПРОГРАММНОЙ ЧАСТИ

3.1 Статические страницы

Статических страниц 2:

- Регистрация;

- Главная страница.

Так же на каждой странице есть шапка и подвал, в которых находятся ссылки на все страницы сайта.

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

Так выглядит партиал для шапки сайта, которая присутствует на всех страницах:

Листинг 3.1 – фрагмент из header.php

<div id="templatemo_menu">

<ul>

<li><a href="<?=$home_path;?>" class="current">Главная</a></li>

<?php

if($USER['ID']){?>

<li><a href="<?=$home_path;?>/basket">Корзина</a></li>

<li><a href="<?=$home_path;?>/logout">Выйти</a></li>

<?php

}else{?>

<li><a href="<?=$home_path;?>/registration">Регистрация</a></li>

<?php

}?>

</ul>

</div>

<div id="templatemo_header">

<div id="site_title">

<h1><a href="#"><img src="<?=$home_path;?>/images/ logo.png" alt="Site Title" />

<span>books store</span>

</a></h1>

</div>

<h2>Поиск</h2>

<div class="sidebar_section_content">

<form action="<?php echo $home_path.'/search'?>" method="get">

<input type="text" value="Enter a keyword..." name="q" size="25" id="searchfield" title="searchfield" onfocus="clearText(this)" onblur="clearText(this)" />

<input type="submit" name="Search" value="Поиск" alt="Search" id="searchbutton" title="Search" /></form>

<div class="cleaner"></div>

</div>

<h2>Жанры:</h2>

<div class="sidebar_section_content">

<ul class="categories_list">

<?php

foreach($categories_list as $cat){

?>

<li><a href="<?php echo $home_path.'/'.$cat['slag']?>"><?php echo $cat['name']?></a></li>

<?php

}?></ul></div></div></div>

3.2 Связь с БД

Модель используется для доступа и манипулирования данными. В большинстве случаев модель — это то, что используется для доступа к хранилищу данных (например, базе данных). Модель предоставляет интерфейс для поиска данных, их создания, модификации и удаления из хранилища.

Крайне важной чертой модели является то, что технически она не имеет никаких знаний ни о том, что происходит с данными в контроллере и представлении. Модель никогда не должна делать или ожидать каких-либо запросов в/из других компонентов паттерна.

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

Листинг 3.2 – bd.php

<?php

$db = mysql_connect ("localhost","root","") or die("Could not connect: " . mysql_error());

mysql_select_db ("mydb",$db)or die ('Can\'t use foo : ' . mysql_error());

mysql_set_charset('utf8',$db);

function query($sql)

{

$res=array();

$result=mysql_query($sql) or die ('Query error: ' . mysql_error());

if(is_resource($result)){

while ($row = mysql_fetch_assoc($result))

$res[]=$row;

mysql_free_result($result);

return $res;

}elseif($result==1){

return true;

}

}

3.3 Поиск

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

Листинг 3.3– фрагмент из srch.php

<h2>Поиск "<?php echo $query?>"</h2>

<?php

if(isset($error))

echo "<p>$error</p>";

?>

</div>

<div class="content_section <?php echo $page_type;?>">

<?php

if(isset($books[0])){

foreach($books as $book){

?>

<div class="product_box">

<h2><a href="<?php echo $home_path.'/'.$book["cat_slag"].'/'.$book["slag"]?>"><?php echo $book["name"] ;?></a></h2></div>

<?php

}

}else{

?>

<div class="product_box">

<div>Поиск не дал результатов</div>

</div>

Поиск по словам:

Листинг 3.4 – функция поиска

case 'search':

$query=stripslashes($_GET['q']);

$query=htmlspecialchars($query);

$query=mysql_real_escape_string($query);

$SQL="SELECT `books`.`id`, `books`.`name`,`books`.`slag`,`books`.`author`, `books`.`short_description`,`books`.`image`,`books`.`cost`, `category`.`slag` AS 'cat_slag', `category`.`name` AS 'cat_name' FROM `books`, `category` WHERE `books`.`cat_id`=`category`.`id` AND ((`books`.`name` Like '%".$query."%') or (`books`.`author` Like '%".$query."%') or (`books`.`short_description` Like '%".$query."%'))";

$books=query($SQL);

include_once "srch.php";

break;

}

Поиск по категориям:

Листинг 3.5 – фрагмент из cat.php

<h2>Категория: <?php echo $books[0]['cat_name']?></h2>

<?php

$first=true;

foreach($books as $book){

$class="";

$cleaner="";

if($first)

$class="margin_r40";

else

$cleaner="<div class=\"cleaner\"></div>";

?>

<div class="product_box <?php echo $class?>">

<div class="image_wrapper"><a href="#"><img src="<?php echo $book["image"] ;?>" alt="<?php echo $book["name"] ;?>" /></a></div>

<h3> <?php echo $book["name"] ;?></h3>

<p><?php echo $book["short_description"] ;?></p>

<p class="price">Цена: <?php echo $book["cost"] ;?>грн</p>

<a href="<?php echo $home_path.'/'.$book["cat_slag"].'/'.$book["slag"]?>">Детально</a> | <a href="<?php echo $home_path.'/basket/add?id='.$book["id"]?>">Купить</a>

</div>

<?php echo $cleaner?>

<?php

$first=!$first;

}

Листинг 3.6 – определение категории

case 'cat':

$category_slag=mysql_real_escape_string($query[1]);

$SQL="SELECT `books`.`id`, `books`.`name`,`books`.`slag`,`books`.`author`, `books`.`short_description`,`books`.`image`,`books`.`cost`, `category`.`slag` AS 'cat_slag', `category`.`name` AS 'cat_name' FROM `books`, `category` WHERE `books`.`cat_id`=`category`.`id` AND `category`.`slag`='$category_slag'";

$books=query($SQL);

include_once "cat.php";

break;

Данный листинг показывает выборку жанра книги по его id. Функция находится в index.php.

3.4 Страница регистрации

Принцип построения простой регистрации на сайте [1]:

Рисунок 3.1 – Схема работы страницы регистрации

При регистрации, вводятся пароль и его подтверждение, в то время как в базу данных сохраняется шифр пароля:

Листинг 3.7 – reg.php

<?php

include_once "header.php";

?>

<div class="content_section <?php echo $page_type;?>">

<form action="<?php echo $home_path.'/registration'?>" method="post">

<?php

if(isset($error))

echo "<p>$error</p>";

?>

<p>Email: <input id="login" name="login" placeholder="Email" type="text"/></p>

<p>Пароль: <input id="pass" name="password" placeholder="password" type="password"/></p>

<input type="submit" name="submit" value="Регистрация"/>

<input type="submit" name="submit" value="Вход"/>

</form>

<div class="cleaner"></div>

</div>

<?php

include_once "footer.php";

?>

Листинг 3.8 – Функция регистрации. Index.php

case 'registration':

if(isset($_POST['submit'])){

$data=array_map("stripslashes", $_POST);

$data=array_map("htmlspecialchars", $data);

$data=array_map("mysql_real_escape_string", $data);

extract($data);

$users=query("SELECT * FROM `users` WHERE `login`='$login' LIMIT 1");

if(isset($users[0]['login'])){$error="Пользователь с таким логином уже существует.";

include_once "reg.php";

break;

}else{

if(ifset($login)&&ifset($password))

query("INSERT INTO `mydb`.`users` (`id`, `login`, `pass`) VALUES (NULL, '$login', MD5('$password'))");

login($_POST['login'],$_POST['password']);

header("Location: ".$home_path);exit;}}

include_once "reg.php";

break;

case 'login':

if(isset($_POST['submit'])){

login($_POST['login'],md5($_POST['password']));

header("Location: ".$home_path);

exit;}

include_once "reg.php";

break;

case 'logout':

setcookie("login", null, -1,'/');

setcookie("password", null, -1,'/');

header("Location: ".$home_path);

exit;

break;

3.5 Страница авторизации

Листинг 3.9 – user.php

<?php

$USER['ID']=false;

if(ifset($_COOKIE['login'])&&ifset($_COOKIE['password'])){

$USER['ID']=login($_COOKIE['login'],$_COOKIE['password']);

if($USER['ID'])

$USER['login']=$_COOKIE['login'];

}

Данный код при попытке открыть страницу соответствующего сайта, проверяет Cookie, и в случае их наличия пытается осуществить авторизацию.

В случае если ничего не найдено выполняется следующая часть:

Листинг 3.10 – index.php

else{

if(ifset($login)&&ifset($password))

query("INSERT INTO `mydb`.`users` (`id`, `login`, `pass`) VALUES (NULL, '$login', MD5('$password'))");

login($_POST['login'],$_POST['password']);

header("Location: ".$home_path);

exit;

}

Листинг 3.11 – функция авторизации

function login($login,$password){

$id=false;

$login=stripslashes($login);

$login=htmlspecialchars($login);

$login=mysql_real_escape_string($login);

$password=stripslashes($password);

$password=htmlspecialchars($password);

$password=mysql_real_escape_string($password);

$users=query("SELECT id FROM `users` WHERE `login`='$login' and `pass`='$password' LIMIT 1");

if(ifset($users[0]['id'])){

$id=$users[0]['id'];

//$_SESSION['login']=$login;

//$_SESSION['password']=md5($password);

setcookie("login", $login, time()+60*60*24*30,'/');

setcookie("password", $password, time()+60*60*24*30,'/');

}

return $id;

}

3.6 Корзина

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

Листинг 3.12 – baskets.php

<h2>Корзина</h2>

<?php

if(isset($error))

echo "<p>$error</p>";

?>

<?php

$total=0;

if(isset($books[0])){

foreach($books as $book){

$total+=$book["cost"];

?>

<div class="product_box">

<h2><?php echo $book["name"] ;?></h2>

<p class="price">Цена: <?php echo $book["cost"] ;?>грн</p>

</div>

<?php

}

?>

<div class="product_box">

<p class="price">Общая цена: <?php echo $total;?>грн</p> </div>

<div class="product_box">

<p class="price"><a href="<?php echo $home_path.'/basket/clear'?>">Очистить корзину</a> | <a href="<?php echo $home_path.'/basket/checkout'?>">Оформить заказ</a></p> </div>

<?php

}else{

?>

<div class="product_box">

<div>Корзина пуста</div></div>

<?php

}

?>

<div class="cleaner"></div>

</div>

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

Листинг 3.13 – Добавление продукта в корзину

case 'add_to_basket':

if(!$USER['ID']){

$error="Необходима регистрация.";

include_once "reg.php";

break;

}

$book_id=stripslashes($_GET['id']);

$book_id=htmlspecialchars($book_id);

$book_id=mysql_real_escape_string($book_id);

$user_id=$USER['ID'];

query("INSERT INTO `mydb`.`basket` (`book_id`, `user_id`) VALUES ('$book_id', '$user_id')");

header("Location: ".$home_path.'/basket');

break;

Листинг 3.14 – Очищение корзины

case 'clear_basket':

if(!$USER['ID']){

$error="Необходима регистрация.";

include_once "reg.php";

break;

}

$user=$USER['ID'];

query("DELETE FROM `mydb`.`basket` WHERE `basket`.`user_id` = '$user'");

header("Location: ".$home_path.'/basket');

break;

Листинг 3.15 – Чек

case 'checkout':

if(!$USER['ID']){

$error="Необходима регистрация.";

include_once "reg.php";

break;

}

$user=$USER['ID'];

//INSERT INTO `mydb`.`checkout` (`book_id`, `user_id`, `date`) VALUES ('1', '2', '2016-06-08 00:00:00'), ('2', '2', '2016-06-08 00:00:00');

$SQL="SELECT `book_id` FROM `basket` WHERE `basket`.`user_id`='$user'";

$basket=query($SQL);

$date=date("Y-m-d H:i:s");

$SQL="INSERT INTO `mydb`.`checkout` (`book_id`, `user_id`, `date`) VALUES ";

foreach($basket as $item){

$SQL.=" ('".$item['book_id']."', '$user', '$date'),";

}

$SQL=substr($SQL, 0, -1);

query("DELETE FROM `mydb`.`basket` WHERE `basket`.`user_id` = '$user'");

query($SQL);

include_once "check.php";

break;

После подтверждения покупки в корзине, пользователь получает сообщение, в котором указано что заявка подана и будет рассмотрена.

Заключение

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

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

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

Научилась создавать динамические страницы, работать с БД, создавать пользовательский интерфейс.

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

ПЕРЕЧЕНЬ ССЫЛОК

  1. Вайнман Л., Динамический HTML: руководство разработчика Web-сайтов;
  2. Дригалкин В.В. HTML в примерах. Как создать свой Web-сайт. Самоучитель. Диалектика, 2003.
  3. Електронний посібник з WEB-технологій: режим доступу: http://www.intuit.ru/studies/courses/485/341/info
  4. Електронний посібник з HTML та CSS: режим доступу: http://www.intuit.ru/studies/courses/1005/276/info
  5. Интернет-университет информационных технологий www.intuit.ru
  6. Савельева Н.В. Основы программирования на PHP. Интернет-университет информационных технологий - ИНТУИТ.ру, 2005.
  7. Петюшкин А.В. HTML. Экспресс-курс.- СПб: БХВ-Петербург, 2003.- 256с.
  8. Храмцов П.Б., Брик С.А., Русак А.М., Сурин А.И. Основы web-технологий. Интернет-университет информационных технологий - ИНТУИТ.ру, 2003.