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

«Разработка сайта кинотеатра» . .

Содержание:

ВВЕДЕНИЕ

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

Целью этой курсовой работы является создание сайта для кинокомплекса «Родина» г. Норильска, соответствующего задачам, поставленным менеджментом предприятия и запросам жителей города Норильска.

Для этого необходимо создать сайт, отвечающий следующим требованиям:

- привлекательное оформление;

- удобство использования;

- быстрая загрузка (в силу низкой скорости доступа в Норильске);

- возможность быстрого обновления контента;

- возможность расширения функционала.

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

1. АНАЛИТИЧЕСКАЯ ЧАСТЬ

1.1 Цели и концепция Web-ресурса

1.1.1. Миссия компании

Муниципальное учреждение «Кинокомплекс «Родина» - первый городской кинотеатр Норильска и одно из старейших учреждений культуры заполярного города. Кинотеатр открылся 16 октября 1953 года и прошел долгий путь развития до наших дней, в течение которого менялись его задачи, подходы к работе и репертуар.

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

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

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

1.1.2. Обоснование необходимости создания нового Web-ресурса.

Чтобы идти в ногу со временем, МУ «Кинокомплекс «Родина» тестирует и использует технологические новшества, занимается обновлением технологий. Вслед за появлением собственных страниц в социальных сетях появилась необходимость в создании Интернет-ресурса кинокомплекса.

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

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

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

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

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

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

1.1.3. Описание свойств Web-ресурса, требуемых для решения выбранной задачи.

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

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

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

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

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

1.1.4. Характеристика целевой аудитории.

Целевой аудиторией веб-ресурса будут жители города Норильска от 8-9 лет и старше. При этом возраст основной аудитории будет от 10 до 30 лет, это дети, подростки, взрослые, семейные пары и родители. Соотношение количества мужчин и женщин в предполагаемой аудитории будет приблизительно равным, возможно с небольшим перевесом в сторону женщин из-за их большей социальной активности.

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

1.1.5. Характеристика и анализ Web-ресурсов по аналогичной тематике.

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

  • расписание;
  • анонсы;
  • ожидаемые и уже проведенные акции и мероприятия;
  • о нас / контакты.

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

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

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

1.2. Параметры и внешний вид Web-ресурса.

1.2.1. Обоснование выбора имени и названия Web-ресурса.

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

  • родина
  • кинотеатр
  • кино
  • фильм
  • кинокомплекс

Поиск по доменам в доменной зоне .RU показал, что все приемлемые имена уже заняты. Повторный поиск в кириллической зоне .РФ дал удовлетворительный результат, было найдено и утверждено руководством кинотеатра свободное имя домена «кино-родина.рф».

Этот домен будет в дальнейшем использоваться учреждением для размещения сайта и дополнительных сервисов.

1.2.2. Обоснование лингвистического обеспечения Web-ресурса

Основным и единственным языком предоставления информации на сайте выбран русский язык. Этот выбор обосновывается тем фактом, что посетителями ресурса, а также потребителями услуг кинокомплекса «Родина» являются жители города Норильска, практически на 100% русскоговорящее.

1.2.3. Обоснование выбора графического режима Web-ресурса.

Выбор графического режима обусловлен предпочтениями и возможностями оборудования посетителей сайта. В настоящий момент норильчане заходят на Интернет-сайты в основном с персональных компьютеров, рабочих или домашних. Рабочие компьютеры во многих предприятиях и организациях, особенно государственных, не отличаются высокими характеристиками, часто встречаются мониторы с разрешением 1024х768 или 1366х768 пикселей. Соответственно, для удобного просмотра ширина страницы должна быть меньше 960 пикселей, с учетом полосы прокрутки браузера. Этот размер также должен быть удобен для просмотра страницы с планшета в альбомной ориентации, поскольку большинство планшетов сейчас имеют разрешение экрана 1280х720 пикселей или больше. При просмотре на экранах с большим разрешением предполагается использовать свободное пространство для размещения модулей, рекламирующих или анонсирующих новые фильмы или проходящие в кинотеатре акции.

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

1.2.4. Обоснование принятых решений по цветовой схеме Web-ресурса.

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

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

1.2.5. Обоснование принятых решений по размеру и виду шрифта.

Шрифт – это самый сложный и интересный из всех выразительных средств в распоряжении Web-дизайнера. Ни одна работа не обходится без шрифтовых заголовков, надписей, логотипов. Поэтому выбор шрифтов и текстовых стилей можно назвать одной из самых ответственных фаз работы над сайтом.

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

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

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

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

1.2.6. Обоснование принятых решений по формированию фирменного стиля.

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

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

Созданный сайт обладает собственным стилем и является возможным, хотя и не обязательным вектором для развития стиля кинотеатра в целом.

1.3. Обоснование выбора инструментария для создания Web-ресурса.

1.3.1. Обоснование технологии получения и размещения информационного наполнения Web-ресурса.

Источниками информации для сайта являются:

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

1.3.2. Обоснование выбранных технологий для обеспечения совместимости Web-ресурса с различными браузерами.

Основными технологиями, используемыми для верстки сайтов в настоящее время можно назвать язык гипертекстовой разметки HTML (Hypertext Markup Language), язык декларации стилей CSS (Cascading Style Sheet), язык программирования JavaScript, который используется в большинстве браузеров для создания динамических элементов страницы с помощью манипуляции объектами документа и браузера (Document Object Model). Все эти технологии и будут применяться при верстке сайта кинотеатра «Родина».

Самые популярные на текущий момент браузеры, такие как Google Chrome, Mozilla Firefox, Microsoft Edge поддерживают данные технологии полностью, в частности ими поддерживаются следующие стандарты и технологии:

  • CSS2 и CSS3;
  • JavaScript;
  • XHTML и HTML5.

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

При верстке сайтов необходимо учитывать, что разработчики многих браузеров объявили о прекращении поддержки технологии Adobe Flash в ближайшем будущем, следовательно сложные динамические элементы страниц должны изготавливаться с помощью HTML5, WebGL и других актуальных технологий. На сайте кинотеатра модули Adobe Flash использоваться не будут, для баннеров и динамических блоков в дальнейшем будет использоваться верстка HTML5.

Таким образом, сайт кинокомплекса «Родина» должен будет корректно отображаться подавляющим большинством используемых в настоящее время браузеров.

1.3.3. Обоснование выбора программного обеспечения для создания Web-ресурса.

1.3.3.1. Обоснование выбора программных продуктов для создания графики.

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

Перечислим и опишем самые популярные графические редакторы, которые используют дизайнеры для создания макетов сайтов:

  • Adobe Photoshop. Этот редактор является фактическим стандартом в обработке растровой графики. Векторные инструменты также присутствуют, однако для полноценной работы с векторной графикой их пока недостаточно, их можно считать вспомогательными. Редактор очень популярен для создания макетов сайтов, хотя в этой конкретной области его функционал несколько избыточен. Стоимость по подписке через Creative Cloud составляет от 599 рублей в месяц.
  • CorelDRAW. Вероятно, самый популярный векторный редактор. К сожалению, в связи с особенностями отображения графики и ориентированностью больше на полиграфический дизайн, в этом редакторе не так удобно готовить графику для Интернет-проектов. Редактор стоит от $130 за версию для домашнего и учебного использования.
  • Adobe Illustrator. Еще один крайне популярный векторный редактор от компании Adobe. Он значительно удобнее для создания Интернет-графики, чем CorelDRAW. Кроме этого присутствуют функции переноса векторных объектов в программу Photoshop, что позволяет произвести финишную обработку макета там. Как и Photoshop предоставляется по подписке по цене от 599 рублей в месяц.
  • GIMP. Бесплатный мощный растровый редактор, который задумывался как альтернатива Adobe Photoshop и в значительное мере позаимствовал оттуда функционал. Основными недостатками являются непривычные клавиатурные команды и несколько нестандартная работа различных инструментов, хотя к этим особенностям легко привыкнуть.
  • Krita. Новый бесплатный растровый редактор, с богатым функционалом, активно развивающийся и завоевывающий все больше поклонников. Отличные инструменты для рисования, редактирования изображений и многое другое, что требуется профессиональным дизайнерам, делают его все более популярным среди дизайнеров, фотографов и web-разработчиков.
  • Sketch. Векторный редактор, ориентированный на дизайн интерфейсов и векторные объекты. Очень быстрый и легкий в работе, при этом обладающий широкими возможностями. Готовые работы можно экспортировать как в векторном (SVG), так и в растровом форматах. Стоимость программы составляет $99, что для профессионального специализированного инструмента не дорого.

В работе над дизайном сайта использовались два инструмента: программы Sketch и Krita. Возможности больших пакетов, таких как Adobe Photoshop и Adobe Illustrator в данном конкретном случае были явно избыточными - требовалось сделать небольшой эскиз в векторном формате и доработать его в растровом редакторе. По стечению обстоятельств, на момент начала работы редактор Sketch уже был приобретен, а для финишной и художественной обработки был выбран Krita, как бесплатный и эффективный для этих целей инструмент.

1.3.3.2. Обоснование выбора программных продуктов для создания анимации.

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

В дальнейшем предполагается рассмотреть использование программных пакетов Adobe Animate и Hype, которые могут создавать интерактивные и анимированные блоки и приложения на основе языка разметки HTML5.

1.3.3.3. Обоснование выбора СУБД.

Для хранения и обработки информации web-сайтов и web-приложений чаще всего применяются базы данных использующие язык запросов SQL. В настоящее время практически все современные системы совместимы со стандартом языка SQL-92 и поддерживают кодировку UTF-8, что позволяет выбирать нужную систему на основе архитектурных особенностей и дополнительных возможностей. Приведем характеристики наиболее популярных среди web-разработчиков СУБД:

MySQL - это самая распространенная полноценная серверная СУБД. MySQL очень функциональная, свободно распространяемая СУБД, которая успешно работает с различными сайтами и веб приложениями. Хорошо документирована.

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

Преимущества MySQL:

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

Недостатки MySQL:

  • Известные ограничения - по задумке в MySQL заложены некоторые ограничения функционала, которые иногда необходимы в особо требовательных приложениях, но для большинства сайтов и web-приложений это не критично.
  • Проблемы с надежностью - из-за некоторых способов обработки данных MySQL (связи, транзакции, аудиты) иногда уступает другим СУБД по надежности.
  • Медленная разработка - хотя MySQL технически открытое ПО, существуют жалобы на процесс разработки. Стоит заметить, что существуют другие довольно успешные СУБД созданные на базе MySQL, например MariaDB.

PostgreSQL. Является самый функциональной и стабильной из бесплатных СУБД. Она свободно распространяется и максимально соответствует стандартам SQL. В СУБД PostgreSQL стараются полностью применять ANSI/ISO SQL стандарты своевременно с выходом новых версий.

От других СУБД PostgreSQL отличается поддержкой востребованного объектно-ориентированного и/или реляционного подхода к базам данных. Например, полная поддержка надежных транзакций и принципов Atomicity, Consistency, Isolation, Durability (ACID). Благодаря мощным технологиям PostgreSQL очень производительна. Параллельность достигнута не за счет блокировки операций чтения, а благодаря реализации управления многовариантным параллелизмом (MVCC), что также обеспечивает соответствие ACID. PostgreSQL очень легко расширять с помощью хранимых процедур, они упрощают использование постоянно повторяемых операций.

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

Достоинства PostreSQL:

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

Недостатки PostgreSQL:

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

После анализа возможностей различных СУБД, в качестве принято решение для сайта кинокомплекса «Родина» использовать СУБД MariaDB, являющуюся ответвлением от MySQL. MariaDB появилась как ответ на проблемы возникшие с лицензированием и процессом разработки СУБД MySQL у корпорации Oracle. В настоящее время MariaDB набирает популярность и рекомендуется как полная замена MySQL практически всеми web-разработчиками и создателями дистрибутивов Linux.

1.3.3.4. Обоснование выбора программных продуктов для создания программного кода.

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

PHP (Hypertext PreProcessor, препроцессор гипертекста) – язык программирования, исполняемый на стороне веб-сервера, спроектированный Расмусом Лердорфом в качестве инструмента создания динамических и интерактивных веб-сайтов.

Этот язык оказался достаточно гибким и мощным, поэтому приобрёл большую популярность и используется в проектах любого масштаба: от простого блога до крупнейших веб-приложений в Интернете:

Преимущества PHP:

  • является свободным программным обеспечением, распространяемым под особой лицензией (PHP license);
  • легок в освоении на всех этапах;
  • поддерживается большим сообществом пользователей и разработчиков;
  • имеет развитую поддержку баз данных;
  • имеется огромное количество библиотек и расширений языка;
  • может использоваться в изолированной среде;
  • предлагает нативные средства организации веб-сессий, программный интерфейс расширений;
  • в значительной степени способен заменить ASP от Microsoft;
  • может быть развёрнут почти на любом сервере;
  • портирован под большое количество аппаратных платформ и операционных систем.

Недостатки PHP:

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

Ruby – динамический императивный объектно-ориентированный язык программирования, разработанный Юкихиро Матсумото. Ruby был создан под влиянием таких языков, как Perl, Eiffel и Smalltalk.

Он характеризуется динамической типизацией и автоматическим управлением памятью. Язык Ruby используется в веб-разработке в составе открытого веб-фреймворка Rails, чаще называемого Ruby on Rails (RoR):

Преимущества Ruby:

  • открытая разработка;
  • работает на многих платформах;
  • может внедряться в HTML-разметку;
  • относится к языкам программирования сверхвысокого уровня (VHLL), то есть обладает высоким уровнем абстракции и предметным подходом в реализации алгоритмов;
  • реализует концептуально чистую объектно-ориентированную парадигму;
  • предоставляет продвинутые методы манипуляции строками и текстом;
  • легко интегрирует в свои программы высокопроизводительные серверы баз данных (DB2, MySQL, Oracle и Sybase);
  • благодаря принципам VHLL программы на Ruby хорошо масштабируются и легко сопровождаются;
  • простой и чистый синтаксис значительно облегчает программистам первые шаги в обучении этому языку;
  • имеется простой программный интерфейс для создания многопоточных приложений;
  • имеет продвинутые средства для работы с массивами;
  • возможности языка можно расширить при помощи библиотек, написанных на C или Ruby;
  • зарезервированные слова могут являться идентификаторами, если это не создаёт неоднозначности для парсера;
  • дополнительные возможности для обеспечения безопасности;
  • встроенный отладчик.

Недостатки Ruby:

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

Python широко применяется как интерпретируемый язык для скриптов различного назначения (хотя существуют и трансляторы языка Python).

Как и Ruby, Python имеет целью приблизить синтаксис реальной программы, написанной на нём, к описывающему задачу псевдокоду, что позволяет программисту уменьшить объём программы. Идея создания данного языка возникла в конце 1980-х и была реализована Гвидо ван Россумом.

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

Преимущества Python:

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

Недостатки Python:

  • не слишком удачная поддержка многопоточности, ;
  • на Python создано не так уж много качественных программных проектов по сравнению с другими универсальными языками программирования, например, с Java;
  • тесты производительности показывают меньшую скорость Python по сравнению с основными Java VM, что создаёт этому языку репутацию медленного.

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

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

1.4. Обоснование выбора способа размещения Web-ресурса в Интернет.

Размещение сайтов и web-приложений в сети Интернет в настоящее время не является проблемой. Приведем самые популярные варианты размещения сайтов:

  • Размещение на собственном компьютере. Этот вариант несет скорее образовательное значение, поскольку на собственном компьютере размещаются либо сайты находящиеся в разработке и отладке, либо очень небольшие личные проекты, поскольку перебои в электропитании, проблемы с оборудованием или Интернет-подключением мгновенно приводят к отключению ресурса.
  • Размещение на сервере в организации. Этот вариант более приемлем, поскольку мы можем самостоятельно следить за параметрами сервера, питания, нагрузкой на сетевое соединение и так далее. Основной проблемой в данном случае является качество и ширина канала до провайдера. Тем не менее, в Норильске этот вариант достаточно популярен, поскольку организации размещают сайт не только для доступа через Интернет, но и через городскую сеть провайдера, где скорости передачи данных намного выше.
  • Размещение на бесплатном хостинге. Вариант удобен отсутствием затрат и короткими сроками получения места для размещения сайта, это происходит зачастую в автоматическом режиме. Доступен широкий выбор доменных имен, но чаще всего третьего или четвертого уровня. В большинстве случаев бесплатные хостинги предлагают или готовые CMS (системы управления контентом) такие как Wordpress, или не дают возможности использовать серверные приложения вовсе.
  • Размещение на платном виртуальном хостинге. Используется вид хостинга, при котором множество веб-сайтов расположено на одном веб-сервере и все они используют общие ресурсы. Это самый экономичный вид хостинга, подходящий для большинства проектов. В случае виртуального хостинга сайту выделяется определенный объем жесткого диска и ставится условие не превышать заранее определенный процент ресурсов производительности (оперативной памяти и процессорного времени). Клиенту доступна только панель управления площадкой индивидуальная по возможностям для каждого хостера. Это наиболее популярные вид хостинговых услуг и для подавляющего большинства сайтов его будет достаточно.
  • Размещение на платном виртуальном сервере (так называемом VPS — Virtual Private Server, или иногда VDS — Virtual Dedicated Server). В рамках этой услуги пользователю предоставляется так называемый виртуальный выделенный сервер. По возможностям управления программной средой (операционной системой и подключаемыми модулями) она практически соответствует физическому выделенному серверу. Хостер, как правило, предоставляет выбор операционной системы, на которой должен работать ваш виртуальный выделенный сервер. В отличие от размещения собственного или арендуемого оборудования в случае виртуального сервера вы получаете ограничения по  предоставляемым ресурсам (оперативная память, процессорное время, память на жестких дисках).
  • Размещение сайта на собственном или арендованном физическом сервере с постоянным подключением к высокоскоростному каналу интернет и техническим контролем оборудования. В рамках такой услуги клиенту, как правило, предоставляется место в стойке, энергопитание, постоянное высокоскоростное  подключение к Интернет и физическая защита сервера. Выбор сервера и его программной среды, а также обслуживание программной среды — задача клиента или предмет дополнительных соглашений. Этот вариант размещения наиболее затратный.

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

2. ПРОЕКТНАЯ ЧАСТЬ

2.1. Структура и содержание сайта.

2.1.1.Разделы сайта и система навигации.

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

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

С точке зрения юзабилити (удобства использования) навигация по сайту должна отвечать на три вопроса:

  1. На какой странице находится пользователь сейчас?
  2. Какие страницы ему доступны?
  3. И, в случае, если страниц много, какие страницы он уже посетил?

Структура сайта кинокомплекса «Родина» очень простая. Ознакомиться с ней можно на рисунке 1:

Навигация%20сайта.png

Рис. 1. Структура сайта кинокомплекса «Родина».

Как показано на рисунке, структура является фактически одноуровневой, вложенные разделы пока не предусмотрены.

На главной странице размещаются последние новости и анонсы фильмов и мероприятий.

На странице «расписание сеансов» выкладывается расписание сеансов кинокомплекса на ближайшие 1-2 недели.

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

Страница «Информация» содержит общую информацию об учреждении и официальные данные.

На странице «Акции» публикуется актуальная информация по доступным акциям, сезонным скидкам и размещаются интерактивные элементы, например голосование и опросы.

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

2.1.2.Функциональные и технические требования.

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

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

  • Новости. На сайте должны размещаться анонсы фильмов, анонсы мероприятий, оповещения об изменении расписания, ценовой политике и так далее. Эта информация должна обновляться часто, по мере ее поступления, и быть всегда актуальной.
  • Расписание сеансов. Самый важный раздел сайта, большинство посетителей зайдут на сайт, чтобы посмотреть именно эту информацию. Расписание должно быть предоставлено в достаточной перспективе, не менее дух недель, чтобы люди смогли планировать свой досуг заранее. Глубина этой перспективы ограничивается здравым смыслом (более полутора-двух месяцев уже не будет востребовано) и возможностью заранее составить и утвердить план, который не потребует последующих корректировок. Оптимальным кажется расписание на 1-2 недели вперед.
  • Каталог фильмов. Этот раздел будет способствовать повышению интереса к показываемым фильмам. Как показывает практика, кинозрители не знают заранее о многих картинах, которые попадают в прокат, поэтому о каждом фильме требуется опубликовать описание, которое будет доступно по ссылка из расписания сеансов или просто в соответствующем разделе.
  • Раздел с официальной информацией о кинотеатре. Наличие этого раздела определяется необходимостью для кинокомплекса, как для муниципального учреждения, публиковать официальную информацию и документы в сети Интернет.
  • Информацию о проходящих и анонсированных акциях и мероприятиях, организаторами или участниками которых является кинокомплекс «Родина».
  • Обработка статистики посещаемости сайта и отдельных страниц. Необходимо для понимания эффективности сайта, как информационного канала, а также для получения данных о потенциальной заинтересованности в тех или иных фильмах.

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

2.1.3. Эскиз сайта.

Эскизы сайта представлены на рисунках 2 и 3 в виде снимков экрана действующего прототипа сайта. На рисунках видна стилистика оформления, функциональные модули, система навигации сайта.

screenshot1.png

Рис. 2. Эскиз главной страницы сайта.

screenshot2.png

Рис. 3. Эскиз сайта – расписание сеансов.

screenshot3.png

Рис. 4. Эскиз сайта – раздел фильмов.

screenshot4.png

Рис. 5. Эскиз сайта – нижняя часть страницы раздела фильмов.

screenshot5.png

Рис. 6. Эскиз сайта – раздел общей информации.

screenshot6.png

Рис. 7. Эскиз сайта – страница с информацией о фильме
«Три икса: мировое господство»

screenshot7.png

Рис. 8. Эскиз сайта – нижняя часть страницы с информацией
об анимационном фильме «Балерина»

2.1.4. Описание программных модулей.

Для сайта кинокомплекса «Родина» все серверные модули были полностью написаны с нуля на языке программирования PHP. Системы управления контентом не использовались.

Вот некоторые из разработанных программных модулей:

- index.php - модуль выборки и отображения новостей;

- films.php модуль отображения информации о фильмах;

- seances.php - модуль отображения расписания сеансов;

- adm.php - административный модуль для создания и редактирования информации сайта;

- parser.php - модуль автоматического получения и обработки расписания из файла формата Microsoft Excel.

С исходным кодом одного из модулей и его функций можно ознакомиться в Приложении 2 к работе.

2.1.5. Описание процедуры тестирования созданного Web-ресурса.

Тестирование сайта выполнялось на виртуальном хостинге с использованием web-сервера Apache с установленными пакетами PHP 5.6 и MariaDB 10. Вывод ошибок для программ PHP был принудительно включен.

Производилось тестирование по следующим параметрам:

- правильное отображение верстки страницы;

- корректная работа навигации;

- правильная работа серверных скриптов без ошибок в коде;

- получение нужной информации из базы данных MariaDB.

В ходе тестирования ошибок выявлено не было, сайт функционирует нормально.

Во время тестирования был сделан снимок экрана (рисунок 9), подтверждающий работоспособность сайта на тестовой площадке (http://www.mucbs.ru/rodina):

screenshot1test.png

Рис. 9. Снимок экрана с сайтом, работающим на тестовой площадке.

2.2. Разработка рекламной кампании по продвижению Web-ресурса в Интернет.

2.2.1. Формирование массива ключевых слов для поиска Web-ресурса в поисковых системах.

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

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

Семантическое ядро составляется с помощью:

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

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

В случае сайта кинокомплекса «Родина» список ключевых запросов и семантическое ядро будет довольно простыми:

  • Норильск кино
    • Кино
    • Фильмы
    • Ночной сеанс
    • Фильмы Норильск
    • Кино в Норильске
    • Норильск мультики
    • Норильск мультфильмы
    • Что посмотреть в Норильске
    • Норильск блокбастер
    • Норильск куда пойти
  • Родина Норильск
    • Родина в Норильске
    • Кинотеатр Родина
    • Кинокомплекс Родина
    • Родина на Ленинском
    • Родина фильмы
    • Родина расписание
    • Родина

2.2.2. Описание технологии продвижения созданного Web-ресурса в среде Интернет.

При выборе инструментов продвижения Web-ресурса в Интернете учитывались следующие факторы:

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

Исходя из этого были выбраны следующие инструменты продвижения сайта:

  1. Поисковая оптимизация и регистрация сайта в поисковых системах Google и Yandex.
  2. Публикация информации в социальных сетях с ссылками на сайт кинокомплекса.
  3. Публикация информации на городских форумах с ссылками на сайт кинокомплекса
  4. Размещение информации о сайте на печатной раздаточной продукции.
  5. Публикация информации в группах мессенджера WhatsApp
  6. Размещение информации о сайте кинокомплекса на сайте городской администрации Norilsk-city.ru

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

ЗАКЛЮЧЕНИЕ

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

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

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

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

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

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

- Krita – растровый редактор изображений;

- Sketch – векторный редактор изображений и интерфейсов;

- Atom – редактор программного кода и гипертекстовой разметки.

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

- XHTML;

- CSS2;

- JavaScript;

- PHP.

Выбор технологий был сделан с учетом максимальной простоты написания и совместимости, а также легкости дальнейшей поддержки. Из этих же соображений для хранения и обработки данных была выбрана СУБД MariaDB.

Изготовленный сайт решает поставленные задачи полностью.

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

  1. MySQL. Руководство администратора. Вильямс, 2015;
  2. Люк Веллинг, Лора Томсон. Разработка Web-приложений с помощью PHP и MySQL. Вильямс, 2013;
  3. Internet-энциклопедия «Википедия»: http://ru.wikipedia.org/;
  4. Энциклопедия HTML: http://htmlbook.ru/;
  5. Современный учебник Javascript: http://learn.javascript.ru/;
  6. Руководство по PHP: http://php.net/manual/;
  7. Грэди Буч, Роберт А. Максимчук. Объектно-ориентированный анализ и проектирование с примерами приложений. ОРейли, 2013
  8. Welling L., Thomson L. PHP and MySQL Web Development (6th Edition). Addison-Wesley Professional, 2014
  9. Пьюривал С. Основы разработки веб-приложений. СПб: Питер, 2015
  10. Shklar L., Rosen R. Web Application Architecture: Principles, Protocols and Practices (2nd Edition). Wiley, 2013

Приложение 1.

Скриншоты разработанного сайта.

Прототип сайта: http://www.mucbs.ru/rodina/

screenshot1.pngscreenshot2.pngscreenshot3.pngscreenshot4.pngscreenshot5.pngscreenshot6.pngscreenshot7.png

Приложение 2.

Листинг программы модуля и дополнительных функций для показа информации о фильмах. Вызов функций происходит из модуля films.php.

Листинг файла films.php

<?php

$php_functions_folder = "/home/dukkru/www/php_funct_dir";

$page_title = "films";

$path_separator = "/";

$forward_arrow_link = "none";

$back_arrow_link = "none";

include_once ($php_functions_folder.$path_separator."common_settings.php");

// Кадр из фильма должен быть 232 x 146

$request_method = $HTTP_SERVER_VARS["REQUEST_METHOD"];

if (strcmp($request_method, "GET") == 0) { $IN_VARS =& $HTTP_GET_VARS; }

else { $IN_VARS =& $HTTP_POST_VARS; }

?>

<html>

<head>

<title>Кинокомплекс &quot;Родина&quot; - Подробнее о фильмах</title>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

<?php include ($php_functions_folder.$path_separator."image_preload.php"); ?>

<link href="dukk.css" rel="stylesheet" type="text/css">

</head>

<body bgcolor="#6E2A23" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">

<div align="left">

<table cellpadding="0" cellspacing="0" border="0" height="100%">

<tr>

<td width="211" background="images/left_background.gif" valign="top">

<div><img src="images/image1.gif" alt="" width="211" height="92" border="0"></div>

<?php include ($php_functions_folder.$path_separator."site_menu.php"); ?>

<br>

<div><table cellpadding="0" cellspacing="0" border="0" width="156" >

<tr>

<td width="10">

<div><img src="images/void.gif" width="10" height="1"></div>

</td>

<td width="146" valign="top">

<?php include ($php_functions_folder.$path_separator."films_alphabet.php"); ?>

<?php include ($php_functions_folder.$path_separator."films_today_and_tomorrow.php"); ?>

</td>

</tr>

</table></div>

</td>

<td width="566" valign="top" rowspan="2">

<div><table cellpadding="0" cellspacing="0" border="0" width="566" height="179">

<tr>

<td width="75"><img src="images/image2.gif" alt="" width="75" height="179" border="0"></td>

<td width="491" background="images/promo_background.gif"><div><img src="images/void.gif" alt="" width="491" height="1" border="0"></div></td>

</tr>

</table></div>

<div><img src="images/void.gif" width="1" height="25"></div>

<?php

// Мы попробуем посмотреть, хотим ли мы посмотреть список или информацию по фильму

// Сначало проверка на фильм

if (isset ($IN_VARS["film_id"]) && ((strlen ($IN_VARS["film_id"]) <= 8) && (strlen ($IN_VARS["film_id"]) >= 1)) && ereg ("([0-9]{1,8})", $IN_VARS["film_id"], $id_parts) && (strlen ($id_parts[1]) == strlen ($IN_VARS["film_id"]))) {

// Мы получили приятный film_id

include ($php_functions_folder.$path_separator."film_info_output.php");

}

else {

// тогда надо выводить сеансы

include ($php_functions_folder.$path_separator."films_list_output.php");

}

?>

<br><br>

</td>

</tr>

<tr>

<td width="211" background="images/left_background.gif" valign="bottom"><br><br><br><img src="images/materials_comments.gif">

</td>

</tr>

<?php include ($php_functions_folder.$path_separator."site_footer.php"); ?>

</table>

</div>

</body>

</html>

Листинг файла common_settings.php

<?php

$mysql_db_name = "dukk";

$mysql_host = "10.1.32.104";

$mysql_username = "dukk";

$mysql_password = "12345678";

$time_correction = 0;

?>

Листинг файла site_menu.php

<div><table cellpadding="0" cellspacing="0" border="0" width="211" height="197" background="images/menu_background.gif">

<tr>

<td width="131" valign="top">

<div align="right"><?php if(strcmp ($page_title,"news") == 0) { echo '<img src="images/menu_star.gif" align="top"><img src="images/menu_news_off.gif" alt="" width="65" height="24" border="0">'; } else { echo '<a href="index.php" onmouseover="mover(0)" onmouseout="mout(0)"><img src="images/menu_news_off.gif" alt="" border="0" name="i0"></a>'; } ?></div>

<div align="right"><?php if(strcmp ($page_title,"seances") == 0) { echo '<img src="images/menu_star.gif" align="top"><img src="images/menu_seances_off.gif" alt="" width="89" height="37" border="0">'; } else { echo '<a href="seances.php" onmouseover="mover(1)" onmouseout="mout(1)"><img src="images/menu_seances_off.gif" alt="" border="0" name="i1"></a>'; } ?></div>

<div align="right"><?php if(strcmp ($page_title,"films") == 0) { echo '<img src="images/menu_star.gif" align="top"><img src="images/menu_films_off.gif" alt="" width="63" height="26" border="0">'; } else { echo '<a href="films.php" onmouseover="mover(2)" onmouseout="mout(2)"><img src="images/menu_films_off.gif" alt="" border="0" name="i2"></a>'; } ?></div>

<div align="right"><?php if(strcmp ($page_title,"info") == 0) { echo '<img src="images/menu_star.gif" align="top"><img src="images/menu_info_off.gif" alt="" width="94" height="27" border="0">'; } else { echo '<a href="info.php" onmouseover="mover(3)" onmouseout="mout(3)"><img src="images/menu_info_off.gif" alt="" border="0" name="i3"></a>'; } ?></div>

</td>

<td width="80" valign="bottom"><?php

if(strcmp ($page_title,"news") == 0) { echo '<img src="images/menu_news_icon.gif" alt="" border="0">'; }

if(strcmp ($page_title,"seances") == 0) { echo '<img src="images/menu_seances_icon.gif" alt="" border="0">'; }

if(strcmp ($page_title,"films") == 0) { echo '<img src="images/menu_films_icon.gif" alt="" border="0">'; }

if(strcmp ($page_title,"info") == 0) { echo '<img src="images/menu_info_icon.gif" alt="" border="0">'; }

?></td>

</tr>

</table></div>

Листинг файла films_alphabet.php

<?php

// Выводим информацию на сегодняшний и завтрашний день

include_once ($php_functions_folder.$path_separator."functions".$path_separator. "select_films_by_date.php");

$letter_string = "АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЫЭЮЯ";

$mysql_link = mysql_connect ($mysql_host, $mysql_username, $mysql_password) or error_handler ("Could not connect to database");

mysql_select_db ($mysql_db_name, $mysql_link);

$mysql_request = "SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL $time_correction HOUR),'%Y-%m-%d'), DATE_FORMAT(DATE_ADD(DATE_ADD(NOW(), INTERVAL $time_correction HOUR), INTERVAL 1 DAY), '%Y-%m-%d')";

$mysql_result = mysql_query ($mysql_request, $mysql_link);

list ($date_today, $date_tomorrow)= mysql_fetch_row ($mysql_result);

echo "<div align=\"right\" class=\"titlebar\">КАТАЛОГ ФИЛЬМОВ</div>";

echo "<div align=\"right\" class=\"film_list\"><a href=\"films.php?section=list&film_letter=new\" class=\"textlink\">Новые фильмы</a></div>";

echo "<div align=\"right\" class=\"film_list\"><a href=\"films.php?section=list&film_letter=all\" class=\"textlink\">Все фильмы</a><br><br></div>";

echo '<div align="right"><table cellpadding="0" cellspacing="3" border="0"><tr>';

$alphabet_counter = 0;

for ($letter_loop = 0; $letter_loop < strlen ($letter_string); $letter_loop++) {

if ($alphabet_counter == 6) { echo '</tr><tr>'; $alphabet_counter = 0; }

$alphabet_counter ++;

$letter_sign = substr ($letter_string, $letter_loop, 1);

$letter_code_loop = $letter_loop;

echo "<td><a href=\"films.php?section=list&film_letter=$letter_code_loop\" class=\"textlink\">$letter_sign</a></td>";

}

echo '</tr></table></div>';

echo "<div align=\"right\" class=\"film_list\"><a href=\"films.php?section=list&film_letter=dig\" class=\"textlink\">0-9 и другие знаки</a></div><br>";

mysql_close ($mysql_link);

?>

Листинг файла films_today_and_tomorrow.php

<?php

// Выводим информацию на сегодняшний и завтрашний день

include_once ($php_functions_folder.$path_separator."functions".$path_separator. "select_films_by_date.php");

$mysql_link = mysql_connect ($mysql_host, $mysql_username, $mysql_password) or error_handler ("Could not connect to database");

mysql_select_db ($mysql_db_name, $mysql_link);

$mysql_request = "SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL $time_correction HOUR),'%Y-%m-%d'), DATE_FORMAT(DATE_ADD(DATE_ADD(NOW(), INTERVAL $time_correction HOUR), INTERVAL 1 DAY), '%Y-%m-%d')";

$mysql_result = mysql_query ($mysql_request, $mysql_link);

list ($date_today, $date_tomorrow)= mysql_fetch_row ($mysql_result);

mysql_close ($mysql_link);

SelectFilmsByDate($date_today, "ФИЛЬМЫ СЕГОДНЯ");

echo '<br>';

SelectFilmsByDate($date_tomorrow, "ФИЛЬМЫ ЗАВТРА");

?>

Листинг файла film_info_output.php

<?php

// Мы должны вывести две аннотации к двум фильмам

// сначала напишем функцию для для двух дней.

// Сначала нам надо проверить, есть ли сегодня хоть какие-то фильмы, нам надо по-крайней мере 2 фильма

include_once ($php_functions_folder.$path_separator."functions".$path_separator. "prep_str_to_mysql.php");

$film_id_to_mysql = PrepStrToMysql ($IN_VARS["film_id"]);

$mysql_link = mysql_connect ($mysql_host, $mysql_username, $mysql_password) or error_handler ("Could not connect to database");

mysql_select_db ($mysql_db_name, $mysql_link);

$mysql_request = "SELECT _FILM_ID, _FILM_NAME, _FILM_NAME_ORIGIN, _FILM_DIRECTOR, _FILM_ACTORS, _FILM_REVIEW, _FILM_FULL_REVIEW, _FILM_SITE, _FILM_REVIEW_URL FROM _films WHERE _FILM_ID=$film_id_to_mysql";

$mysql_result = mysql_query ($mysql_request, $mysql_link);

$num_of_films = mysql_num_rows ($mysql_result);

list ($film_id, $film_name, $film_name_origin, $film_director, $film_actors, $film_review, $film_full_review, $film_site, $film_review_url)= mysql_fetch_row ($mysql_result);

echo '<div><table cellpadding="0" cellspacing="0" border="0" width="541" height="33" background="images/titlebar.gif">

<tr><td width="30"><img src="images/void.gif" width="30" height="1"></td>

<td><div class="titlebar">ИНФОРМАЦИЯ ПО ФИЛЬМУ</div></td></tr>

</table></div>';

echo '<div><table cellpadding="0" cellspacing="0" border="0" width="526">

<tr><td width="14"><img src="images/void.gif" alt="" width="14" height="1" border="0"></td>

<td><br>';

echo '<div><table cellpadding="0" cellspacing="0" border="0">

<tr>

<td valign="top" rowspan="2">

';

echo "<div class=\"film_title\">$film_name</div>\n";

if (isset ($film_name_origin) && (strlen ($film_name_origin) > 0)) {

echo "<div class=\"titlebar\">($film_name_origin)</div>";

}

// echo '<br>';

if (isset ($film_director) && (strlen ($film_director) > 0)) {

echo "<div class=\"textnormal\"><b>Режиссер</b>: $film_director</div>";

}

if (isset ($film_actors) && (strlen ($film_actors) > 0)) {

echo "<div class=\"textnormal\"><b>Роли исполняли (дублировали)</b>: $film_actors</div>";

}

if (isset ($film_site) && (strlen ($film_site) > 0)) {

echo "<div class=\"textnormal\"><b>Официальный сайт</b>:<br><a href=\"$film_site\" target=\"_new\" class=\"textlink\">$film_site</a></div>";

}

if (isset ($film_review) && (strlen ($film_review) > 0)) {

echo "<div class=\"text\"><b>Краткий анонс</b>:<br>$film_review</div>";

}

if (isset ($film_full_review) && (strlen ($film_full_review) > 0)) {

echo "<div class=\"text\"><b>Полное описание</b>:<br>$film_full_review</div>";

}

if (isset ($film_review_url) && (strlen ($film_review_url) > 0)) {

echo "<div class=\"textnormal\"><b>Источник описания</b>:<br><a href=\"$film_review_url\" class=\"textlink\">$film_review_url</a></div>";

}

$mysql_request = "SELECT _IMAGE_ID FROM _film_images WHERE $film_id=_FILM_ID ORDER BY _TITLE_IMAGE";

$mysql_result = mysql_query ($mysql_request, $mysql_link);

$num_of_films = mysql_num_rows ($mysql_result);

if ($num_of_films > 0) {

echo '<img src="images/void.gif" width="230" height="1" alt="" border="0">';

echo ' </td>';

echo ' <td background="images/vdiv_background.gif" valign="top"><img src="images/vdiv_top.gif"></td>

<td valign="top" rowspan="2" width="230">';

// Выводим все картинки

$images_counter = 0;

while (list ($image_id)= mysql_fetch_row ($mysql_result)) {

echo '<div><table cellpadding="0" cellspacing="0" border="0">';

echo "<tr><td background=\"image_view.php?image_id=$image_id\">";

echo '<img src="images/frame.gif" border="0" alt=""></td></tr></table></div>';

$images_counter ++;

if ($images_counter != $num_of_films) {

echo '<br>';

}

echo '<div>';

}

echo ' </td></tr>

<tr><td valign="bottom" background="images/vdiv_background.gif"><img src="images/vdiv_bottom.gif"></td>

';

}

else {

echo '</td>';

}

echo' </tr></table></div>';

echo '</td></tr></table></div>';

mysql_close ($mysql_link);

?>

Листинг файла films_list_output.php

<?php

// Мы должны вывести две аннотации к двум фильмам

// сначала напишем функцию для для двух дней.

// Сначала нам надо проверить, есть ли сегодня хоть какие-то фильмы, нам надо по-крайней мере 2 фильма

$letter_string = "АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЫЭЮЯ";

if ((!isset ($IN_VARS["film_letter"])) || (strlen ($IN_VARS["film_letter"]) == 0) || ((strlen ($IN_VARS["film_letter"]) > 3) || (strlen ($IN_VARS["film_letter"]) < 1))) {

$film_letter = "new";

$where_statement = "";

$limit_statement = " LIMIT 20";

$title_films_list = "СПИСОК 20 ПОСЛЕДНИХ ДОБАВЛЕННЫХ ФИЛЬМОВ";

}

else {

if (strcmp ($IN_VARS["film_letter"], "all") == 0) {

$film_letter = "all";

$where_statement = "";

$limit_statement = "";

$title_films_list = "СПИСОК ВСЕХ ФИЛЬМОВ В БАЗЕ";

}

elseif (strcmp ($IN_VARS["film_letter"], "dig") == 0) {

$film_letter = "dig";

$where_statement = " WHERE _FILM_NAME REGEXP '^[^А-Я]'";

$limit_statement = "";

$title_films_list = "СПИСОК ФИЛЬМОВ НАЧИНАЮЩИХСЯ НА ЦИФРУ ИЛИ ЗНАК";

}

elseif (ereg ("([0-9]{1,3})", $IN_VARS["film_letter"], $letter_parts) && (strlen ($letter_parts[1]) == strlen ($IN_VARS["film_letter"])) && ($IN_VARS["film_letter"] <= (strlen ($letter_string) - 1) )) {

$film_letter = substr ($letter_string, $IN_VARS["film_letter"], 1);

// elseif ((strlen ($IN_VARS["film_letter"]) == 1) && (substr_count ($letter_string, $IN_VARS["film_letter"]) > 0)) {

// $film_letter = $IN_VARS["film_letter"];

$where_statement = " WHERE _FILM_NAME REGEXP '^[$film_letter]'";

$limit_statement = "";

$title_films_list = "СПИСОК ФИЛЬМОВ НАЧИНАЮЩИХСЯ БУКВУ '$film_letter'";

}

else {

$film_letter = "new";

$where_statement = "";

$limit_statement = " LIMIT 20";

$title_films_list = "СПИСОК 20 ПОСЛЕДНИХ ДОБАВЛЕННЫХ ФИЛЬМОВ";

}

}

echo '<div><table cellpadding="0" cellspacing="0" border="0" width="541" height="33" background="images/titlebar.gif">

<tr><td width="30"><img src="images/void.gif" width="30" height="1"></td>

<td><div class="titlebar">';

echo "$title_films_list</div></td></tr>

</table></div>";

echo '<div><table cellpadding="0" cellspacing="0" border="0" width="526">

<tr><td width="14"><img src="images/void.gif" alt="" width="14" height="1" border="0"></td>

<td><br>';

$mysql_link = mysql_connect ($mysql_host, $mysql_username, $mysql_password) or error_handler ("Could not connect to database");

mysql_select_db ($mysql_db_name, $mysql_link);

$mysql_request = "SELECT _FILM_ID, _FILM_NAME, _FILM_NAME_ORIGIN, _FILM_REVIEW from _films$where_statement ORDER BY _FILM_ADDING_DATE DESC$limit_statement";

$mysql_result = mysql_query ($mysql_request, $mysql_link);

while (list ($film_id, $film_name, $film_name_origin, $film_review)= mysql_fetch_row ($mysql_result)) {

print "<div class=\"text\"><img src=\"images/dot.gif\" alt=\"\" border=\"0\"><a href=\"films.php?film_id=$film_id\" class=\"textlink\">$film_name ($film_name_origin)</a><br><br>$film_review</div><br>";

}

echo '</td></tr></table></div>';

mysql_close ($mysql_link);

?>

Листинг файла site_footer.php

<?php

// Футер для Родины

?>

<tr>

<td width="211" background="images/left_background.gif" valign="bottom" height="62">

<div><a href="mailto:contact@isfactory.ru"><img src="images/if_image.gif" alt="Написать письмо на 'Фабрику Идей'" width="166" height="62" border="0"></a><img src="images/if_image2.gif" alt="" width="45" height="62" border="0"></div>

</td>

<td width="566" valign="top" background="images/foot_image.gif" height="62"><div><img src="images/void.gif" alt="" width="1" height="16" border="0"></div>

<div><img src="images/void.gif" alt="" width="14" height="1" border="0"><a href="mailto:rodina@dukk.ru"><img src="images/footicon_mail.gif" alt="Основной почтовый ящик кинотеатра 'Родина'" width="66" height="29" border="0"></a><img src="images/void.gif" alt="" width="295" height="1" border="0"><?php

if (strcmp ($back_arrow_link, "none") != 0) {

echo "<a href=\"$back_arrow_link\"><img src=\"images/footicon_back.gif\" border=\"0\" alt=\"\"></a>";

}

else {

echo "<img src=\"images/void.gif\" border=\"0\" alt=\"\" width=\"79\" height=\"1\">";

}

if (strcmp ($forward_arrow_link, "none") != 0) {

echo "<a href=\"$forward_arrow_link\"><img src=\"images/footicon_forward.gif\" border=\"0\" alt=\"\"></a>";

}

?></div></td>

</tr>