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

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    1,84 Мб
  • Опубликовано:
    2012-09-18
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Применение языка 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 (#"562439.files/image001.gif">

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

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

 

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


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

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

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

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

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

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

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

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

2.       Перейти на страницу с PHPMyAdmin (#"562439.files/image002.gif">

Рис.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 и дополнительных библиотек, содержащих регулярные выражения, ссылки, по которым осуществляется переход на другие страницы, будут иметь примерно такой вид: #"562439.files/image006.gif">

Рис.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 могут привести к различным вариантам отображения страницы в веб-обозревателях.

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

<! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.0 Transitional // EN" "#"562439.files/image007.gif">

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

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

<script type="text/javascript" src="<? php echo $this->config->item ('base_url');? >fancybox/data/jquery. fancybox. pack. js"></script>

<script type="text/javascript" src="<? php echo $this->config->item ('base_url');? >fancybox/js/jquery. js"></script>

<script type="text/javascript" src="<? php echo $this->config->item ('base_url');? >fancybox/js/jquery. fancybox. js"></script>

<script type="text/javascript" src="<? php echo $this->config->item ('base_url');? >fancybox/js/jquery. pngFix. js"></script>

<script type="text/javascript" src="<? php echo $this->config->item ('base_url');? >fancybox/js/jquery. metadata. js"></script>

Для выбора фотографий из БД, в модели (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 (#"562439.files/image008.gif">

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

 

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


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

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

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

foreach ($categories as $category)

{'<li><a href="'. $this->config->item ("base_url"). 'index. php/catalog/categorydetails/'. $category ["id_category"]. '">'. $category ['category']. '</a></li></br>';

}

 

6.2 Список товаров


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

echo "<table border='1' cellspacing='0' cellpadding='0' align='center'>";

echo "<tr>";'<td valign="top"><div>

<img src="'. $this->config->item ('base_url'). 'images/foto/'. $product ['pic']. '" ></a></div> </td>';"</tr>";"</table>";"<table border='1' bgcolor=#FFC000 cellspacing='0' cellpadding='0' align='center'>";"<tr>";"<td><strong><catalog>Название: </strong>". $product ['name_product']. "</td>";"<td><strong><catalog>Модель: </strong>". $product ['model']. "</td>";"<td><strong><catalog>Цена: </strong>". $product ['cost']. "руб. </td>";"<td><strong><catalog>Высота: </strong>". $product ['hight']. "</td>";"<td><strong><catalog>Длина: </strong>". $product ['weight']. "</td>";"<td><strong><catalog>Ширина: </strong>". $product ['length']. "</td>";"</tr>"; "</table>";

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

* FROM products, imageproducts. id_product=image. id_productby date desc0,3

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

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

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

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

SELECT * FROM discount, products, imagediscount. discount>0discount. id_product=products. id_productproducts. id_product=image. id_product 0,3

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

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


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

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

* FROM products, imagename_product'%$text%'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>, свободный.

.        Мануал по PHP.

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


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


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

Структура таблицы `categories`TABLE IF NOT EXISTS `categories` (

`id_category` int (200) NOT NULL AUTO_INCREMENT,

`category` varchar (200) NOT NULL,KEY (`id_category`)

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

Дамп данных таблицы `categories`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,KEY (`id`)

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

Дамп данных таблицы `clients`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`TABLE IF NOT EXISTS `discount` (

`id_discount` int (200) NOT NULL AUTO_INCREMENT,

`discount` int (100) NOT NULL,

`id_product` int (100) NOT NULL,KEY (`id_discount`)

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

Дамп данных таблицы `discount`INTO `discount` (`id_discount`, `discount`, `id_product`) VALUES

(1, 15,2),

(2, 50,4);

Структура таблицы `image`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,KEY (`id_product`)

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

Дамп данных таблицы `image`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'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,KEY (`id_number_of_sales`)

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

Структура таблицы `orders`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,KEY (`id_buyer`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Структура таблицы `popular`TABLE IF NOT EXISTS `popular` (

`id` int (100) NOT NULL AUTO_INCREMENT,

`id_product` int (100) NOT NULL,

`amount` int (11) NOT NULL,KEY (`id`)

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

Структура таблицы `products`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,KEY (`id_product`)

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

Дамп данных таблицы `products`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`TABLE IF NOT EXISTS `product_category` (

`id` int (200) NOT NULL,

`id_product` int (100) NOT NULL,

`id_category` int (100) NOT NULL,KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Дамп данных таблицы `product_category`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`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,KEY (`id`)

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

Структура таблицы `suppliers`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,KEY (`id_supplier`)

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

 

10.2 Header. php


<! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.0 Transitional // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional. dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

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

<title>Комфорт +</title>

<link href="<? php echo $this->config->item ('base_url');? >css/style. css" rel="stylesheet" type="text/css" />

</head>

<body>

<center>

<table border="0" width="806px" cellspacing="0" cellpadding="0" bgcolor="#FFFFFF">

<tr >

<td valign="top">

<table border="0" cellspacing="0" cellpadding="0" >

<tr>

<td>

<script type="text/javascript" src="<? php echo $this->config->item ('base_url');? >fancybox/data/jquery. fancybox. pack. js"></script>

<script type="text/javascript" src="<? php echo $this->config->item ('base_url');? >fancybox/js/jquery. js"></script>

<script type="text/javascript" src="<? php echo $this->config->item ('base_url');? >fancybox/js/jquery. fancybox. js"></script>

<script type="text/javascript" src="<? php echo $this->config->item ('base_url');? >fancybox/js/jquery. pngFix. js"></script>

<script type="text/javascript" src="<? php echo $this->config->item ('base_url');? >fancybox/js/jquery. metadata. js"></script>

<link rel="stylesheet" type="text/css" href="<? php echo $this->config->item ('base_url');? >fancybox/data/style. css" media="screen" />

<link rel="stylesheet" href="<? php echo $this->config->item ('base_url');? >fancybox/css/fancy. css" type="text/css" media="screen">

<link rel="stylesheet" href="style. css" />

<script type="text/javascript">

$ (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'

});

});

</script>

<? php($image as $item)

{'<p>';'<td valign="top"><div>

<img src="'. $this->config->item ('base_url'). 'images/foto/'. $item ['pic']. '" ></a></div> </td>';'</p>';

}

? >

<! - -<div id="content">

<div>

<div>

<div>

<div>

</div>-->

<! - -<a id="custom" href="javascript:; "><img src="<? php echo $this->config->item ('base_url');? >fancybox/images/1. jpg" alt="" /></a>

<script type="text/javascript">imageList = [

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

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

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

];getGroupItems (opts) {. each (imageList, function (i, val) {. itemArray. push (val);

});

}

$ ("a#custom"). fancybox ({

'itemLoadCallback': getGroupItems

});

</script>-->

<table border="0" cellspacing="3" cellpadding="3">

<td><a href="#">

<td><img src="<? php echo $this->config->item ('base_url')? >images/home. gif" /></td>

<td><a href="#">

<td><img src="<? php echo $this->config->item ('base_url')? >images/search. gif" /></td>

<td><a href="#">

<td><img src="<? php echo $this->config->item ('base_url')? >images/sitemap. gif" /></td>

<td width="20px"></td>

</tr>

</table>

</td>

</tr>

<tr >

<td height="4px"></td>

</tr>

<tr>

<td>

<div id="link2">

<ul>

<li><a href="<? php echo $this->config->item ('base_url');? >index. php/catalog">На главную</a></li>

<li><a href="subpage.html">Корзина</a></li>

<li><a href="subpage.html">Поиск </a></li>

<li><a href="<? php echo $this->config->item ('base_url');? >index. php/pages/feedback">Обратная связь</a></li>

<li><a href="subpage.html">О нас</a></li>

</ul>

</div>

</td>

</tr>

<tr >

<td height="13px"></td>

</tr>

<tr>

<td valign="top" align="left">

<table width="804" border="0" cellspacing="0" cellpadding="0">

<tr>

<td width="209px" valign="top" align="center" style="border-right: #CCCCCC 1px solid; border-collapse: collapse; ">

<table width="182" border="0" cellspacing="0" align="left" cellpadding="0">

<tr>

<td>

</td>

</tr>

<tr>

<td align="center">

<div id="categorylinks">

<? php(isset ($errDescription))

{"<h1>". $errDescription. "</h1>";

}($categories as $category)

{'<li><a href="'. $this->config->item ("base_url"). 'index. php/catalog/categorydetails/'. $category ["id_category"]. '">'. $category ['category']. '</a></li></br>';

}

? >

</div>

</td>

</tr>

<tr>

<td height="15px"></td>

</tr>

<tr>

<td>

</tr>

<tr>

<td align="center" bgcolor="#bfbbc3" height="40px">

<table border="0" cellspacing="0" cellpadding="4">

<tr>

<form name="myform" method="post" action="<? php echo $this->config->item ('base_url');? >index. php/catalog/search">

<input type="text" name="mytext" size="40" value="" maxlength="160" />

<input type="submit" value="Найти!" />

</form>

</tr>

</table>

</td>

</tr>

<tr>

<td valign="top"><table border="0" cellspacing="0" cellpadding="0">

<tr>

<td align="left" width="9"><img src="<? php echo $this->config->item ('base_url');? >images/bottomrleft_curve. gif" width="9" /></td>

<td bgcolor="#bfbbc3" width="182px"></td>

<td align="right" width="9"><img src="<? php echo $this->config->item ('base_url');? >images/bottomright_curve. gif" width="9" /></td>

</tr>

</table></td>

</tr>

<tr>

<td height="10px">

</td>

</tr>

<tr><td height="10" ></td></tr>

<tr>

<td>

</tr>

<tr>

<td align="center" bgcolor="#bfbbc3" height="40px">

<table border="0" cellspacing="0" cellpadding="2">

<tr>

<td height="10px">

</td>

</tr>

<tr>

<td><font color="#000000">Логин</font></td>

<td><font color="#000000">: </font></td>

<td><input type="text" /></td>

</tr>

<tr>

<td><font color="#000000">Пароль</font></td>

<td><font color="#000000">: </font></td>

<td><input type="password" /></td>

</tr>

<tr>

<td colspan="3" align="right"><a href="#"><img src="<? php echo $this->config->item ('base_url');? >images/login. gif" alt="login" border="0" /></a></td>

</tr>

</table>

</td>

</tr>

<tr>

<td valign="top"><table border="0" cellspacing="0" cellpadding="0">

<tr>

<td align="left" width="9"><img src="<? php echo $this->config->item ('base_url');? >images/bottomrleft_curve. gif" width="9" /></td>

<td bgcolor="#bfbbc3" width="182px"></td>

<td align="right" width="9"><img src="<? php echo $this->config->item ('base_url');? >images/bottomright_curve. gif" width="9" /></td>

</tr>

</table></td>

</tr>

<tr>

<td height="18px"></td>

</tr>

<tr>

<td ><img src="<? php echo $this->config->item ('base_url');? >images/add. jpg" /></td>

</tr>

<tr>

<td height=""></td>

</tr>

<table border="0" cellspacing="0" cellpadding="0" align="center">

<tr>

<td>

 

10.3 Footer. php


</tr>

</td>

</table>

</table>

</table>

</table>

<table width="700px" border="0" cellspacing="0" cellpadding="0" align="center">

<tr>

<td>

<td>

<td>

<td>

<td align="center"><font color="#FFFFFF">&copy; 2011 Комфорт +</font>

</td>

</tr>

</table>

</html>

 

10.4 Catalog. Php


<? phpCatalog extends Controller

{Catalog () {:: Controller ();

}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 ();($pageData ['categories'] == false)

{

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

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

{

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

}

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

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

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

}categorydetails ($id_category) {

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

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

$pageData ['categorydetails'] = $this->catalogmodel->GetCategoryDetails ($id_category);($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');

}search ()

{

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

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

$pageData ['image'] = $this->catalogmodel->GetImage ();(isset ($_POST ["mytext"])) {

$text = $_POST ["mytext"];

$pageData ['search'] = $this->catalogmodel->GetSearch ($text);($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


<? phpCatalogmodel extends Model

{Catalogmodel ()

{:: Model ();

}GetAllCategories ()

{

$qCatalog = "SELECT * FROM categories";

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

$category = $result->result_array ();(count ($category) == 0)

{false;

}$category;

}GetImage ()

{

$qImage = "SELECT * FROM image,productsproducts. id_product=image. id_productimage. display=0BY RAND () LIMIT 5";

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

$image = $result->result_array ();$image;

}GetCategoryDetails ($id_category)

{

$val=$id_category;

$qGetCategory = "SELECT * FROM product_category, products, imageproduct_category. id_category=$valproduct_category. id_product=products. id_productproducts. id_product=image. id_product";

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

$productid = $result->result_array ();(count ($productid) == 0)

{false;

}$productid;

}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 ();(count ($search) == 0)

{false;

}$search;

}GetNewProduct ()

{

$qnewproduct = "SELECT * FROM products, imageproducts. id_product=image. id_productby date desc0,3";

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

$newproduct = $result->result_array ();$newproduct;

}GetDiscount ()

{

$qdiscount = "SELECT * FROM discount,products, imagediscount. discount>0discount. id_product=products. id_productproducts. id_product=image. id_product0,3";

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

$discount = $result->result_array ();(count ($discount) == 0)

{false;

}$discount;

}

}

? >

 

10.6 Categorydetails. php


<? php(isset ($errDescription))

{"<h1>". $errDescription. "</h1>";

}($categorydetails as $product)

{"<p>";"<table border='1' cellspacing='0' cellpadding='0' align='center'>";"<tr>";'<td valign="top"><div>

<img src="'. $this->config->item ('base_url'). 'images/foto/'. $product ['pic']. '" ></a></div> </td>';"</tr>";"</table>";"<table border='1' bgcolor=#FFC000 cellspacing='0' cellpadding='0' align='center'>";"<tr>";"<td><strong><catalog>Название: </strong>". $product ['name_product']. "</td>";"<td><strong><catalog>Модель: </strong>". $product ['model']. "</td>";

// echo "<td><strong>Количество на складе: </strong>". $product ['amount']. "</td>";"<td><strong><catalog>Цена: </strong>". $product ['cost']. "руб. </td>";"<td><strong><catalog>Высота: </strong>". $product ['hight']. "</td>";"<td><strong><catalog>Длина: </strong>". $product ['weight']. "</td>";"<td><strong><catalog>Ширина: </strong>". $product ['length']. "</td>";"</tr>";"</table>";"</p>";

}

? >

 

10.7 Search. Php


<? php(isset ($errDescription))

{"<h1>". $errDescription. "</h1>";

}(is_array ($search)) {($search as $item)

{"<p>";"<table border='1' cellspacing='0' cellpadding='0' align='center'>";"<tr>";'<td valign="top"><div>

<img src="'. $this->config->item ('base_url'). 'images/foto/'. $item ['pic']. '" ></a></div> </td>';"</tr>";"</table>";"<table border='1' bgcolor=#FFC000 cellspacing='0' cellpadding='0' align='center'>";"<tr>";"<td><strong><catalog>Название: </strong>". $item ['name_product']. "</td>";"<td><strong><catalog>Модель: </strong>". $item ['model']. "</td>";

// echo "<td><strong>Количество на складе: </strong>". $item ['amount']. "</td>";"<td><strong><catalog>Цена: </strong>". $item ['cost']. "руб. </td>";"<td><strong><catalog>Высота: </strong>". $item ['hight']. "</td>";"<td><strong><catalog>Длина: </strong>". $item ['weight']. "</td>";"<td><strong><catalog>Ширина: </strong>". $item ['length']. "</td>";"</tr>";"</table>";"</p>";

}

}echo $search;

? >

 

10.8 Images. Php


<? php"<center><strong><new>Новые поступления!!! </new></strong></center>";($newproduct as $item)

{"<p>";"<table border='1' cellspacing='0' cellpadding='0' align='center'>";"<tr>";'<td valign="top"><div>

<img src="'. $this->config->item ('base_url'). 'images/foto/'. $item ['pic']. '" ></a></div> </td>';

// echo '<div>

// echo '<td><img src="'. $this->config->item ('base_url'). 'images/foto/'. $item ['pic']. '"></td>';"</tr>";"</table>";"<table border='1' bgcolor=#FFC000 cellspacing='0' cellpadding='0' align='center'>";"<tr>";"<td><strong><catalog>Название: </strong>". $item ['name_product']. "</td>";"<td><strong><catalog>Модель: </strong>". $item ['model']. "</td>";

// echo "<td><strong>Количество на складе: </strong>". $item ['amount']. "</td>";"<td><strong><catalog>Цена: </strong>". $item ['cost']. "руб. </td>";"<td><strong><catalog>Высота: </strong>". $item ['hight']. "</td>";"<td><strong><catalog>Длина: </strong>". $item ['weight']. "</td>";"<td><strong><catalog>Ширина: </strong>". $item ['length']. "</td>";"</tr>";"</table>";"</p>";

}"<p>"; echo "<p>"; echo "<p>"; echo "<p>";"<center><strong><new>Скидки!!! </new></strong></center>";($discount as $item)

{"<p>";"<p>";"<table border='1' cellspacing='0' cellpadding='0' align='center'>";"<tr>";'<td valign="top"><div>

<img src="'. $this->config->item ('base_url'). 'images/foto/'. $item ['pic']. '" ></a></div> </td>';"<td><strong><new>СКИДКА: </strong>". $item ['discount']. "%</td>";

// echo '<td><img src="'. $this->config->item ('base_url'). 'images/foto/'. $item ['pic']. '"></td>';"</tr>";"</table>";"<table border='1' bgcolor=#FFC000 cellspacing='0' cellpadding='0' align='center'>";"<tr>";"<td><strong><catalog>Название: </strong>". $item ['name_product']. "</td>";"<td><strong><catalog>Модель: </strong>". $item ['model']. "</td>";

// echo "<td><strong>Количество на складе: </strong>". $item ['amount']. "</td>";"<td><strong><catalog>Цена: </strong>". $item ['cost']. "руб. </td>";"<td><strong><catalog>Высота: </strong>". $item ['hight']. "</td>";"<td><strong><catalog>Длина: </strong>". $item ['weight']. "</td>";"<td><strong><catalog>Ширина: </strong>". $item ['length']. "</td>";"</tr>";"</table>";"</p>";"</p>";

}

? >

 

10.9 Pages. php


<? phpPages extends Controller

{Pages () {:: Controller ();

}index ()

{

$this->load->view ("header");

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

}aboutus ()

{

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

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

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

}license ()

{

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

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

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

}feedback ()

{

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

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

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

}

}

? >

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

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!