37274

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

Курсовая

Информатика, кибернетика и программирование

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

Русский

2013-09-24

959 KB

46 чел.

Федеральное агентство по образованию

Государственное образовательное учреждение высшего профессионального образования

«Астраханский государственный университет»

Кафедра прикладной математики и информатики

Допускается к защите  

" ____ " __________________2011 г.

Зав. кафедрой ___________________

КУРСОВАЯ РАБОТА

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

                                                         Выполнил:     

                                                             студент группы_______________________  

               Научный руководитель: В. А. Зелепухина, к.т.н.                                                                      

                 Ф.И.О.,  степень, звание

 

Астрахань – 2011


ОГЛАВЛЕНИЕ

[1]
2. ВЫБОР ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

[2]
3. РАЗРАБОТКА СТРУКТУРЫ БАЗЫ ДАННЫХ

[2.1] 3.1. ER-диаграмма

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

[3]
4. ФРЕЙМВОРК CodeIgniter. НАСТРОЙКА И СОВМЕЩЕНИЕ C ВЕБ-СЕРВЕРОМ XAMPP

[4] 5. РАЗРАБОТКА ШАБЛОНОВ И ГЛАВНОЙ СТРАНИЦЫ.

[5]
6. СОЗДАНИЕ КАТАЛОГА

[5.1] 6.1. Список категорий

[5.2] 6.2. Список товаров

[6]
7. ПОИСК ПО НАЗВАНИЮ ТОВАРА

[7]
8. ЗАКЛЮЧЕНИЕ

[8]
9. СПИСОК ЛИТЕРАТУРЫ

[9]
10. ПРИЛОЖЕНИЕ

[9.1] 10.1. Структура таблиц БД

[9.2] 10.2. Header.php

[9.3] 10.3. Footer.php

[9.4] 10.4. Catalog.php

[9.5] 10.5. Catalogmodel.php

[9.6] 10.6. Categorydetails.php

[9.7] 10.7. Search.php

[9.8] 10.8. Images.php

[9.9] 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. Добавление нового пользователя.

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

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

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

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

<!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">

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

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

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

Рис. 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, products WHERE 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 '<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>";

 echo '<td valign="top"><div class="pic"><a href="'.$this->config->item('base_url').'images/foto/'.$product['picb'].'" >

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

 echo "</tr>";

 echo "</table>";

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

 echo "<tr>";

 echo "<td><strong><catalog>Название:</strong> ".$product['name_product']."</td>";

 echo "<td><strong><catalog>Модель:</strong> ".$product['model']."</td>";

 echo "<td><strong><catalog>Цена:</strong> ".$product['cost']."руб.</td>";

 echo "<td><strong><catalog>Высота:</strong> ".$product['hight']."</td>";

 echo "<td><strong><catalog>Длина:</strong> ".$product['weight']."</td>";

 echo "<td><strong><catalog>Ширина:</strong> ".$product['length']."</td>";

 echo "</tr>";

 echo "</table>";

Для предоставления посетителю возможности ознакомиться с новыми поступлениями, на главной странице выведены 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

<!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 class="header" valign="top" align="right">

 

 

   <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

foreach($image as $item)

{

echo '<p>';

echo '<td valign="top"><div class="pic"><a href="'.$this->config->item('base_url').'images/foto/'.$item['picb'].'" rel="gallery">

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

echo '</p>';

}

?>

 

 

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

<div class="pic"><a href="<?php echo $this->config->item('base_url'); ?>fancybox/images/1b.jpg" rel="gallery"><img src="<?php echo $this->config->item('base_url'); ?>fancybox/images/1.jpg" alt="Панда"></a></div>

<div class="pic"><a href="<?php echo $this->config->item('base_url'); ?>fancybox/images/2b.jpg" rel="gallery"><img src="<?php echo $this->config->item('base_url'); ?>fancybox/images/2.jpg"></a></div>

<div class="pic"><a href="<?php echo $this->config->item('base_url'); ?>fancybox/images/3b.jpg" rel="gallery"><img src="<?php echo $this->config->item('base_url'); ?>fancybox/images/3.jpg"></a></div>

<div class="clear"></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">

 

var 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: "Третья картинка"}

];

     

function getGroupItems(opts) {

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

    opts.itemArray.push(val);

  });

}

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

  'itemLoadCallback': getGroupItems

});

   </script>-->

 

 

 

  

  

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

  <tr>

 <td><a href="#" class="top">На главную</a></td>

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

<td><a href="#" class="top">Поиск</a></td>

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

<td><a href="#" class="top">Карта сайта</a></td>

   <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 class="toplinks" align="center">

 

<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 class="leftlinkstop" align="center"><font color="#FFFFFF">Мебель</font>

 </td>

   </tr>

 

  <tr>

       <td align="center">

 

 <div id="categorylinks">

 

<?php

if (isset($errDescription))

{

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

}

 

else

foreach ($categories as $category)

{

 echo '<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 class="leftlinkstop" align="center"><font color="#FFFFFF">Поиск по сайту</font></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 class="leftlinkstop" align="center"><font color="#FFFFFF">Авторизация</font></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 class="tdborderright" align="center"><a href="<?php echo $this->config->item('base_url'); ?>index.php/catalog" class="bottomfooter">На главную</a></td>

   <td class="tdborderright" align="center"><a href="<?php echo $this->config->item('base_url'); ?>index.php/pages/aboutus" class="bottomfooter">О нас</a></td>

   <td class="tdborderright" align="center"><a href="<?php echo $this->config->item('base_url'); ?>index.php/pages/license" class="bottomfooter">Лицензия</a></td>

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

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

</td>

 </tr>

</table>

</html>

10.4. Catalog.php

<?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

<?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

<?php

if (isset($errDescription))

{

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

}

 

else

foreach($categorydetails as $product)

{

 echo "<p>";

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

 echo "<tr>";

 echo '<td valign="top"><div class="pic"><a href="'.$this->config->item('base_url').'images/foto/'.$product['picb'].'" >

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

 echo "</tr>";

 echo "</table>";

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

 echo "<tr>";

 echo "<td><strong><catalog>Название:</strong> ".$product['name_product']."</td>";

 echo "<td><strong><catalog>Модель:</strong> ".$product['model']."</td>";

 //echo "<td><strong>Количество на складе:</strong> ".$product['amount']."</td>";

 echo "<td><strong><catalog>Цена:</strong> ".$product['cost']."руб.</td>";

 echo "<td><strong><catalog>Высота:</strong> ".$product['hight']."</td>";

 echo "<td><strong><catalog>Длина:</strong> ".$product['weight']."</td>";

 echo "<td><strong><catalog>Ширина:</strong> ".$product['length']."</td>";

 echo "</tr>";

 echo "</table>";

 echo "</p>";

 }

?>

10.7. Search.php

<?php

if (isset($errDescription))

{

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

}

 

if (is_array($search) ) {

foreach($search as $item)

{

 echo "<p>";

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

 echo "<tr>";

 echo '<td valign="top"><div class="pic"><a href="'.$this->config->item('base_url').'images/foto/'.$item['picb'].'" >

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

 echo "</tr>";

 echo "</table>";

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

 echo "<tr>";

 echo "<td><strong><catalog>Название:</strong> ".$item['name_product']."</td>";

 echo "<td><strong><catalog>Модель:</strong> ".$item['model']."</td>";

 //echo "<td><strong>Количество на складе:</strong> ".$item['amount']."</td>";

 echo "<td><strong><catalog>Цена:</strong> ".$item['cost']."руб.</td>";

 echo "<td><strong><catalog>Высота:</strong> ".$item['hight']."</td>";

 echo "<td><strong><catalog>Длина:</strong> ".$item['weight']."</td>";

 echo "<td><strong><catalog>Ширина:</strong> ".$item['length']."</td>";

 echo "</tr>";

 echo "</table>";

 echo "</p>";

 }

 }

 else echo $search ;

?>

10.8. Images.php

<?php

echo "<center><strong><new>Новые поступления!!!</new></strong></center>";

foreach($newproduct as $item)

{

 echo "<p>";

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

 echo "<tr>";

 echo '<td valign="top"><div class="pic"><a href="'.$this->config->item('base_url').'images/foto/'.$item['picb'].'" >

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

 //echo '<div class="pic"><a href="'.$this->config->item('base_url').'fancybox/images/1b.jpg" rel="gallery"><img src="'.$this->config->item('base_url').'fancybox/images/1.jpg" alt="Панда"></a></div>';

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

 echo "</tr>";

 echo "</table>";

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

 echo "<tr>";

 echo "<td><strong><catalog>Название:</strong> ".$item['name_product']."</td>";

 echo "<td><strong><catalog>Модель:</strong> ".$item['model']."</td>";

 //echo "<td><strong>Количество на складе:</strong> ".$item['amount']."</td>";

 echo "<td><strong><catalog>Цена:</strong> ".$item['cost']."руб.</td>";

 echo "<td><strong><catalog>Высота:</strong> ".$item['hight']."</td>";

 echo "<td><strong><catalog>Длина:</strong> ".$item['weight']."</td>";

 echo "<td><strong><catalog>Ширина:</strong> ".$item['length']."</td>";

 echo "</tr>";

 echo "</table>";

 echo "</p>";

 }

echo "<p>";echo "<p>";echo "<p>";echo "<p>";

 

 echo "<center><strong><new>Скидки!!!</new></strong></center>";

foreach($discount as $item)

{

 echo "<p>";

 echo "<p>";

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

 echo "<tr>";

 echo '<td valign="top"><div class="pic"><a href="'.$this->config->item('base_url').'images/foto/'.$item['picb'].'" >

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

 echo "<td><strong><new>СКИДКА:</strong> ".$item['discount']."%</td>";

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

 echo "</tr>";

 echo "</table>";

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

 echo "<tr>";

 echo "<td><strong><catalog>Название:</strong> ".$item['name_product']."</td>";

 echo "<td><strong><catalog>Модель:</strong> ".$item['model']."</td>";

 //echo "<td><strong>Количество на складе:</strong> ".$item['amount']."</td>";

 echo "<td><strong><catalog>Цена:</strong> ".$item['cost']."руб.</td>";

 echo "<td><strong><catalog>Высота:</strong> ".$item['hight']."</td>";

 echo "<td><strong><catalog>Длина:</strong> ".$item['weight']."</td>";

 echo "<td><strong><catalog>Ширина:</strong> ".$item['length']."</td>";

 echo "</tr>";

 echo "</table>";

 echo "</p>";

 echo "</p>";

 }

?>

10.9. Pages.php

<?php

class Pages extends Controller

{

 function Pages() {

       parent::Controller();

 

   }

 

function index()

 {

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

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

 }

   function aboutus()

  {

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

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

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

  }    

   function license()

{

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

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

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

}

function feedback()

{

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

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

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

 }

}

?>


 

А также другие работы, которые могут Вас заинтересовать

68237. ОРГАНІЗАЦІЙНО-ЕКОНОМІЧНИЙ МЕХАНІЗМ РОЗВИТКУ ДІЯЛЬНОСТІ ПІДПРИЄМСТВ З ВИРОБНИЦТВА ТА ПЕРЕРОБКИ СОЇ: ТЕОРІЯ, МЕТОДОЛОГІЯ, ПРАКТИКА 1.21 MB
  Такого природного сполучення білка жиру вуглеводів мінеральних солей і вітамінів як у насінні сої в інших продуктах рослинного і тваринного походження не зустрічається. Зростаючий попит на цю сільськогосподарську культуру набув планетарного значення що обумовлює формування...
68238. Пoлiтична та екoнoмiчна iнтеграцiя Угoрщини дo ЄС (1989-2004 рр.) 164.5 KB
  Oтже актуальнiсть вивчення oбранoї прoблеми oбумoвлена пoперше важливiстю iнтеграцiйних прoцесiв в iстoричнoму рoзвитку пoдруге пoяснюється глoбалiзацiєю яка диктує неoбхiднiсть пoшуку iнтеграцiйних стратегiй для...
68239. Організація виробничо-збутової діяльності сільськогосподарських підприємств 269.5 KB
  У сучасних умовах господарювання серед низки проблем з якими зіштовхуються сільськогосподарські підприємства вагоме місце займає питання збуту власної продукції. Ще на стадії виробництва кожен товаровиробник визначає кількість та асортимент товарної продукції усвідомлює що вироблений товар повинен...
68240. AДМIНIСТРAТИВНO-ПРAВOВИЙ СТAТУС ДЕРЖAВНOЇ ПOДAТКOВOЇ СЛУЖБИ УКРAЇНИ 240.5 KB
  Aктуaльнiсть теми дoслiдження oбумoвленa нaукoвo-теoретичнoю тa прaктичнoю знaчимoстю питaнь, пoв’язaних з фoрмувaнням ефективнoї системи спрaвляння пoдaткiв, збoрiв тa iнших oбoв’язкoвих плaтежiв в Укрaїнi. Прoвiдними нaпрямкaми діяльності держави для здiйснення мaсштaбних якiсних перетвoрень...
68241. НАРОДНО-СЦЕНІЧНА ХОРЕОГРАФІЯ ПРИКАРПАТСЬКОГО РЕГІОНУ: СТАНОВЛЕННЯ ТА ТЕНДЕНЦІЇ РОЗВИТКУ 134 KB
  Народно-сценічний танець не тільки відображає почуття та стосунки між людьми фіксує процеси праці та інші соціально значущі події виконує рекреаційну функцію а і є яскравим показником культури певного етносу.
68242. ДІАГНОСТИКА ТА ПРОГНОЗ ПЕРЕБІГУ ЗЛОЯКІСНИХ ПУХЛИН ЩИТОВИДНОЇ ЗАЛОЗИ: ІМУНОМОРФОЛОГІЧНІ АСПЕКТИ 182.5 KB
  Наразі молекулярно-генетичні дослідження виявили деякі білки наприклад галектин3 експресія яких виявляється переважно в злоякісних пухлинах за відсутності або незначної його експресії в доброякісних новоутвореннях що при діагностичному використанні певно запобігало б вищезазначеним труднощам.
68243. ФАРМАКОЕКОНОМІЧНИЙ АНАЛІЗ ГІПОТЕНЗИВНИХ ПРЕПАРАТІВ 1.82 MB
  Доцільно врахувати, що за «Концепцією розвитку фармацевтичного сектору галузі охорони здоров’я в України (2007)» почалась підготовка клінічних провізорів за спеціальністю «Клінічна фармація». Клінічні провізори, зокрема, в умовах медичних стаціонарів повинні здійснювати фармацевтичну допомогу хворим...
68244. ПРЯМІ ТА ОБЕРНЕНІ ЗАДАЧІ ДЛЯ СТІЛЬТЬЄСІВСЬКИХ СТРУН 810.5 KB
  Оскільки у всіх реальних фізичних явищах присутнє в’язке тертя демпфування яке пропорційне та протилежно спрямоване швидкості руху елемента маси великий інтерес становлять задачі в яких це явище враховується.
68245. КЛІНІКО-ПАТОГЕНЕТИЧНЕ ОБҐРУНТУВАННЯ КОРЕКЦІЇ ПОРУШЕНЬ МІНЕРАЛЬНОГО ОБМІНУ В ДІТЕЙ ІЗ ДИФУЗНИМ ЕНДЕМІЧНИМ ЗОБОМ НА ФОНІ СУПУТНЬОЇ ПАТОЛОГІЇ 196 KB
  Мета роботи: підвищити ефективність ранньої діагностики та патогенетичного лікування дітей, хворих на дифузний ендемічний зоб І ступеня із супутньою патологією, на основі вивчення тиреоїдного гормонального фону, мінеральної щільності кісткової тканини, активності перекисного окислення ліпідів та антиоксидантної системи захисту.