Помощь в написании студенческих работ
Антистрессовый сервис

Применение языка PHP, СУБД MySQL и фреймворка CodeIgniter для разработки динамических веб-сайтов

КурсоваяПомощь в написанииУзнать стоимостьмоей работы

Динамический сайт — сайт, в котором возможно изменять содержимое страниц сайта, не прибегая к программированию. Каждая отображаемая страница таких сайтов основана на шаблонной структуре, в которую вставляется постоянно меняющееся информационное наполнение. Чаще всего оно хранится в базе данных (БД). Когда пользователь запрашивает страницу, соответствующая информация извлекается из базы… Читать ещё >

Применение языка PHP, СУБД MySQL и фреймворка CodeIgniter для разработки динамических веб-сайтов (реферат, курсовая, диплом, контрольная)

  • 1. Введение
  • 2. Выбор программного обеспечения
  • 3. Разработка структуры базы данных
  • 3.1 ER-диаграмма
  • 3.2 Создание БД с помощью PHPMyAdmin
  • 4. Фреймворк Codeigniter. Настройка и совмещение c веб-сервером XAMPP
  • 5. Разработка шаблонов и главной страницы
  • 6. Создание каталога
  • 6.1 Список категорий
  • 6.2 Список товаров
  • 7. Поиск по названию товара
  • 8. Заключение
  • 9. Список литературы
  • 10. Приложение
  • 10.1 Структура таблиц БД
  • 10.2 Header. php
  • 10.3 Footer. php
  • 10.4 Catalog. Php
  • 10.5 Catalogmodel. php
  • 10.6 Categorydetails. php
  • 10.7 Search. Php
  • 10.8 Images. Php
  • 10.9 Pages. php

1. Введение

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

Статичеcкий сайт — это набор статических HTML-страниц (HyperText Markup Language). Каждая страница создается вручную, сохраняется и загружается на сервер. Когда требуется изменить содержание такой страницы, редактор вручную изменят его и снова загружает на сервер.

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

Курсовая работа посвящена возможностям применения языка PHP, системы управления базами данных (СУБД) MySQL, фреймворка CodeIgniter для разработки динамических веб-сайтов. Апробация данных технологий проводится на примере создания фронт-части (front-end) веб-сайта для сети мебельных магазинов «Комфорт+». Реализация данного сайта в виде динамического позволит обновлять информацию по мере движения товара, сократить ручную работу (можно быстро увеличивать количество информационного наполнения сайта), достичь максимальной поддержки посетителей и клиентов, внедрить дополнительные возможности (поиск, сравнение моделей товаров, интернет-магазин и т. д.).

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

2. Выбор программного обеспечения

Для разработки веб-сайта могут быть использованы такие языки программирования, как PHP (наиболее популярный среди веб-программистов), PERL, C, C++, Java и другие. При создании сайта использовался язык PHP, так как он обладает следующими преимуществами:

· Бесплатное распространение.

· Традиционность. Код PHP похож на тот, который встречается в типичных программах на С или Pascal. Это заметно снизило начальные усилия при его изучении.

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

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

· Гибкость. РНР является встраиваемым (embedded) языком. Он может встраиваться не только в HTML, но и интегрироваться в JavaScript, WML, XML и другие языки. PHP не зависит от веб-обозревателя, не содержит кода, ориентированного на конкретный веб-сервер.

· Наличие дополнительных библиотек.

Для тестирования проекта использовался веб-сервер XAMPP (http://www.apachefriends.org/en/xampp.html). В отличие от других программных продуктов (WAMP (http://www.wampserver.com), LAMP (http://hosting. agava.ru/vps/lamp. shtml), Denwer (http://www.denwer.ru]), XAMPP обладает следующими достоинствами:

· Работа со всеми 32-х разрядными ОС Microsoft (98/2000/XP/2003/Vista/7).

· Бесплатное распространение.

· Может обслуживать динамические страницы.

· XAMPP идет с множеством других модулей, включая OpenSSL и PHPMyAdmin.

· Простой интерфейс.

Для хранения информации на сайте был сделан выбор в пользу реляционной системы управления базами данных (СУБД). Под базами данных (БД) понимаются системы хранения и обработки данных, для доступа к которым используется язык SQL (Structured Query Language). Существует множество различных СУБД. Наиболее известными являются Oracle, MS SQL Server, MySQL, Firebird. Для создания веб-сайта была выбрана СУБД MySQL, так как обладает следующими достоинствами:

Бесплатное распространение.

Высокая скорость при использовании в связке с языком PHP.

Гибкость (поддержка большого количества типов таблиц).

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

Наиболее известными фреймворками для PHP являются CakePHP (http://www.cake-php.ru), Kohana (http://kohanaframework.org), CodeIgniter (http://www.codeigniter.ru), Zend (http://www.framework. zend.com). Все они направлены на помощь разработчику и каждый из них имеет свои плюсы и минусы.

Для создания веб-сайта выбор был сделан в пользу CodeIgniter, так как он обладает следующим достоинствами:

Бесплатное распространение.

Документация. В сети Интернет есть сайты, которые посвящены фреймворку CodeIgniter (в том числе и англоязычные). На этих сайтах есть огромное количество нужной информации.

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

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

Совместимость с PHP. CodeIgniter написан совместимым с PHP4. Может работать с PHP5, но он не пользуется всеми родными возможностями, которые есть в пятой версии.

3. Разработка структуры базы данных

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

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

Во все таблицы можно добавлять записи, удалять их, делать поиск по таблицам и выводить нужную информацию. Все эти действия выполняются с помощью SQL (Structured Query Language) запросов SELECT, DELETE, CREATE, INSERT.

3.1 ER-диаграмма

Исходя из требований к созданию веб-сайта, была составлена структура БД.

Центральным объектом в ER-диаграмме (Рис.1) разрабатываемого сайта является таблица products.

Рис. 1. ER-диаграмма.

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

3.2 Создание БД с помощью PHPMyAdmin

Для работы с БД и разработки ее структуры и наполнения существует большое количество приложений, в частности, PHPMyAdmin, MySqlManager, MySQL Administrator, MySQL GUI Tools и другие. Из всех приложений для работы с базой данных выбор был сделан в пользу PHPMyAdmin, так как он обладает следующими преимуществами:

Бесплатное распространение. PHPMyAdmin является свободно распространяемым продуктом.

Актуальность. Большинство разработчиков используют PHPMyAdmin в качестве приложения для работы с СУБД.

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

Наличие документации. Существует огромное количество пособий по работе с PHPMyAdmin.

Входит в состав стадартной поставки веб-сервера XAMPP.

Для работы с PHPMyAdmin, необходимо выполнить следующую последовательность действий:

1. С помощью XAMPP запустить MySql;

2. Перейти на страницу с PHPMyAdmin (http://localhost/phpmyadmin);

3. Создать пользователя, который сможет работать с созданной БД, обладая всеми привилегиями. Во вкладке привилегии добавить нового пользователя (Рис.2).

Рис. 2. Добавление нового пользователя.

4. Заполнить поле имя пользователя, в поле хост выбрать localhost, создать пароль (Рис.3).

Рис. 3. Форма заполнения.

5. Выбрать все глобальные привилегии (Рис.4).

Рис. 4. Глобальные привилегии.

На главной странице PHPMyAdmin в поле «Новая база данных» необходимо вписать название БД «shop» . Для создания таблиц в поле «Создать новую таблицу в базе данных shop» , вписать названия таблиц. Для заполнения нужной таблицы, выбрать её название и нажать на вкладку «Вставить» .

4. Фреймворк Codeigniter. Настройка и совмещение c веб-сервером XAMPP

Основой работы CodeIgniter является использование подхода MVC (Model-View-Controller, Рис.5) — архитектура программного обеспечения, в которой модель данных приложения, пользовательский интерфейс и управляющая логика разделены на три отдельных компонента, так, что модификация одного из компонентов оказывает минимальное воздействие на другие. Шаблон MVC позволяет разделить данные, представление и обработку действий пользователя на три отдельных компонента.

Контроллер (Controller) отправляет запрос в модель (Model), которая изменяет своё состояние и предоставляет данные (обычно для View). Представление (View) отвечает за отображение информации. Поведение (Controller) интерпретирует данные, которые вводились пользователем, и информируют модель и представление о необходимости соответствующей реакции. Примером в данном случае может служить следующая последовательность: catalog/categorydetails/1. В этом примере контроллер catalog загружает модель categorydetails, которая в свою очередь принимает id категории и в соответствии с ней выводит все товары, принадлежащие этой категории.

Рис. 5. MVC-модель.

Без применения CodeIgniter и дополнительных библиотек, содержащих регулярные выражения, ссылки, по которым осуществляется переход на другие страницы, будут иметь примерно такой вид: http://mathmod. aspu.ru/? id=2. Такие ссылки непонятны пользователю и плохо запоминаются. С помощью CodeIgniter, возможно построение ЧПУ — понятного для человека представления URL (Uniform Resource Locator). Например, catalog/categorydetails/1 — в этой ссылке каждый сегмент имеет своё значение: catalog — контроллер, к которому идёт обращение, categorydetails — метод соответствующего контроллера, 1 — переменная, передающаяся в указанный метод (в данном случае при переходе по этой ссылке будет отображена категория с идентификатором «1»). Использование таких ссылок даёт несколько преимуществ. Помимо того, что эти ссылки будут легко запоминаемы, они оказывают влияние на выдачу сайта в поисковых системах.

В корневой папке установленного веб-сервера XAMPP есть подпапка с названием «htdocs» .

В эту папку необходимо сохранить распакованный архив с фреймворком CodeIgniter. В результате получился такой список файлов (Рис.6)

Рис. 6. Список файлов.

В каталоге system/application находятся все созданные контроллеры (папка controllers), модели (папка models), представления (папка views). В корень папки htdocs помещаются папки css, images, fancybox, в которых находятся css файлы для сайта, все графические файлы и библиотека fancybox соответственно.

Для правильной организации работы с CodeIgniter, были произведены некоторые изменения. В файле application/config/database. php необходимо указать имя пользователя и пароль для доступа к БД веб-сайта. В файле autoload. php поменять строку $autoload ['libraries'] = array (`database');. C помощью этой строки происходит автоматическое подключение библиотеки database, входящей в состав CodeIgniter. Он ответственен за работу БД. Эта библиотека будет находиться в автозагрузке, поэтому при обращении каждый раз к сайту, будет автоматически устанавливаться связь с базой. В этом же файле нужно изменить строку $autoload ['helper'] = array ('url');. Этот хелпер содержит функции, позволяющие упростить работу с URL.

5. Разработка шаблонов и главной страницы

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

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

В соответствии со стандартами HTML страницы должны содержать определение типа документа (DOCTYPE). DOCTYPE сообщает валидатору веб-обозревателя версию HTML для проверки синтаксиса.

Различные варианты указания DOCTYPE могут привести к различным вариантам отображения страницы в веб-обозревателях.

Итак, написание кода для веб-страницы начинается с указания стандартов:

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

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

Для реализации данной возможности применялись библиотеки jQuery и FancyBox. jQuery — javascript библиотека, которая делает разработку javascript кода намного быстрее, проще и приятнее.

Рис. 7. Фотогалерея товаров.

Далее представлен код для подключения библиотек jQuery и FancyBox:

Для выбора фотографий из БД, в модели (GetImage) был использован следующий SQL-запрос:

SELECT * FROM image, productsWHERE products. id_product=image. id_product ORDER BY RAND () LIMIT 5" ;

В этом запросе из таблиц image и products выбираются все значения, в которых id товара из таблицы products совпадает с id товара из таблицы image. Так как таких фотографий будет много и они должны выбираться произвольно, в запрос добавляется функция RAND () и ставится ограничение на вывод 5 фотографий.

Подключение видов происходит так

$this->load->view ('header'); // подключение верхней части страницы

.

$this->load->view ('footer'); // подключение нижней части страницы

В верхнем шаблоне создаётся таблица, в которой будет выводиться основная часть сайта, закрывается она в нижнем шаблоне. Так как сайт в последствии будет перемещён с локального сервера, в каждой строке с добавлением ссылки или картинки необходимо писать код PHP <? php echo $this->config->item ('base_url');? >. Таким образом каждый раз при написании такого кода будет добавляться base_url (http://localhost/), который был введён в файле config. php.

В самом начале файла footer. php закрываются все таблицы из header. php. Все ссылки обрабатываются отдельным контроллером.

6. Создание каталога

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

Рис.8. Работа с каталогом.

6.1 Список категорий

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

Рис.9. Каталог.

Чтобы предоставить пользователю возможность с любой страницы сайта просмотреть нужную ему категорию, список категорий помещается в header. php. Для этого в контроллере catalog. php нужно создать функцию, которая будет использовать модель catalogmodel. php. В этой модели содержится следующий запрос: SELECT * FROM categories. В нём из таблицы с категориями выбираются все поля и передаются в контроллер. В контроллере подгружается header. php, в который передаются все параметры взятые с запроса. В header. php для вывода списка категорий необходимо открыть следующий цикл

foreach ($categories as $category)

{

echo '

  • ";

    echo "

    ";

    echo '

    ';

    echo "

    ";

    echo "

    ";

    echo "

    ";

    echo "

    ";

    echo "

    ";

    echo "

    ";

    echo "

    ";

    echo "

    ";

    echo "

    ";

    echo "

    ";

    echo "

    ";

    echo "

    Название: ". $product ['name_product']. "Модель: ". $product ['model']. "Цена: ". $product ['cost']. "руб.Высота: ". $product ['hight']. "Длина: ". $product ['weight']. "Ширина: ". $product ['length']. "
    ";

    Для предоставления посетителю возможности ознакомиться с новыми поступлениями, на главной странице выведены 3 товара из БД, у каждого из которых есть дата добавления в таблицу (Рис.10). Именно по этой дате выбираются более "свежие" товары. Делается это с помощью SQL-запроса:

    SELECT * FROM products, image

    WHERE products. id_product=image. id_product

    order by date desc

    limit 0,3

    Рис.10. Новые поступления.

    Так же покупателю дана возможность ознакомиться на главной странице со скидками на некоторые товары. Так как скидок может быть много, выводится всего 3 товара со скидками (Рис.11).

    Рис.11. Скидки.

    SQL-запрос для вывода товаров со скидками выглядит следующим образом:

    SELECT * FROM discount, products, image

    WHERE discount. discount>0

    AND discount. id_product=products. id_product

    AND products. id_product=image. id_product

    limit 0,3

    В этом запросе из таблиц discount, products, image берутся все поля, у которых есть скидки и совпадают id товаров. Так как скидок может быть много, ставится ограничение на вывод в главной странице.

    7. Поиск по названию товара

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

    Чтобы пользователь имел возможность внести желаемую строчку с названием товара, была создана форма (Рис.12). Для обработки этой формы создана функция search, которая подгружает модель GetSearch. В модели реализован SQL-запрос:

    SELECT * FROM products, image

    WHERE name_product

    LIKE '%$text%'

    AND products. id_product=image. id_product

    В этом запросе сравниваются имена товаров с введённым текстом и наиболее похожие выводятся в представлении (Рис.13).

    Рис.12. Форма поиска.

    Рис.13. Пример работы поиска.

    8. Заключение

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

    · Язык программирования PHP.

    · Фреймворк CodeIgniter.

    · Веб-сервер XAMPP.

    · Реляционная система управления БД MySQL.

    · Приложение PHPMyAdmin.

    · Библиотека jQuery и плагин FancyBox.

    С помощью этих инструментов значительно сокращена ручная работа. Например, в отличие от других фреймворков, в CodeIgniter большая часть работы - это создать контроллер, загрузить библиотеки, получить данные из модели и отправить результат в вид. С помощью такого подхода значительно сокращён повторяющийся код. Чтобы добиться ЧПУ без применения CodeIgniter и дополнительных библиотек, необходимо вносить много изменений в файл. htaccess. Таким образом, затрачено меньше времени на разработку сайта. Всё информационное наполнение сайта находится в БД. С помощью PHPMyAdmin можно быстро наполнить её новыми товарами и эти товары будут включены в сайт без изменения кода. Пользователю, посетившему данный сайт, предоставляется возможность просмотреть список категорий, который выводится на любой странице. При переходе по выбранной категории, он может ознакомиться с товарами, а именно узнать характеристики, цены. С помощью плагина FancyBox можно посмотреть фотографию с товаром в уменьшенном и полноразмерном виде. На разработанном сайте организован поиск по названию товара. Для удобства работы, с любой страницы можно перейти на главную.

    9. Список литературы

    1. Томсон Л., Веллинг Л. Разработка Web-приложений на PHP и MySql. ДиаСофтЮП, 2003. - 672с.

    2. Документация по CodeIgniter [Электронный ресурс] - Режим доступа: http://www.code-igniter.ru, свободный.

    3. Мануал по PHP.

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

    10.1 Структура таблиц БД

    Созданная БД выглядит следующим образом:

    Структура таблицы `categories`

    CREATE TABLE IF NOT EXISTS `categories` (

    `id_category` int (200) NOT NULL AUTO_INCREMENT,

    `category` varchar (200) NOT NULL,

    PRIMARY KEY (`id_category`)

    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=10;

    Дамп данных таблицы `categories`

    INSERT INTO `categories` (`id_category`, `category`) VALUES

    (1, 'Кухни'),

    (6, 'Мягкая мебель'),

    (2, 'Детские'),

    (3, 'Кровати'),

    (4, 'Прихожие'),

    (5, 'Стенки');

    Структура таблицы `clients`

    CREATE TABLE IF NOT EXISTS `clients` (

    `id` int (100) NOT NULL AUTO_INCREMENT,

    `name` varchar (100) NOT NULL,

    `surname` varchar (100) NOT NULL,

    `e-mail` varchar (100) NOT NULL,

    `password` varchar (20) NOT NULL,

    `phone` int (20) NOT NULL,

    PRIMARY KEY (`id`)

    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3;

    Дамп данных таблицы `clients`

    INSERT INTO `clients` (`id`, `name`, `surname`, `e-mail`, `password`, `phone`) VALUES

    (1, 'Nikolai', 'Efimov', 'luch@mail.ru', '000', 2147483647),

    (2, 'Boris', 'Zaycev', 'zayac@inbox.ru', '777', 225588);

    Структура таблицы `discount`

    CREATE TABLE IF NOT EXISTS `discount` (

    `id_discount` int (200) NOT NULL AUTO_INCREMENT,

    `discount` int (100) NOT NULL,

    `id_product` int (100) NOT NULL,

    PRIMARY KEY (`id_discount`)

    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3;

    Дамп данных таблицы `discount`

    INSERT INTO `discount` (`id_discount`, `discount`, `id_product`) VALUES

    (1, 15,2),

    (2, 50,4);

    Структура таблицы `image`

    CREATE TABLE IF NOT EXISTS `image` (

    `id_product` int (200) NOT NULL,

    `pic` longtext COLLATE utf8_unicode_ci NOT NULL,

    `picb` longtext COLLATE utf8_unicode_ci NOT NULL,

    PRIMARY KEY (`id_product`)

    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

    Дамп данных таблицы `image`

    INSERT INTO `image` (`id_product`, `pic`, `picb`) VALUES

    (1, 'elona015. jpg', 'elona015b. jpg'),

    (4, '1spalnaya olha. jpg', '1spalnaya olhab. jpg'),

    (3, '1spalnaya dub. jpg', '1spalnaya dubb. jpg'),

    (2, 'elona020. jpg', 'elona020b. jpg'),

    (5, 'elona020. jpg', 'elona020b. jpg'),

    (6, 'elona095. jpg', 'elona095b. jpg'),

    (7, 'elonadub. jpg', 'elonadubb. jpg'),

    (8, 'elonaolha. jpg', 'elonaolhab. jpg'),

    (9, 'krovat. jpg', 'krovatb. jpg'),

    (10, 'krovat. jpg', 'krovatb. jpg'),

    (11, 'elonakrovat. jpg', 'elonakrovatb. jpg'),

    (12, 'elonadubkrovat. jpg', 'elonadubkrovatb. jpg'),

    (13, 'elona026. jpg', 'elona026b. jpg'),

    (14, 'elona028. jpg', 'elona028b. jpg'),

    (15, 'elona031. jpg', 'elona031b. jpg'),

    (16, 'elona050. jpg', 'elona050b. jpg'),

    (17, 'elona060. jpg', 'elona060b. jpg'),

    (18, 'elona063. jpg', 'elona063b. jpg'),

    (19, 'elona084. jpg', 'elona084b. jpg'),

    (20, 'elona086. jpg', 'elona086b. jpg'),

    (21, 'akkord. jpg', 'akkordb. jpg'),

    (22, 'akkord. jpg', 'akkordb. jpg'),

    (23, 'evro-knizhka. jpg', 'evro-knizhkab. jpg'),

    (24, 'orfei. jpg', 'orfeib. jpg'),

    (25, 'tango. jpg', 'tangob. jpg'),

    (26, 'tango. jpg', 'tangob. jpg'),

    (27, 'elli. jpg', 'ellib. jpg'),

    (28, 'elli-lider. jpg', 'elli-liderb. jpg'),

    (29, 'elli-lux. jpg', 'elli-luxb. jpg'),

    (30, 'elli-mini. jpg', 'elli-minib. jpg'),

    (31, 'elona038. jpg', 'elona038b. jpg');

    Структура таблицы `number_of_sales'

    CREATE TABLE IF NOT EXISTS `number_of_sales` (

    `id_number_of_sales` int (100) NOT NULL AUTO_INCREMENT,

    `id_product` int (100) NOT NULL,

    `product` varchar (100) NOT NULL,

    `number_of_sales` int (200) NOT NULL,

    PRIMARY KEY (`id_number_of_sales`)

    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

    Структура таблицы `orders`

    CREATE TABLE IF NOT EXISTS `orders` (

    `id_orders` int (200) NOT NULL,

    `amount` int (100) NOT NULL,

    `id_buyer` int (100) NOT NULL,

    `id_product` varchar (100) NOT NULL,

    `date` date NOT NULL,

    `place` varchar (100) NOT NULL,

    PRIMARY KEY (`id_buyer`)

    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

    Структура таблицы `popular`

    CREATE TABLE IF NOT EXISTS `popular` (

    `id` int (100) NOT NULL AUTO_INCREMENT,

    `id_product` int (100) NOT NULL,

    `amount` int (11) NOT NULL,

    PRIMARY KEY (`id`)

    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

    Структура таблицы `products`

    CREATE TABLE IF NOT EXISTS `products` (

    `id_product` int (100) NOT NULL AUTO_INCREMENT,

    `image` text NOT NULL,

    `name_product` text NOT NULL,

    `model` varchar (50) NOT NULL,

    `amount` int (200) NOT NULL,

    `cost` text NOT NULL,

    `hight` int (200) NOT NULL,

    `weight` int (200) NOT NULL,

    `id_suppliers` int (100) NOT NULL,

    `length` int (200) NOT NULL,

    `date` datetime NOT NULL,

    PRIMARY KEY (`id_product`)

    ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=32;

    Дамп данных таблицы `products`

    INSERT INTO `products` (`id_product`, `image`, `name_product`, `model`, `amount`, `cost`, `hight`, `weight`, `id_suppliers`, `length`, `date`) VALUES

    (1, '', 'Элона', '015', 5, '15000', 200, 56, 2, 260, '2011;02-03 12: 00: 00'),

    (2, '', 'Элона', '020', 4, '17000', 200, 90, 1, 200, '2011;02-04 12: 01: 00'),

    (3, '', 'Кровать (1спальная дуб) ', '-', 6, '8000', 100, 110, 1, 195, '2011;02-04 12: 02: 00'),

    (4, '', 'Кровать (1спальная ольха) ', '-', 6, '8000', 100, 110, 1, 195, '0000-00-00 00: 00: 00'),

    (5, '', 'Элона-кровать', '020', 4, '5000', 80, 90, 1, 165, '0000-00-00 00: 00: 00'),

    (6, '', 'Элона', '095', 5, '15000', 200, 65, 1, 220, '0000-00-00 00: 00: 00'),

    (7, '', 'Элона (дуб) ', '-', 3, '10000', 200, 65, 1, 120, '0000-00-00 00: 00: 00'),

    (8, '', 'Элона (ольха) ', '-', 2, '10000', 200, 65, 1, 120, '0000-00-00 00: 00: 00'),

    (9, '', 'Кровать', '-', 3, '10000', 120, 180, 3, 220, '0000-00-00 00: 00: 00'),

    (10, '', 'Камод', '-', 3, '3000', 120, 45, 3, 150, '0000-00-00 00: 00: 00'),

    (11, '', 'Элона', '-', 3, '10000', 120, 180, 3, 220, '0000-00-00 00: 00: 00'),

    (12, '', 'Элона (дуб) ', '-', 5, '11000', 120, 180, 3, 220, '0000-00-00 00: 00: 00'),

    (13, '', 'Элона (дуб) ', '026', 3, '20000', 210, 60, 2, 360, '0000-00-00 00: 00: 00'),

    (14, '', 'Элона (ольха) ', '028', 2, '19000', 220, 60, 2, 340, '0000-00-00 00: 00: 00'),

    (15, '', 'Элона (орех) ', '031', 2, '17000', 220, 60, 2, 300, '0000-00-00 00: 00: 00'),

    (16, '', 'Элона (орех) ', '050', 2, '16000', 220, 60, 2, 180, '0000-00-00 00: 00: 00'),

    (17, '', 'Элона (глянц) ', '060', 2, '18000', 210, 54, 2, 220, '0000-00-00 00: 00: 00'),

    (18, '', 'Элона (дуб-орех) ', '063', 2, '22000', 220, 54, 2, 320, '0000-00-00 00: 00: 00'),

    (19, '', 'Элона (орех) ', '084', 2, '20000', 220, 60, 2, 360, '0000-00-00 00: 00: 00'),

    (20, '', 'Элона (тёмный орех) ', '086', 2, '21000', 220, 60, 2, 360, '0000-00-00 00: 00: 00'),

    (21, '', 'Аккорд', '-', 3, '20400', 160, 180, 4, 220, '0000-00-00 00: 00: 00'),

    (22, '', 'Аккорд', '-', 3, '3000', 150, 120, 4, 180, '0000-00-00 00: 00: 00'),

    (23, '', 'Евро-книжка', '-', 2, '18000', 160, 185, 4, 200, '0000-00-00 00: 00: 00'),

    (24, '', 'Орфей', '-', 3, '22500', 160, 220, 4, 240, '0000-00-00 00: 00: 00'),

    (25, '', 'Танго', '-', 3, '21990', 160, 200, 4, 250, '0000-00-00 00: 00: 00'),

    (26, '', 'Танго', '-', 3, '2500', 160, 200, 4, 120, '0000-00-00 00: 00: 00'),

    (27, '', 'Элли', '-', 4, '18000', 160, 180, 4, 220, '0000-00-00 00: 00: 00'),

    (28, '', 'Элли-лидер', '-', 3, '24990', 160, 230, 4, 250, '0000-00-00 00: 00: 00'),

    (29, '', 'Элли-люкс', '-', 2, '24990', 160, 230, 1, 250, '0000-00-00 00: 00: 00'),

    (30, '', 'Элли-мини', '-', 2, '14500', 160, 150, 3, 180, '0000-00-00 00: 00: 00'),

    (31, '', 'Элона', '038', 3, '11250', 0, 180, 4, 220, '0000-00-00 00: 00: 00');

    Структура таблицы `product_category`

    CREATE TABLE IF NOT EXISTS `product_category` (

    `id` int (200) NOT NULL,

    `id_product` int (100) NOT NULL,

    `id_category` int (100) NOT NULL,

    PRIMARY KEY (`id`)

    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

    Дамп данных таблицы `product_category`

    INSERT INTO `product_category` (`id`, `id_product`, `id_category`) VALUES

    (6, 6, 1), (5, 5,2), (4, 4,3), (3, 3,3), (2, 2,2), (1, 1,2), (7, 7,4), (8, 8,4), (9, 9,3), (10, 10,3), (11, 5,3), (12, 11,3), (13, 12,3), (14, 13,5), (15, 14,5), (16, 15,5), (17, 16,5), (18, 17,5), (19, 18,5), (20, 19,5), (21, 20,5), (22, 21,6), (23, 22,6), (24, 23,6), (25, 24,6), (26, 25,6), (27, 26,6), (28, 27,6), (29, 28,6), (30, 29,6), (31, 30,6);

    Структура таблицы `product_color`

    CREATE TABLE IF NOT EXISTS `product_color` (

    `id` int (100) NOT NULL AUTO_INCREMENT,

    `id_product` int (100) NOT NULL,

    `color` varchar (100) CHARACTER SET latin1 NOT NULL,

    PRIMARY KEY (`id`)

    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

    Структура таблицы `suppliers`

    CREATE TABLE IF NOT EXISTS `suppliers` (

    `id_supplier` int (100) NOT NULL AUTO_INCREMENT,

    `supplier` varchar (100) NOT NULL,

    `city` varchar (100) NOT NULL,

    `address` varchar (100) NOT NULL,

    `telephone` int (50) NOT NULL,

    `logo` blob NOT NULL,

    `site` varchar (50) NOT NULL,

    PRIMARY KEY (`id_supplier`)

    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

    10.2 Header. php

    КорзинаПоискОбратная связьО нас
    ';

    echo '

    ';

    }

    ? >

    Панда

    —>

    var imageList = [

    {url: « config->item ('base_url');? >fancybox/images/1b. jpg», title: «Первая картинка» },

    {url: « config->item ('base_url');? >fancybox/images/2b. jpg», title: «Вторая картинка» },

    {url: « config->item ('base_url');? >fancybox/images/3b. jpg», title: «Третья картинка» }

    ];

    function getGroupItems (opts) {

    jQuery. each (imageList, function (i, val) {

    opts. itemArray. push (val);

    });

    }

    $ («a#custom»). fancybox ({

    'itemLoadCallback': getGroupItems

    });

    —>

    На главнуюПоискКарта сайта

    $ (document). ready (function () {

    $ («a [rel=gallery] «). fancybox ({

    'transitionIn': 'elastic',

    'transitionOut': 'elastic',

    'changeFade': 'slow'

    });

    $ («#inline»). fancybox ({

    'transitionIn': 'none',

    'transitionOut': 'none',

    'titlePosition': 'over'

    });

    $ («#frame»). fancybox ({

    'transitionIn': 'none',

    'transitionOut': 'none',

    'titlePosition': 'over'

    });

    });

    foreach ($image as $item)

    {

    echo '

    ';

    echo '

    Мебель
    Поиск по сайту

    Авторизация
    login
    Логин:
    Пароль:

    10.3 Footer. php

    На главнуюО насЛицензияОбратная связь
    © 2011 Комфорт +

    10.4 Catalog. Php

    class Catalog extends Controller

    {

    function Catalog () {

    parent: Controller ();

    }

    function index ()

    {

    $pageData ['title'] = «Главная» ;

    $this->load->model ('catalogmodel');

    $pageData ['categories'] = $this->catalogmodel->GetAllCategories ();

    $pageData ['newproduct'] = $this->catalogmodel->GetNewProduct ();

    $pageData ['discount'] = $this->catalogmodel->GetDiscount ();

    $pageData ['image'] = $this->catalogmodel->GetImage ();

    if ($pageData ['categories'] == false)

    {

    $pageData ['errDescription'] = «Категорий не найдено. «;

    }

    if ($pageData ['discount'] == false)

    {

    $pageData ['errDescription'] = «Скидок нет. «;

    }

    $this->load->view («header» ,$pageData);

    $this->load->view («images» ,$pageData);

    $this->load->view ('footer');

    }

    function categorydetails ($id_category) {

    $pageData ['title'] ="Мебель" ;

    $this->load->model ('catalogmodel');

    $pageData ['categorydetails'] = $this->catalogmodel->GetCategoryDetails ($id_category);

    if ($pageData ['categorydetails'] == false)

    {

    $pageData ['errDescription'] = «Товаров в выбранной категории нет. «;

    }

    $pageData ['categories'] = $this->catalogmodel->GetAllCategories ();

    $pageData ['image'] = $this->catalogmodel->GetImage ();

    $this->load->view («header» ,$pageData);

    $this->load->view («categorydetails»);

    $this->load->view ('footer');

    }

    function search ()

    {

    $this->load->model ('catalogmodel');

    $pageData ['categories'] = $this->catalogmodel->GetAllCategories ();

    $pageData ['image'] = $this->catalogmodel->GetImage ();

    if (isset ($_POST [" mytext" ])) {

    $text = $_POST [" mytext" ];

    $pageData ['search'] = $this->catalogmodel->GetSearch ($text);

    if ($pageData ['search'] == false)

    {

    $pageData ['errDescription'] = «Такого товара не обнаружено. «;

    }

    }

    else { $pageData ['search'] = «Не введена фраза для поиска»; }

    $this->load->view («header» ,$pageData);

    $this->load->view («search» ,$pageData);

    $this->load->view ('footer');

    }

    }

    ? >

    10.5 Catalogmodel. php

    class Catalogmodel extends Model

    {

    function Catalogmodel ()

    {

    parent: Model ();

    }

    function GetAllCategories ()

    {

    $qCatalog = «SELECT * FROM categories» ;

    $result = $this->db->query ($qCatalog);

    $category = $result->result_array ();

    if (count ($category) == 0)

    {

    return false;

    }

    return $category;

    }

    function GetImage ()

    {

    $qImage = «SELECT * FROM image, products

    WHERE products. id_product=image. id_product

    AND image. display=0

    ORDER BY RAND () LIMIT 5″ ;

    $result = $this->db->query ($qImage);

    $image = $result->result_array ();

    return $image;

    }

    function GetCategoryDetails ($id_category)

    {

    $val=$id_category;

    $qGetCategory = «SELECT * FROM product_category, products, image

    WHERE product_category. id_category=$val

    AND product_category. id_product=products. id_product

    AND products. id_product=image. id_product" ;

    $result = $this->db->query ($qGetCategory);

    $productid = $result->result_array ();

    if (count ($productid) == 0)

    {

    return false;

    }

    return $productid;

    }

    function GetSearch ($text)

    {

    $qGetName = «SELECT * FROM products, image WHERE name_product LIKE '%$text%' AND products. id_product=image. id_product» ;

    $result = $this->db->query ($qGetName);

    $search = $result->result_array ();

    if (count ($search) == 0)

    {

    return false;

    }

    return $search;

    }

    function GetNewProduct ()

    {

    $qnewproduct = «SELECT * FROM products, image

    WHERE products. id_product=image. id_product

    order by date desc

    limit 0,3″ ;

    $result = $this->db->query ($qnewproduct);

    $newproduct = $result->result_array ();

    return $newproduct;

    }

    function GetDiscount ()

    {

    $qdiscount = «SELECT * FROM discount, products, image

    WHERE discount. discount>0

    AND discount. id_product=products. id_product

    AND products. id_product=image. id_product

    limit 0,3″ ;

    $result = $this->db->query ($qdiscount);

    $discount = $result->result_array ();

    if (count ($discount) == 0)

    {

    return false;

    }

    return $discount;

    }

    }

    ? >

    10.6 Categorydetails. php

    if (isset ($errDescription))

    {

    echo «

    «. $errDescription. «»;

    }

    else

    foreach ($categorydetails as $product)

    {

    echo «

    " ;

    echo «

    «;

    echo «

    «;

    echo '

    ';

    echo «

    «;

    echo «

    «;

    echo «

    «;

    echo «

    «;

    echo «

    «;

    echo «

    «;

    // echo «

    «;

    echo «

    «;

    echo «

    «;

    echo «

    «;

    echo «

    «;

    echo «

    «;

    echo «

    Название: «. $product ['name_product']. «Модель: «. $product ['model']. «Количество на складе: «. $product ['amount']. «Цена: «. $product ['cost']. «руб.Высота: «. $product ['hight']. «Длина: «. $product ['weight']. «Ширина: «. $product ['length']. «
    «;

    echo «

    «;

    }

    ? >

    10.7 Search. Php

    if (isset ($errDescription))

    {

    echo «

    «. $errDescription. «»;

    }

    if (is_array ($search)) {

    foreach ($search as $item)

    {

    echo «

    " ;

    echo «

    «;

    echo «

    «;

    echo '

    ';

    echo «

    «;

    echo «

    «;

    echo «

    «;

    echo «

    «;

    echo «

    «;

    echo «

    «;
    Название: «. $item ['name_product']. «Модель: «. $item ['model']. «
  • Показать весь текст
    Заполнить форму текущей работой