Вы находитесь на странице: 1из 94

АННОТАЦИЯ

Выпускная квалификационная работа (бакалаврская работа) на тему


«Разработка web-приложения для организации онлайн-продаж» содержит 89
страницы пояснительной записки и 14 листов графического материала.
WEB-ПРИЛОЖЕНИЕ, БАЗА ДАННЫХ, ПРОЕКТИРОВАНИЕ,
ОНЛАЙ-ПРОДАЖИ, ТОВАР.
Объект работы – Интернет-магазин компьютерной техники «Compik».
Целью работы является повышение эффективности процесса продаж
интернет-магазина «Compik» за счет разработки веб-сайта.
Теоретическое исследование проводилось методом анализа литературы
и нормативных справочников, положений предприятия, функциональных
обязанностей. Практическое обследование объекта проводилось на основе
системного анализа.
Разработан общий проект информационной системы объекта, детально
представлен проект подсистемы «Деятельность специалиста по продажам»,
реализована задача «Учет заказов клиентов».
Работу можно использовать для комплексной автоматизации управления
интернет-магазином

2
СОДЕРЖАНИЕ
ВВЕДЕНИЕ .............................................................................................................. 5

1 АНАЛИЗ ТРЕБОВАНИЙ НА РАЗРАБОТКУ ................................................... 7

1.1 Описание объекта исследования .................................................................. 7

1.2 Описание проблемы компании ................................................................... 10

1.3 Разработка модели бизнес-процессов ........................................................ 10

1.4 Анализ альтернативных решений .............................................................. 19

1.5 Разработка бизнес-требований ................................................................... 22

1.5.1 Исходные данные ................................................................................... 22

1.5.2 Профили заинтересованных лиц .......................................................... 23

1.5.3 Бизнес-данные ........................................................................................ 24

1.5.4 Критерии успеха .................................................................................... 24

1.5.5 Ограничения и исключения .................................................................. 24

1.6 Разработка пользовательских требований................................................. 25

1.6.1 Разработка диаграммы вариантов использования .............................. 25

1.6.2 Разработка спецификаций вариантов использования ........................ 27

1.7 Разработка функциональных требований ................................................. 31

1.8 Вывод............................................................................................................. 32

2 ПРОЕКТИРОВАНИЕ ИНФОРМАЦИОННОЙ СИСТЕМЫ ......................... 34

2.1 Разработка функциональной схемы ........................................................... 34

2.2 Разработка алгоритмов системы................................................................. 34

2.2.1 Алгоритм авторизации .......................................................................... 34

2.2.2 Алгоритм создания нового заказа ........................................................ 36

2.3 Разработка диаграммы классов .................................................................. 37

3
2.4 Проектирование базы данных .................................................................... 39

2.5 Вывод............................................................................................................. 41

3.1 Создание модели веб-сайта ......................................................................... 43

3.2 Создание макета веб-сайта .......................................................................... 44

3.3 Реализация основных функций .................................................................. 46

3.4 Тестирование веб-сайта ............................................................................... 49

3.5 Оценка работоспособности и устойчивости программы ......................... 52

3.6 Вывод............................................................................................................. 56

ЗАКЛЮЧЕНИЕ ..................................................................................................... 58

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ ........................................... 61

Приложение А. ...................................................................................................... 63

Приложение Б. ....................................................................................................... 65

4
ВВЕДЕНИЕ

Актуальность. В современных условиях функционирования рынка


внедрение информационных ресурсов является важнейшей задачей любого
динамично развивающегося предприятия, в число которых входит интернет-
магазин компьютерной техники «Compik». Любая форма хозяйственной
деятельности требует достаточного количества документооборота, поэтому
правильная обработка данных обеспечивает хранение экономической
информации с целью выдачи (регулярной или по запросам) сводной
информации, которая может потребоваться для управления экономическим
объектом.
Интернет-магазин компьютерной техники «Compik» занимается
оптовой и розничной реализацией компьютерной техники и комплектующих.
Клиентами компании являются пользователи сети Интернет. За годы работы
фирма обрела постоянных клиентов, и с каждым годом их число
увеличивается.
Однако рост числа клиентов привел к следующей проблеме. Клиенты
присылают свои потребности в комплектующих в произвольном виде, чаще
всего по телефону и в виде электронного письма. Сложность заключается в
том, что прайс-листы производителей хранятся в разрозненных Excel-файлах.
И для ответа на запрос клиента, сможет ли фирма реализовать
запрашиваемые изделия, менеджеру по продажам требуется вручную найти
каждую позицию во всех прайс-листах производителей. На это уходит
слишком много времени и клиента может обратится к другому поставщику.
В существующем на сегодняшний день сайте компании клиент может только
просматривать данные о контактных телефонах и информацию о фирме в
целом.
Узким местом интернет-магазина «Compik» является выполнение
заявок клиентов и поиск компьютерной техники и комплектующих.

5
Таким образом, актуальность работы обусловлена потребностью
интернет-магазина «Compik» в повышении эффективности деятельности
сотрудников отдела продаж.
Объектом изучения в данной работе является деятельность отдела
продаж.
Предметом изучения является веб-сайт реализации компьютерной
техники и комплектующих.
Целью данного проекта является повышение эффективности процесса
продаж интернет-магазина «Compik» за счет разработки веб-сайта.
Для достижения поставленной цели требуется решить следующие
задачи:
− провести анализ процесса продаж интернет-магазина «Compik»;
− провести анализ бизнес-процесса управления продажами;
− провести анализ существующих решений на рынке;
− разработать пользовательские требования к системе;
− разработать функциональные требования к системе;
− разработать нефункциональные требования к системе;
− разработать функциональную модель системы;
− разработать UML диаграммы;
− разработать веб-сайт;
− провести анализ реализации.

6
1 АНАЛИЗ ТРЕБОВАНИЙ НА РАЗРАБОТКУ

1.1 Описание объекта исследования

Объектом исследования данной работы является интернет-магазин


«Compik».
Предметом деятельности интернет-магазина «Compik» является
розничная и оптовая торговля компьютерами и комплектующими разных
производителей. В интернет-магазин «Compik» ведѐтся бухгалтерская и
статистическая отчѐтность в порядке, установленном законодательством РФ.
Интернет-магазин «Compik» находится на рынке около 5 лет.
Компания зарекомендовала себя на целевом рынке, результатом стало
увеличение объема реализации. Несмотря на то, что ассортимент компании
не широк, но он составлен таким образом, чтобы удовлетворить потребности
(спрос) различных слоев покупателей.
Компания имеет смешанный ассортимент, который представляет собой
набор товаров разных групп, видов, наименований, отличающихся большим
разнообразием функционального назначения.
В продаже находятся в основном товары периодического спроса
(покупка которых осуществляется периодически), но, несмотря на это
ассортимент товара очень широкий и глубокий в пределах отдельных
наименований продукции.
Интернет-магазин «Compik» не стоит на месте, постоянно расширяя
ассортимент изделий. Коллектив компании увеличивается, растет и
профессиональный уровень сотрудников, что позитивно сказывается на
результатах работы.
Целью деятельности компании является удовлетворение потребностей,
а также получение прибыли. Основными потребителями компании являются
пользователи сети Интернет.

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

Рисунок 1 - Дерево целей интернет-магазина «Compik»

Для получения прибыли интернет-магазином электроники «Compik»


необходимо решить следующие задачи.
Во-первых, необходимо увеличить банк клиентуры путем проведения
рекламных и маркетинговых мероприятий. Рекламно-маркетинговые
мероприятия направлены также на стимулирование первой покупки нового
товара, увеличение объема продаж, повышение узнаваемости товара
(обычно, такие мероприятия направлены на развитие старого рынка сбыта),
повышение лояльности к брэнду.
Во-вторых, необходимо произвести анализ предложений поставщиков,
заключить договора с наиболее крупными поставщиками, за счет чего
увеличить ассортимент и снизить цены на товары.
В-третьих, необходимо улучшить качество обслуживания клиентов,
для чего производить обучение персонала и произвести разработку сайта [1].
Рассмотрим организационную структуру интернет-магазина
компьютерной техники «Compik». Она представлена на рисунке 2.
8
Рисунок 2 - Организационная структура интернет-магазина «Compik»

Интернет-магазин «Compik» имеет линейную организационную


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

Если рассматривать рынки, на которых интернет-магазин «Compik»


осуществляет свою деятельность в отдельности, а именно рынок электроники
и бытовой техники, то можно сделать следующие выводы:
На рынке торговли компьютерной техникой действует большое
количество организаций, в том числе и интернет-магазинов. Уникальность
этого рынка заключается в том, что в сфере интернет-коммерции имеют
место быть не только российские компании, но также иностранные фирмы.
Ориентированность таких компаний распространяется на региональную
целевую аудиторию. Примерное количество таких организаций-конкурентов
не более пятидесяти. Компания работает на рынке совершенной
конкуренции. Данный вывод можно обосновать по характеристикам данного
рынка:
 присутствие немалого числа участников конкуренции. Относительно
большое количество компаний, предлагающих похожую, но не идентичную
(с точки зрения покупателей) продукцию и (или) услугу;
 неограниченное проникновение новых фирм на рынок (сравнительно
невелик требующийся начальный капитал для начала предпринимательской
деятельности);
 компании, работающие рынке, не являются крупными
предприятиями (большое количество компаний работает в формате
Интерент-коммерции);
 каждая фирма продает особый тип товара (услуги), который
отличается качеством, оформлением, престижностью, кроме того происходит
соперничество не столько через цены, сколько посредством всемерной
дифференциации продукции;
 доля каждой отдельной организации незначительна;
 возможность продавца и покупателя влиять на цену;

10
 абсолютная однородность выпускаемой продукции в рамках отрасли
[2].
Целью любого бизнеса является получение прибыли. Собственники
бизнеса заинтересованы в том, чтобы предприятие не только показывало
положительный баланс затрат и доходов, но и также демонстрировало
каждый год рост выручки. Таким образом любая коммерческая организация
заинтересована в масштабировании своего бизнеса.
В интернет-магазине «Compik» объектом масштабирования являются
клиенты. Клиент регулярно делает заказы на закупку изделий. Чем больше
клиентов, тем больше заказов.
Узким местом интернет-магазина «Compik» является выполнение
заявок клиентов и поиск компьютерной техники и комплектующих по
требованию клиентов. Каждый системный блок имеет свою комплектацию, а
сборка системного блока под заказ клиента требует тщательной проработки и
подбора совместимых комплектующих. Проблема состоит в том, что в
компании отсутствует единая база доступных товаров и менеджеру
приходится искать информацию в прайс-листах поставщиков, которые
хранятся в разных файлах и в разных форматах.
По этой причине выставление предложения может выполняться с
недопустимой задержкой по времени, что влияет на репутацию и уход
клиента к другому поставщику. Единственным решением на данный момент
является увеличение штата сотрудников, что значительно увеличивает
затраты на процесс, а также снижает качество процесса.
Таким образом, было принято решение в разработке веб-сайта, в
котором в единой базе хранилась бы вся номенклатура компьютеров и
комплектующих, и пользователи могли бы оформлять заказы на покупки в
онлайн-режиме, а не по телефону или электронным письмом.

11
1.3 Разработка модели бизнес-процессов

С целью активизации сбытовой деятельности в интернет-магазине


«Compik» широко используют рекламу и различные приемы, и методы
стимулирования сбыта товаров, что позволяет добиться повышения объема
реализации товаров и соответственно прибыли.
Основными ценовыми средствами стимулирования в интернет-
магазине «Compik» являются сезонные распродажи и бонусные скидки.
Под сезонной распродажей понимают уменьшение цены для
потребителей, совершающих внесезонные покупки товаров. Они позволяют
продавцу поддерживать более стабильный уровень продаж в течение всего
года. Скидка — это деньги, вычтенные из суммы чека, которые клиент
может потратить в другом месте. При использовании бонусной карты деньги
скидки могут быть использованы только в тех торговых точках, которые их
предоставили [3].
В интернет-магазине Compik» используется бонусная система скидок.
При покупке товаров от 1000 рублей покупателям предоставляется карта
постоянного клиента с определенным количеством бонусов (5% от
приобретенного товара). С каждой покупки с карты списываются бонусы
равные от 1 – 20 % стоимости товара. Бонусная карта никогда не бывает с
нулевым балансом, на ней всегда остаѐтся определѐнная сумма, и поэтому
всегда «тянет» своего владельца за покупкой в данный магазин.
К неценовым средствам стимулирования продаж в интернет-магазине
«Compik» относятся:
 стимулирование подарком;
 бесплатная доставка;
 торговля по каталогам;
 использование рекламы;

12
При проведении рекламных кампаний в целях активизации и
стимулирования продаж предприятие используются различные источники
информации, устные консультации, реклама на радио, что даѐт возможность
увеличить поток покупателей и объѐм товарооборота, создаѐт хорошую
репутацию магазину за счѐт более широкого ассортимента товаров, более
высокой культуры обслуживания, его удобного размещения, стабилизацию
объѐма товарооборота.
Модель бизнеса интернет-магазина компьютерной техники «Compik»
по А. Остервальдеру [4] показана в Таблице 1. Александр Остервальдер
представил бизнес-модель как чертѐж, по которому функционирует
компания. Канва представляет модель бизнеса в виде девяти
взаимосвязанных блоков, включающих характеристику ключевых ресурсов и
процессов, задействованных в создании ценности, клиентов и
взаимодействия с ними, ценностное предложение, структуру затрат и
источники доходов.
Таблица 1 – Модель бизнеса «Compik»
Ключевые Ключевые Ценностные Взаимоотношени Потребительски
партнеры виды предложения я с клиентами е сегменты
деятельности
1. Поставщики 1. Реализация 1. 1. Пользователи
2. Порталы с 1. Интернет- компьютерной Индивидуальный интернет
целевой торговля техники подход
аудиторией 2. Репутация 2. База знаний
компании
Ключевые 3. Бонусы, Каналы сбыта
ресурсы акции и скидки
1. Интернет
1. Сайт продажи
2. Группы в
соцсетях

Структура издержек Поступление доходов

1. Оплата рекламы 1. Продажа компьютерной техники


2. Оплата на содержание сайта
3. Зарплата сотрудников
4. Налоги

13
На бизнес-модели интернет-магазина «Compik» по А. Остервальдеру
показана логика деятельности данного предприятия.
1. Основными, ключевыми партнерами интернет-магазина являются
поставщики товаров и интернет-ресурсы, размещающие рекламу магазина на
страницах своих сайтов.
2. Основным видом деятельности интернет-магазина является
Интернет-торговля, соответственно ресурсами деятельности являются сайт
компании и группы в соц. сетях.
3. Основными ценностями компании, которые она может предложить
потребителю являются: основной вид деятельности, т. е. торговля
электронной техникой, репутация компании (объективно сформировавшаяся
совокупность мнений о компании представителей заинтересованных сторон,
так или иначе связанных с данной компанией (сотрудников, инвесторов,
кредиторов, потребителей, представителей власти, аналитиков, СМИ и т. д.)),
бонусные и акционные скидки.
4. Основной потребительский сегмент, на который ориентирована
компания – это пользователи интернет.
5. Взаимоотношения с клиентами компании строятся на накопленных
знаниях о клиенте и индивидуальном подходе к каждому клиенту.
6. Единственный источник дохода компании – это Интернет-торговля
электроникой. К издержкам относятся налоги, содержание сайта, оплата
рекламы, заработная плата сотрудников.
На основании составленной модели (табл. 2) можно сделать следующие
выводы: доходность компании напрямую зависит от продаж, поэтому, для
поднятия лояльности клиентов и узнаваемости бренда компании необходимо
улучшить уровень взаимоотношений с клиентами, а именно,
модернизировать процесс обработки заявок клиентов.
Рассмотрим функциональную схему деятельности отдела продаж.
Контекстная диаграмма бизнес-процесса деятельности специалиста по
продажам представлена на рисунке 3.
14
Рисунок 3 – Контекстная диаграмма

В соответствии с приведенной схемой, в качестве входных потоков


информации используются заказы клиентов на покупку компьютеров и
комплектующих, план продаж и прайс-листы поставщиков. В качестве
механизмов здесь приведен специалист отдела продаж, контролирующими
являются такие воздействия, как должностные инструкции, законодательство
РФ, внутриорганизационные регламенты. На выходе данного процесса
имеются: счет-фактура, отчет по продажам, отчет о количестве клиентов по
категориям.
Под учетом продаж [5] подразумевается организация ведения учета
продаваемых товаров, оперативный ввод информации по заключаемым
договорам, ведение графиков платежей, учет платежей и взаиморасчетов по
договорам и получение соответствующих отчетов.
Учѐт продажи продукции – это один из составляющих элементов
бухгалтерского учѐта предприятия. Продажа, как и любой другой бизнес-
процесс, нуждается в управлении. Диаграмма декомпозиции нулевого уровня

15
представлена на рисунке 4, диаграмма декомпозиции процесса «работа с
клиентами» приведена на рисунке 5.

Рисунок 4 - Диаграмма декомпозиции нулевого уровня

Технология продажи продукции предполагает оформление платежных


документов и счет-фактуры. Под счет-фактурой понимается налоговый
документ строго установленного образца (формата), оформляемый
продавцом товаров (работ, услуг), на которого в соответствии с Налоговым
Кодексом РФ возложена обязанность уплаты в бюджет НДС. Формирование
отчетности в рамках технологии исследуемой организации предполагает
формирование отчета по продажам, анализ по количеству клиентов по
категориям. Диаграмму декомпозиции процесса «Продажа продукции»
можно увидеть на рисунке 6, а диаграмму декомпозиции процесса
«Формирование отчетности» – на рисунке 7.
Как выяснено руководством предприятия, в последнее время часто
возникает ситуация, когда объемы поставок и продаж не совпадают,
несовпадение также может происходить и по наименованию товарных
позиций. В результате большое количество товара остается хранится на

16
складе или не может быть поставлено вовремя клиентам. В связи с этим
фирма несет убытки.

Рисунок 5 - Диаграмма декомпозиции процесса «Работа с клиентами»

Рисунок 6 - Диаграмма декомпозиции процесса «Продажа продукции»

17
Рисунок 7 - Диаграмма декомпозиции процесса «Формирование отчетности»

В настоящее время учет и планирование продаж осуществляется


напрямую менеджерами отдела продаж.
Заявки клиентов на покупку фиксируются в файле Excel, где
указывается номер заявки, наименование клиента, вид продукции и его
количество, а также дата поставки клиенту. Менеджеры отдела продаж
обобщают эти сведения по типу продукции, и, исходя из полученной
информации, формируют план продаж и отчетные документы.
Таким образом, учет продаж включает в себя следующие основные
подпроцессы:
 работа с клиентами;
 продажа продукции;
 анализ продаж;
 формирование отчетности по продажам продукции.
Таким образом, при учете продаж менеджеру, ответственному за учет,
необходимо внести данные о клиенте, договоре, виде товара, его стоимости,
сроке выполнения, сроке оплаты и виде оплаты.

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

1.4 Анализ альтернативных решений

Для выбора прототипа проектируемого интернет-магазина рассмотрим


существующие сайты-аналоги.

Интернет-магазин компьютеров «KNS digital».


Реализует компьютерную технику и комплектующие. Стартовая
страница сайта изображена на рисунке 8.

Рисунок 8 – Стартовая страница сайта «KNS digital»


19
Характеристика сайта.
Сайт компании «KNS digital» расположен в сети Интернет по адресу
https://www.kns.ru. Структура, оформление и функциональность сайта
полностью соответствуют требованиям современного информационного
ресурса. На главной странице мы видим логотип компании, контактные
данные, меню входа и регистрации пользователей, информативное меню.
Сайт создан на белом фоне, сохранена эргономика, информационную
нагрузку составляют каталоги и описание товаров. Не загроможден рекламой
и ненужными ссылками.

Интернет-магазин бытовой техники «Эльдорадо».


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

Рисунок 9 – Стартовая страница сайта «Эльдорадо»

20
Характеристика сайта.
Сайт компании Эльдорадо» расположен в сети Интернет по адресу
https://www.eldorado.ru. Структура, оформление и функциональность сайта
полностью соответствуют требованиям современного информационного
ресурса. На главной странице мы видим логотип компании, меню входа в
личный кабинет и регистрации пользователей, большой ротатор рекламы,
удобное стильное меню, ленту новостей, удобное меню быстрых переходов
по сериям продукции, рекомендуемые товары.
Сайт выполнен на белом фоне в красных тонах, что несколько
усложняет восприятие информации.
Для выбора аналога, проведем сравнение рассмотренных сайтов с
требованиями проектируемой программы.
В ходе изучения каждой программы, был сформулирован ряд
ключевых критериев, по которым имеется возможность провести
сравнительный анализ имеющихся программ:
1. Соответствие стандартам современных сайтов.
2. Удобство.
3. Поиск.
4. Информативность.
5. Каталоги товаров.
6. Форум.
7. Лента новостей.
8. Вебинары.
9. Галереи.
10.Регистрации

21
Оценка программ-аналогов представлена в табл. 2.
Таблица 2 - Сводная таблица сравнения функциональности сайтов
Компания Проектируемая «KNS digital» «Эльдорадо»
Функция программа
Соответствие стандартам + + +
современных сайтов
Удобство + + -
Поиск + + +
Информативность + + -
Каталоги товаров + + +
Форум - - +
Лента новостей + + -
Вебинары - - +
Галереи - - +
Регистрация + + +

Как видно из табл. 2, из рассмотренных сайтов требованиям


разрабатываемой программы наиболее подходит сайт компании «KNS
digital» по своей структуре и функциональности. Его и выбираем за прототип
проектируемой программы.

1.5 Разработка бизнес-требований

На основании проведенного анализа бизнес-процесса деятельности


отдела продаж и сторонних веб-сайтов были разработаны требования к веб-
сайту интернет-магазина «Compik».

1.5.1 Исходные данные

Интернет-магазин «Compik» занимается продажей компьютеров и


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

22
решение разработать веб-сайт для автоматизации деятельности отдела
продаж по выполнению заявок клиентов и формированию отчетности.

1.5.2 Профили заинтересованных лиц

Стейкхолдеры проекта показаны в табл. 3.


Таблица 3 – Профили заинтересованных лиц
Вероятное
Стейкхолдер Ценность отношение к Ограничения
продукту
Увеличение продаж
Руководитель ин- за счет нового про- Заинтересован в фи- Ограниченный бюд-
тернет-магазина дукта, возможность нансовом успехе жет на разработку
«Compik» анализировать соб- проекта функции
ственные продажи
Большой объем Заинтересована в
оплачиваемой ра- финансовом успехе Время на
Команда разработки
боты, новые и инте- проекта, новый разработку
ресные задачи опыт
Заинтересованы в
удобном и простом
Автоматизация
инструменте для
своих процессов, Время на изучение
своих процессов.
снижение затрат на новой функциональ-
Отдел продаж Заинтересованы в
процесс, повышение ности и ввод в экс-
новом продукте,
ценности для клиен- плуатацию
который можно
тов
предложить
клиентам.
Потребности клиен-
Положительное. Ре-
Автоматизация за- тов должны быть
Клиенты ализация их потреб-
казов товаров правильно выяв-
ностей.
лены.
Могут скопировать
Конкуренты Отсутствует. Безразличное.
себе идеи

23
1.5.3 Бизнес-данные

В ходе анализа исходных данных были разработаны бизнес-цели


(таблица 4):
Таблица 4 – Бизнес-цели проекта
ВО-1 Разработать веб-сайт в течении месяца
ВО-2 Улучшить эффективность деятельности отдела продаж
ВО-3 Сократить расходы на отдел продаж
ВО-4 Увеличить продажи за счет устранения узкого места в процессе

1.5.4 Критерии успеха

Заинтересованные лица смогут определить успех проекта по


следующим критериями (табл. 5):
Таблица 5 – Критерии успеха проекта
SM-1 Веб-сайт разработан в течении месяца
SM-2 Улучшена эффективность деятельности отдела продаж
SM-3 Все требования проекта реализованы
SM-4 Увеличены продажи за счет устранения узкого места в процессе

1.5.5 Ограничения и исключения

Были выявлены ограничения и исключения проекта (табл. 6):


Таблица 6 – Ограничения и исключения проекта
LI-1 Данные по заказу будут вносится в ручном режиме
LI-2 Система будет доступна только в локальной сети
LI-3 Система будет реализована в виде веб-сайта

24
1.6 Разработка пользовательских требований

1.6.1 Разработка диаграммы вариантов использования

Для более правильного понимания предмета разработки, дадим


определение основных функций разрабатываемого Интернет-магазина:
1. Предоставление пользователю полной информации о товарах.
2. Предоставление механизма оформления и отслеживания состояния
заказов.
3. Предоставление механизма получения новостей о новых товарах и
прайса товаров.
4. Предоставление механизма поиска по каталогам товаров.
5. Предоставление механизма управления Интернет-магазином.

Построим логическую модель проектируемого интернет-магазина на


языке UML [6].
С помощью модели вариантов использования можно отобразить
основные пользовательские сценарии работы [7] с сайтом.
Диаграмма Вариантов использования. Позволяет в графической форме
смоделировать варианты использования Актеров программы и связи между
ними. Под актером понимается стилизованный человечек, обозначающий
набор ролей пользователя (понимается в широком смысле: человек, внешняя
сущность, класс, другая система), взаимодействующего с некоторой
сущностью (системой, подсистемой, классом). Актеры не могут быть связаны
друг с другом (за исключением отношений обобщения/наследования),В
проектируемой нами программе Актерами являются:
– менеджер
– покупатель.

25
На рисунке 10 представлена диаграмма вариантов использования

программы.
Рисунок 10 – Диаграмма Вариантов использования

Были выявлены основные варианты использования (табл. 7).


Таблица 7 – Варианты использования
UC-1 Авторизоваться в системе
UC-2 Добавлять данные
UC-3 Редактировать данные
UC-4 Удалять данные
UC-5 Оформить заказ
UC-6 Управлять заказом
UC-7 Выполнить заказ
UC-8 Формировать прайс

26
UC-9 Скачать прайс

1.6.2 Разработка спецификаций вариантов использования

В соответствии с методологией UML каждый прецедент должен быть


описан в виде спецификации, содержащей основные свойства прецедента и
сценарий.
В качестве шаблона спецификации для описания прецедента был
выбран шаблон со следующей информацией:
− имя прецедента;
− краткое описание;
− актеры, задействованные в прецеденте;
− основной поток прецедента;
− расширение потока (опционально).
Спецификации вариантов использования представлены на таблицах 8-16.
Таблица 8 – Сценарий UC-1
ID и название: UC-1. Авторизоваться в системе
Краткое описание: Пользователь должен ввести логин и пароль для входа в
систему
Актеры: Менеджер, Покупатель
Основной поток: 1.0 Авторизоваться в системе
1. Пользователь открывает страницу авторизации.
2. Система запрашивает логин и пароль.
3. Пользователь вводит логин и пароль.
4. Система открывает главную страницу сайта (1.1Е1)
Исключение: 1.1Е1 Ошибка авторизации
1. Система выводит ошибку.
2. Переход к шагу 2. (1.0).

Таблица 9 – Сценарий UC-2


ID и название: UC-2. Добавлять данные
Краткое описание: Менеджер должен добавить новый товар в базу данных
Актеры: Менеджер

27
Основной поток: 2.0 Добавить товар
1. Менеджер открывает страницу добавления товара.
2. Система отображает страницу нового товара.
3. Менеджер заполняет поля товара.
4. Менеджер завершает заполнение информации товара.
Продолжение таблицы 9
5. Система отображает новый товар на главной странице
(2.1Е1).
Исключение: 2.1Е1. Ошибка при добавлении товара
1. Система выводит ошибку «Ошибка записи в базу данных».
2. Переход к шагу 2 (2.0)

Таблица 10 – Сценарий UC-3


ID и название: UC-3. Редактировать данные
Краткое описание: Менеджер должен редактировать данные товара в базе
данных
Актеры: Менеджер
Основной поток: 3.0 Редактировать данные товара
1. Менеджер открывает страницу редактирования данных
товара.
2. Система отображает страницу редактирования товара.
3. Менеджер изменяет поля товара.
4. Менеджер завершает заполнение информации товара.
5. Система отображает сообщение «Данные успешно
изменены» (3.1Е1).
Исключение: 3.1Е1. Ошибка при редактировании данных товара
1. Система выводит ошибку «Ошибка записи в базу данных».
2. Переход к шагу 2 (3.0)

Таблица 11 – Сценарий UC-4


ID и название: UC-4. Удаление товара
Краткое описание: Менеджер должен удалить товар в базе данных
Актеры: Менеджер
Основной поток: 4.0 Удаление товара
1. Менеджер открывает страницу редактирования данных
товара.
2. Система отображает страницу редактирования товара.
3. Менеджер кликает на кнопку «Удалить».
4. Менеджер завершает удаление товара.
5. Система отображает сообщение «Данные успешно
удалены» (4.1Е1).
Исключение: 4.1Е1. Ошибка при удалении товара

28
1. Система выводит ошибку «Ошибка удаления данных».
2. Переход к шагу 2 (4.0)

29
Таблица 12 – Сценарий UC-5
ID и название: UC-5. Оформить заказ
Краткое описание: Покупатель должен внести данные о новом заказе
Актеры: Покупатель
Основной поток: 5.0 Создать заказ
1. Покупатель открывает форму создания нового заказа.
2. Система отображает форму нового заказа.
3. Покупатель заполняет поля заказа.
4. Покупатель заполняет список товаров
5. Покупатель завершает заполнение информации по заказу.
6. Система отображает сообщение «Данные введены верно,
новый заказ успешно сохранен» (5.1E1)
Исключение: 5.1Е1. Ошибка создания заказа
1. Система выводит ошибку «Ошибка записи в базу данных».
2. Переход к шагу 2 (5.0)

Таблица 13 – Сценарий UC-6


ID и название: UC-6. Управлять заказом
Краткое описание: Покупатель должен изменить данные о заказе
Актеры: Покупатель
Основной поток: 6.0 Управление заказом
1. Покупатель открывает страницу заказа.
2. Система отображает страницу заказа.
3. Покупатель изменяет данные заказа.
4. Покупатель завершает заполнение информации по заказу.
5. Система отображает сообщение «Данные успешно
изменены» (6.1Е1).
Исключение: 6.1Е1. Ошибка изменения заказа
1. Система выводит ошибку «Ошибка записи в базу данных».
2. Переход к шагу 2 (6.0)

Таблица 14 – Сценарий UC-7


ID и название: UC-7. Выполнить заказ
Краткое описание: Менеджер должен изменить статус заказа на выполнен
Актеры: Менеджер
Основной поток: 7.0 Изменение заказа
1. Менеджер открывает страницу заказа.
2. Система отображает страницу заказа.
3. Менеджер изменяет статус заказа.
4. Менеджер завершает изменение информации по заказу.
5. Система отображает сообщение «Статус успешно изменен»
(7.1Е1).
30
Продолжение таблицы 14
Исключение: 7.1Е1. Ошибка изменения статуса заказа
1. Система выводит ошибку «Ошибка записи в базу данных».
2. Переход к шагу 2 (7.0)

Таблица 15 – Сценарий UC-8


ID и название: UC-8. Формировать прайс
Краткое описание: Менеджер должен сформировать новый прайс
Актеры: Менеджер
Основной поток: 8.0 Формирование прайса
1. Менеджер открывает админ-панель.
2. Система отображает страницу админ-панели.
3. Менеджер кликает на кнопку «Сформировать прайс».
4. Система отображает сообщение «Прайс успешно
сформирован» (8.1Е1)
Исключение: 8.1Е1 Ошибка формирования прайса
1. Система выдает ошибку «Ошибка сохранения файла»
2. Переход к шагу 2 (8.0)

Таблица 16 – Сценарий UC-9


ID и название: UC-9. Скачать прайс
Краткое описание: Покупатель должен скачать прайс
Актеры: Покупатель
Основной поток: 9.0 Скачивание прайса
1. Покупатель открывает главную страницу
2. Система отображает главную страницу.
3. Покупатель кликает на кнопке «Скачать прайс»
4. Система отправляет файл на локальную машину
покупателя (9.1Е1)
Исключение: 9.1Е1 Ошибка отправки файла
1. Система выдает сообщение «Ошибка отправки файла»
2. Переход к шагу 2 (9.0)

1.7 Разработка функциональных требований

На основе анализа пользовательских требований были разработаны


функциональные требования (табл. 17).

31
Таблица 17 – Функциональные требования
Идентификатор Функция/требования
FR-1 Общие функции
FR-1.1 Система должна фиксировать все события в журнале событий
Система должна отправлять на почту администратору письмо
FR-1.2
с сообщением об ошибке при проблемах в работе сайта
FR-1.3 Система должна позволять фильтровать все списки
FR-1.4 Система должна синхронизироваться с БД каждые 10 минут
FR-2 Создание заказа
Система должна предоставлять покупателю возможность
FR-2.1
создавать новые запросы
FR-2.2 Система должна распознавать позиции заказа
Система должна сопоставлять позиции заказа позициям
FR-2.3
товара
Система должна отображать список заказов в соответствии с
FR-2.4
правами
FR-3 Добавление товара
Система должна предоставлять менеджеру возможность
FR-3.1
добавлять новые товары
FR-3.2 Система должна распознавать позиции товара
Система должна отображать список товаров в соответствии с
FR-3.3
правами

1.8 Вывод

Таким образом, было принято решение в разработке веб-сайта, в


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

32
– анализ продаж;
– формирование отчетности по продажам продукции.
Таким образом, при учете продаж менеджеру, ответственному за учет,
необходимо внести данные о клиенте, договоре, виде товара, его стоимости,
сроке выполнения, сроке оплаты и виде оплаты. Кроме того, в отчетный
период менеджеру по продажам необходимо составлять аналитические
отчеты, включающие в себя анализ продаж фирмы за определенный период.
Для выбора прототипа проектируемого интернет-магазина были
рассмотрены существующие сайты-аналоги:
– Интернет-магазин компьютеров «KNS digital»,
– Интернет-магазин бытовой техники «Эльдорадо».
За прототип проектируемой программы был выбран сайт компании
«KNS digital».
На основании проведенного анализа бизнес-процесса деятельности
отдела продаж и сторонних веб-сайтов были разработаны требования к веб-
сайту интернет-магазина «Compik», которые включают в себя:
– исходные данные,
– профили заинтересованных лиц,
– бизнес-данные,
– критерии успеха,
– ограничения и исключения.
Затем была проведена разработка пользовательских требований,
послужившей основанием для выработки функциональных требований.

33
2 ПРОЕКТИРОВАНИЕ ИНФОРМАЦИОННОЙ СИСТЕМЫ

2.1 Разработка функциональной схемы

На основании требований, предъявляемых к системе, можно выделить


следующие основные функции информационной системы [8],
представленные в табл. 18, а также исходные данные и получаемые
результаты.
Таблица 18 – Функции системы
Входные данные Функция Выходные данные
Данные пользователя Авторизация Прайс-лист, отчетность
Данные по заказу Создание заказа Оформленный заказ
Данные по товару Добавление товара Прайс-лист
Формирование списка
Данные из БД Список товаров
товаров
Формирование списка
Список пользователей
пользователей
Формирование списка
Список заказов
заказов

2.2 Разработка алгоритмов системы

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


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

2.2.1 Алгоритм авторизации

Диаграмма, моделирующая поведение функции «Авторизация


пользователей» (рисунок 11).

34
Рисунок 11 – Алгоритм авторизации

Диаграмма изображает последовательность действий системы при


авторизации пользователей. После запроса страницы авторизации система
выводит пользователю страницу авторизации, на которой он может ввести
данные своего аккаунта. После ввода данных запроса пользователя на
авторизацию система проверяет введенные данные [9].
Если поиск аккаунта успешен, то происходит авторизация
пользователя.

35
Если данные аккаунта введены неверно, то пользователь
перенаправляется назад, на страницу авторизации с предложением повторить
ввод.
2.2.2 Алгоритм создания нового заказа

Диаграмма, моделирующая поведение функции «Создание нового


заказа» (рисунок 12).

Рисунок 12 – Алгоритм создания нового заказа

36
Функциональная диаграмма «Создание нового заказа», показанная на
рисунке 12, отображает последовательность действий системы при
выполнении соответствующей функции.
Покупатель переходит на страницу ввода нового заказа и вводит
необходимые данные. Далее система проверяет корректность введенных
данных заказа и сохраняет заказ.
Остальные алгоритмы схожи по своей функциональности с
показанными ранее.

2.3 Разработка диаграммы классов

Для описания структуры системы управления задачами разработаем


диаграмму классов. Она представлена на рисунке 13. Данная диаграмма
показывает классы, их атрибуты и методы, а также взаимосвязи этих классов
[10].

37
Рисунок 13 – Диаграмма классов

Одним из основных классов является класс Пользователь. Он


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

38
Статус. Заказ состоит из позиций заказа, которые пользователь вводит
вручную. Класс Строка заказа содержит такие поля, как Позиция заказа и
количество.
Класс Товар состоит из полей идентификатор, артикул, наименование,
производитель, стоимость, количество, описание и единица измерения. Он
имеет следующие методы: добавитьТовар и записатьДанные.

2.4 Проектирование базы данных

Модель базы данных представляет собой графическое представление


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

39
Рисунок 14 – Модель базы данных программы

База данных состоит из девяти таблиц, шестидесяти девяти полей.


Разработанная база данных находится в третьей нормальной форме и в
нормализации не нуждается.
Создание базы данных производится при помощи DDL-скрипта
(Листинг 1).
Листинг 2.1 - Скрипт создания таблицы SkyUsers
REATE TABLE `skyusers` (
`user_id` int(11) NOT NULL auto_increment,
`user_icq` int(10) NOT NULL,
`user_web` varchar(100) NOT NULL,
`user_email` varchar(100) NOT NULL,
`user_emailview` int(1) default '0',
`user_login` varchar(50) NOT NULL,
`user_pass` varchar(32) NOT NULL,
`user_sol` char(3) NOT NULL,

40
`user_tel` varchar(30) NOT NULL,
`user_fax` varchar(30) NOT NULL,
`user_gorod` varchar(20) NOT NULL,
`user_obl` varchar(25) NOT NULL,
`user_regtime` int(14) NOT NULL,
`user_vizit` int(14) NOT NULL,
`user_osebe` varchar(255) NOT NULL,
`user_prava` int(1) NOT NULL default '1',
`user_ip` varchar(15) NOT NULL,
`user_ras` int(1) NOT NULL default '0',
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=cp1251
PACK_KEYS=0;
Полный DDL-скрипт представлен в Приложении А.

2.5 Вывод

На основании требований, предъявляемых к системе, можно выделить


следующие основные функции информационной системы:
– Авторизация,
– Создание заказа,
– Добавление товара,
– Формирование списка товаров, списка пользователей, списка заказов.
Диаграммы, описывающие функциональную схему, используются для
моделирования поведения системы и процесса выполнения операций. Они
включают диаграммы, моделирующие поведение функции:
– «Авторизация пользователей»,
– «Создание нового заказа».
Для описания структуры системы управления задачами была
разработана диаграмма классов. Данная диаграмма показывает классы, их
атрибуты и методы, а также взаимосвязи этих классов. Основными классами
являются
– Пользователь,
– Заказ,

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

42
3 РАЗРАБОТКА И ТЕСТИРОВАНИЕ ВЕБ-САЙТА

3.1 Создание модели веб-сайта

Модель сайта представляет собой набор тематических рубрик с


распределенными по тематическим разделам документами и гиперссылками
[11]. Перед созданием модели, определимся с основными функциональными
составляющими нового информационного ресурса «Интернет-магазин
компьютерной техники»:
 каталоги товаров;
 лента новостей;
 персональный кабинет пользователя;
 оформление заказов;
 административная панель;
 обратная связь.

Теперь, когда мы определились с основными функциями нового


информационного ресурса, составим логическую структуру сайта. Ее можно
увидеть на рисунке 15.

Рисунок 15 – Логическая структура веб-сайта


43
Рассмотрим подробнее логическую структуру сайта. Он состоит из
Стартовой страницы (Главная страница), с которой посредством навигации
осуществляется доступ к основным информационным блокам (Каталоги,
Личный кабинет, Администрирование и т.д.).
Блок Каталоги содержит структурированные по принадлежности
данные о товарах.
Блок Лента новостей. Позволяет получать данные о новых
поступлениях товаров через RSS-рассылку.
Блок Личный кабинет. Позволяет пользователям управлять
персональными данными и своими заказами.
Блок Администрирование. Предоставляет администратору
инструменты управления содержимым Интернет-магазина.
Блок Прайс. Позволяет формировать и скачивать данные о товарах.

3.2 Создание макета веб-сайта

Наиболее простым отображением будущего сайта считается его


блочная схема. Она отображается в виде основных блочных элементов
страницы на светлом фоне. Следующим этапом является разработка макета
сайта. Это графическая схема с указанием оттенков, отступов и прочих
параметров в статике. Наиболее точно отображает работу будущего сайта в
интерактивной форме прототип. С его помощью можно оценить не только
внешний вид, но и функционал разных элементов.
Макет сайта — нечто среднее между блочной схемой и прототипом.
Практическая реализация разработки начинается с макетирования, то есть
разработки макета сайта [12]. Макет Главной страницы Интернет-магазина
изображен на рисунке 16.

44
Рисунок 16 – Макет Главной страницы

Главная страница сайта должна содержать графическую часть,


навигационное меню сайта, а также контентную область для того, чтобы
посетитель сайта с первой страницы мог получить вводную информацию о
компании, а также ознакомиться с последними новостями компании.
Контентная область первой страницы должна делиться на следующие
разделы:
 список товаров, с ссылкой на подробную информацию о товаре;
 категории - содержит категории товара в виде наименования;
 переход в административную панель сайта;
 вверху страницы отображаются облегченная навигационная панель,
которая обеспечивает переход к основным пунктам меню сайта (О компании,
Новости и т.д.);
 поле поиска – предназначено для выполнения полнотекстового
поиска по сайту.
45
Макет Административной панели Интернет-магазина изображен на
рисунке 17.

Рисунок 17 – Макет Административной панели

3.3 Реализация основных функций

Информационно-программное изделие «Интернет-магазин Compik»


должно выполнять следующие функции:
 навигация по модулям;
 сортировка по категориям товаров;
 ввод, изменение, хранение данных о товарах;
 ввод, изменение, хранение данных о покупателях;
 ввод, изменение, хранение данных об организации;
 оценка качества товара;
 формирование прайс-листа;
 формирование RSS-рассылки.
46
Для реализации проектируемого Интернет-магазина компьютерной
техники в качестве СУБД используется MySQL, в качестве средства
реализации – PHP.
PHP является серверным языком программирования и осуществляет
связь сайта с сервером и его базой данных [13]. Сам по себе язык PHP за
создание сайта не отвечает, и, если взглянуть на код страницы такого
ресурса, мы увидим все тот же HTML, только с вкраплениями PHP кода.
В сайтах на PHP часть кода, написанная на HTML, отвечает за внешний
вид и вывод информации, а PHP в свою очередь за динамику и
интерактивность функционала [14]. Благодаря своей простоте, гибкости и
скорости выполнения операций, язык PHP является одним из самых
популярных стандартов, в веб-разработке.
В разработке преобладающей части сайтов, используется технология
PHP, т.к. связь сайта с базой данных, посредством PHP кода является
неотъемлемым условием, при создании динамичных, многофункциональных
Интернет-ресурсов.

Реализация отображения товара на Главной странице представлена в


Листинге 2.
Листинг 2 – Реализация отображения товара на PHP
if ($mod_id==1){
$skybasetov = mysql_query("SELECT * FROM `skycat_tov` WHERE
`tov_perv`='1' ORDER BY `tov_id` DESC",$db) or
die(mysql_error());
if (mysql_num_rows($skybasetov) > 0)
{
$skyrowtov = mysql_fetch_array($skybasetov);
$gor=0;
echo '<table cellspacing="0" cellpadding="0"
style="margin:0 0 15px 0; border:1px solid #f2f2f2; border-
radius: 4px;"><tr>';
do {
if ($gor >= 3) { echo "<tr>"; }
if ($cv == 1) { $bgzapis = "#ffffff"; $cv=0; } else {
$bgzapis = "#f5f5f5"; $cv++; }
47
if (!empty($skyrowtov['tov_foto'])) {
$img = '<a
href="skycat.php?mod=cat&cat_id='.$skyrowtov['tov_cat'].'&tov_id
='.$skyrowtov['tov_id'].'"><img align="center"
style="margin:10px 0 10px 0;"
src="pic/tov/sm_'.$skyrowtov['tov_foto'].'" border="0" /><br
/></a>'; }
else { $img="<br /><br /><br /><br />"; }
if (!empty($skyrowtov['tov_starcena'])) {
$tov_starcena = '<p>Баллы:
'.($skyrowtov['tov_cena']+$skyrowtov['tov_kolvo']).'</p>'; }
else { $tov_starcena=""; }
if (!empty($skyrowtov['tov_cena'])) {
$tov_cena = '<p class="zag2" style="margin:0 0 0
0;">Цена: '.$skyrowtov['tov_cena'].' '.$cat_val.'</p> <div><a
title="Добавить в корзину" id="'.$skyrowtov['tov_id'].'-
'.$skyrowtov['tov_cena'].'" href="#" class="dobKorz"><img
src="pic/korzinadob.png" /></a></div>'; }
else { $tov_cena=""; }
$tov_nazv = $skyrowtov['tov_nazv'];
if (strlen($tov_nazv) > 40) { $tov_nazv =
substr("$tov_nazv", 0, 40); $tov_nazv = $tov_nazv."..."; }
echo '<td>';
echo'<table class="tbl" width="190" height="270"
bgcolor="'.$bgzapis.'" style="position:relative; margin:5px 7px
5px 7px; padding:0;" cellpadding="0" cellspacing="0"><tr><td
valign="top" align="center" style="margin:0;
padding:0;">'.$img.'<p style="word-wrap: break-word; margin:0;
padding:0;"><a
href="skycat.php?mod=cat&cat_id='.$cat_id.'&tov_id='.$skyrowtov[
'tov_id'].'"><span
class="ch">'.$tov_nazv.'</span></a></p><p>'.$tov_starcena.'</p>
'.$tov_cena.'</td></tr></table>';
echo '</td>';
$gor++;
if ($gor >= 3) { echo '</tr>'; $gor = 0; }
}
while($skyrowtov = mysql_fetch_array($skybasetov));
echo '</tr></table>';
}
}
Реализация добавления товара в Админ-панели представлена в
Листинге 3.
Листинг 3 – Реализация добавления товара на PHP

48
if ($act=="dobavtov")
{ $tov_nazv = globper('tov_nazv');
$tov_artic = globper('tov_artic');
$tov_cena = globper('tov_cena');
$tov_starcena = globper('tov_starcena');
$tov_perv = globper('tov_perv');
$tov_com = globper('tov_com');
$tov_kolvo = globper('tov_kolvo');
if (!empty($tov_perv)) {$tov_perv=1;} else
{$tov_perv=0;}
if (!empty($tov_com)) {$tov_com=1;} else {$tov_com=0;}
if (isset($_POST['tov_opis'])) { $tov_opis =
$_POST['tov_opis']; $tov_opis = trim($tov_opis); $tov_opis =
stripslashes($tov_opis); }
if (empty($tov_nazv)) {
echo "<center><div class=alert>Обязательно
напишите название товара</div></center>";
$act='dobtov';
}
else {
$skybase= mysql_query ("INSERT INTO `skycat_tov`

(`tov_cat`,`tov_foto`,`tov_nazv`,`tov_artic`,`tov_cena`,`tov
_starcena`,`tov_opis`,`tov_kolvo`,`tov_perv`,`tov_com`)
VALUES
('{$cat_id}','{$filename}','{$tov_nazv}','{$tov_artic}','{$tov_c
ena}','{$tov_starcena}','{$tov_opis}','{$tov_kolvo}','{$tov_perv
}','{$tov_com}')",$db) or die(mysql_error());

Полный скрипт интернет-магазина представлен в Приложении Б.

3.4 Тестирование веб-сайта

Для проверки работоспособности сайта, нам необходимо поместить его


на локальный сервер Денвер на виртуальной машине Virtual Box.
Денвер (от сокр. Д.н.w.р или ДНВР — джентльменский набор Web-
разработчика) - набор дистрибутивов и программная оболочка,
предназначенные для создания и отладки сайтов (веб-приложений, прочего
динамического содержимого интернет-страниц) на локальном ПК (без

49
необходимости подключения к сети Интернет) под управлением ОС
Windows.
Сразу после установки доступен полностью работающий веб-сервер
Apache, работающий на локальном компьютере, на котором может работать
неограниченное количество сайтов, что очень эффективно для разработки и
отладки сценариев PHP без загрузки его файлов на удаленный сервер. Для
запуска практически всех утилит «Денвера» используется приложение Run в
подкаталоге /denwer (или /etc) корневого каталога установки «Денвера». При
запуске создается виртуальный диск (по умолчанию Z:), где хранятся все
файлы проектов.
Третья версия поддерживает работу со съемного флеш-накопителя.
Особенностью, отличающей Denwer от других WAMP-дистрибутивов,
является автоматическая правка системного файла hosts, являющегося
локальным аналогом DNS-cервера, что позволяет обращаться к локальным
сайтам, работающим под управлением Денвера, по именам, совпадающим с
именем папки, расположенной в каталоге home Денвера [15]. Программный
комплекс Денвер удобен в установке и прост в использовании. Содержащий
основные дистрибутивы базовый пакет весит всего 5,5 Мб. Это результат
вынесения расширений всех сравнительно редко используемых компонентов
в отдельные пакеты. Базового пакета, упакованного с помощью архиватора
7Zip, большинству разработчиков достаточно для начала работы.
Для того чтобы начать работу с локальным сервером, нужно запустить
денвер, кликнув двойным щелчком по иконке «Start Denwer» на рабочем
столе, открыть браузер и в адресной строке набрать адрес
http://localhost/denwer/. Для того чтобы начать разрабатывать новый проект
на локальном сервере, нужно создать новую папку в директории
C:WebServershomelocalhostwww. Еѐ имя будет соответствовать названию
созданного сайта.
Создаем для созданного Интернет-магазина папку compic.ru в
директории home Денвера. Помещаем туда созданный код. Далее запускаем
50
Интернет-браузер и набираем адрес: compic.ru. Результат отработки скриптов
изображен на рисунке 18.

Рисунок 18 – Отображение Главной страницы

51
Тестируем Административную панель. Для этого нужно кликнуть на
ссылку Администрирование в шапке сайта. В качестве логина вводим
a.n27@inbox.ru, в качестве пароля 12345. Кликаем на кнопку «Войти».
Результат выполнения скрипта изображен на рисунке 19.

Рисунок 19 – Отображение Административной панели

Проверка в локальном сервере Денвер показала, что сайт


работоспособен, и эффективно работает на любой платформе.

3.5 Оценка работоспособности и устойчивости программы

При проведении тестирования в соответствии с требованиями


технического задания были проведены следующие мероприятия по оценке
работоспособности и устойчивости программы:
52
1. Проверка ввода-вывода данных:
– просмотр данных о приборах по экранным формам;
– проверка работоспособности функций выбора данных из
справочников в режимах ввода рабочей информации;
– ввод информации в рабочие таблицы с помощью средств,
предоставляемых программным комплексом;
2. Проверка выдачи всех выходных форм и правильности вводимых
данных;
3. Проверка быстрого поиска по наименованию прибора.
4. Наличие полной, понятной и удобочитаемой пользовательской
документации.
Во всех режимах программа работает корректно, без замечаний.
Пользовательский интерфейс признан достаточно удобным, количество
действий пользователя, а также затраченное время при работе с программой
сведено к необходимому минимуму.
Тестирование программного продукта проводилось на тестовой
площадке Заказчика в течение двух недель. За это время выяснено, что
программный комплекс соответствует предъявляемым требованиям и может
быть принят в эксплуатацию.
Надежность программного обеспечения.
Характеристики этого требования предусматривают:

- отсутствие в готовом программном обеспечении ошибок


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

53
использование справочников исключает ошибочный ввод данных. Т.к
пользователь эти данные не вносит вручную, а только выбирает. Контроль
вводимой информации очень важен в проектируемом программном
обеспечении. ПО максимально предупреждает пользователя от ошибок
случайного или некорректного вода информации. Предусмотрена защита от
непредусмотренных действий пользователя при помощи дополнительных
вопросов пользователю в критических ситуациях.
Проанализировав применение частных показателей характеристики
"Надежность" в разработке, выясняется, что она реализована на уровне 10
баллов.
Удобство программного обеспечения.
Характеристики этого требования предусматривают:
Показатели критерия:
1. Дополнительные знания, необходимые для работы с программой.
2. Наличие пользовательской помощи.
3. Наличие удобного пользовательского интерфейса.
4. Возможность генерации запросов по требуемым реквизитам.
5. Реакция программы на ошибочные действия пользователя.
6. Использование справочников.
Тестирование на удобство применения осуществляется на различных
этапах разработки продукта (образец дизайна на бумаге, программные
прототипы и конечный продукт), чтобы обеспечить обратную связь с
пользователями. Это помогает совершенствовать весь проект в целом,
сокращает количество ошибок, проводит сравнительный анализ продуктов и
версий, а также подтверждает соответствие продукта предъявляемым ему
требованиям.
Поиск информации организован по любым условиям, которые
востребовал Заказчик. Система меню в разработанном программном
обеспечении логически обоснована и реализована посредством экранных
форм понятных и удобных пользователю.
54
Рассмотрев применение частных показателей характеристики
"Удобство эксплуатации", можно сделать вывод, что она реализована на
уровне 9 баллов.
Техническая эффективность.
Характеристики этого требования предусматривают:
Показатели критерия:
- быстродействие и время отклика;
- потребление ресурсов, требования к оптимальному размеру
внешней и оперативной памяти, типу и производительности процессора,
обеспечивающие приемлемый уровень производительности.
Небольшой объем на жестком диске предполагается получить путем
правильного применения реляционного подхода к проектированию Базы
Данных.
Рассмотрев применение частных показателей характеристики
«Технической эффективности», можно сделать вывод, что она реализована
на уровне 10 баллов.
Таким образом, все характеристики требований программного
комплекса выполнены, значит требования функциональной технической
эффективности, надежности и удобства эксплуатации реализованы.
Теперь, когда были разработаны главное меню, основные алгоритмы,
процедуры и функции, пользовательский интерфейс, проведено
тестирование, можно провести его окончательную оценку.
Сведем оценки реализованных требований показателей, по 10 бальной
шкале, в таблицу 19.
Таблица 19 - Оценка разработанного программного обеспечения
Перенормированные оценки Весовые коэф.
Характеристика показателя Оценки ~x 
i i
1 2 3 4
Удобство 9 0,9 0,2
Надежность 10 1 0,4
Техническая
10 1 0,4
эффективность
55
Рассчитаем нормированный интегральный критерий разработанного
программного продукта по определенным выше значениям параметров и
сравним его с планируемым.
 = 0,2*0,9+0,4*1,0+0,4*1= 0,98.
Итак, все требования, предъявляемые к программе, выполняются, так
как разработанный программный продукт имеет оценку по нормированному
интегральному критерию не ниже 0,95.

3.6 Вывод

В рамках разработки веб-сайта была разработана его модель. Модель


сайта – набор тематических рубрик с распределенными по тематическим
разделам документами и гиперссылками. К основным функциональным
составляющим информационного ресурса «Интернет-магазин компьютерной
техники» относятся каталоги товаров, лента новостей, персональный кабинет
пользователя, оформление заказов, административная панель, обратная связь.
Логическая структура сайта состоит из Стартовой страницы (Главная
страница), с которой посредством навигации осуществляется доступ к
основным информационным блокам.
Информационно-программное изделие «Интернет-магазин Compik»
должно выполнять следующие функции:
– навигация по модулям;
– сортировка по категориям товаров;
– ввод, изменение, хранение данных о товарах;
– ввод, изменение, хранение данных о покупателях;
– ввод, изменение, хранение данных об организации;
– оценка качества товара;
– формирование прайс-листа;

56
– формирование RSS-рассылки.
Проверка в локальном сервере Денвер показала, что сайт
работоспособен, и эффективно работает на любой платформе.
Все требования, предъявляемые к программе, выполняются, так как
разработанный программный продукт имеет оценку по нормированному
интегральному критерию не ниже 0,95.

57
ЗАКЛЮЧЕНИЕ

В ходе выполнения ВКР проводился предварительный анализ создания


Интернет-магазина компьютерной техники, а также приводились
сравнительные характеристики с сайтами других интернет-магазинов. Для
достижения целей работы необходимо было разработать веб-сайт, в котором
в единой базе хранилась бы вся номенклатура компьютеров и
комплектующих, и пользователи могли бы оформлять заказы на покупки в
онлайн-режиме, а не по телефону или электронному письму.
В ходе выполнения ВКР было выявлено, что рассмотренные аналоги
уступают по многим параметрам требованиям на разработку. Исследовались
такие сайты-аналоги как:
– Интернет-магазин компьютеров «KNS digital»,
– Интернет-магазин бытовой техники «Эльдорадо».
За прототип проектируемой программы был выбран сайт компании
«KNS digital». На основании проведенного анализа бизнес-процесса
деятельности отдела продаж и сторонних веб-сайтов были разработаны
требования к веб-сайту интернет-магазина «Compik», которые включают в
себя:
– исходные данные,
– профили заинтересованных лиц,
– бизнес-данные,
– критерии успеха,
– ограничения и исключения.
Затем была проведена разработка пользовательских требований,
послужившей основанием для выработки функциональных требований.
В ходе проектирования информационной системы были созданы
диаграммы, описывающие функциональную схему, диаграммы классов, базы
данных.

58
Диаграммы, описывающие функциональную схему, используются для
моделирования поведения системы и процесса выполнения операций. Они
включают диаграммы, моделирующие поведение функции:
– «Авторизация пользователей»,
– «Создание нового заказа».
Для описания структуры системы управления задачами была
разработана диаграмма классов. Данная диаграмма показывает классы, их
атрибуты и методы, а также взаимосвязи этих классов. Основными классами
являются
– Пользователь,
– Заказ,
– Товар.
Далее была спроектирована база данных. Модель базы данных
представляет собой графическое представление структуры хранения данных
в таблицах данных и связей между ними. Для ее создания использовалось
приложение Embarcadero ER Studio 8.0.
В заключительной части выполнения работы была создана логическая
модель сайта, создан дизайн макета и произведено тестирование.
Работоспособность сайта полностью проверена на локальном сервере
Денвер, навигация по сайту производится нормально, разработанный сайт
полностью соответствует логической модели и графическому макету, а также
он создан с учетом всех недостатков рассмотренных аналогов.
Оценивая решение поставленных задач, можно заметить, что они
выполнены в полном объеме.
Таким образом, в процессе выполнения ВКР были выполнены
следующие задачи:
− проведен анализ процесса продаж интернет-магазина «Compik»;
− проведен анализ бизнес-процесса управления продажами;
− проведен анализ существующих решений на рынке;
− разработаны пользовательские требования к системе;
59
− разработаны функциональные требования к системе;
− разработаны нефункциональные требования к системе;
− разработана функциональная модель системы;
− разработаны UML диаграммы;
− разработан веб-сайт;
− проведен анализ реализации веб-сайта.

60
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Создание Web-сайтов. Основное руководство: Мэтью МакДональд


— Москва, Эксмо, 2013 г.- 768 с.
2. Управление компанией. Теория и практика: Кудрина М. В. – Москва,
Экспо, 2012 г. - 326 с.
3. Создание сайтов: А. Бабаев, Н. Евдокимов, М. Боде —Издательство
«Питер», 2014 — 567 с.
4. Построение бизнес-моделей: Пинье Ив, Остервальдер Александр –
Санкт-Петербург, Символ-Плюс, 2019 г.- 752 с.
5. Планирование продаж: принципы, методики, примеры: Андрей
Стыгарь – Санкт-Петербург, Символ-Плюс, 2014 г.- 354 с.
6. Базы данных и UML. Проектирование: Роберт Дж. Мюллер –
Издательство Лори, 2012 - 324 с.
7. Веб-дизайн: С. В. Киселев, С. В. Алексахин, А. В. Остроух —
Москва, Академия, 2019 г.- 64 с.
8. Проектирование прибыльных веб-сайтов: Лавдэй Лэнс, Нихаус
Сандра – CII6.: БХВ-Петербург, 2011 – 478 с.
9. Проектирование информационных систем: Монография: А.В.
Остроух, Н.Е. Суркова – СПб: Изд-во «Лань», 2019 г. – 190 с.
10. Проектирование информационных систем: В.М. Вейцман, – СПб:
Изд-во «Лань», 2019 г. – 256 с.
11. Веб-дизайн. Анализ удобства использования веб-сайтов по
движению глаз: Якоб Нильсен, Кара Перниче — Москва, Вильямс, 2012 г.-
496 с.
12. Изучаем веб-дизайн: [Электронный ресурс] // Проектирование
сайтов. Базовый курс: [сайт] URL: https://www.kodges.ru/komp/design/316584-
izuchaem-veb-dizayn.html (дата обращения: 01.06.2020).

61
13. PHP: Д.В. Котеров, И.В. Симдянов – CII6.: БХВ-Петербург, 2016.
-1088 с.
14. Учебник HTML: А.А. Семикопенко – CII6.: БХВ-Петербург,
2017. - 190 с.
15. Тестирование программного обеспечения [Электронный ресурс]
// Проектирование сайтов. [сайт] URL:
https://www.edsd.ru/ru/uslugi/testirovanie_po (дата обращения: 01.06.2020).

62
ПРИЛОЖЕНИЯ

Приложение А.
DDL-скрипт создания базы данных
CREATE TABLE `skycat_cat` (
`cat_id` int(4) NOT NULL auto_increment,
`cat_papa` int(4) default NULL,
`cat_name` varchar(50) NOT NULL,
`cat_pic` varchar(50) NOT NULL,
PRIMARY KEY (`cat_id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=cp1251 PACK_KEYS=0;
CREATE TABLE `skycat_tov` (
`tov_id` int(10) NOT NULL auto_increment,
`tov_cat` int(4) NOT NULL,
`tov_foto` varchar(16) NOT NULL,
`tov_nazv` varchar(100) NOT NULL,
`tov_artic` varchar(100) NOT NULL,
`tov_cena` varchar(100) NOT NULL,
`tov_starcena` varchar(100) NOT NULL,
`tov_opis` text NOT NULL,
`tov_kolvo` int(10) NOT NULL,
`tov_perv` int(1) default '0',
`tov_com` int(1) NOT NULL default '1',
PRIMARY KEY (`tov_id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=cp1251;
CREATE TABLE `skycom` (
`com_id` int(11) NOT NULL auto_increment,
`com_adm` int(1) NOT NULL default '0',
`com_kgol` varchar(30) default NULL,
`com_papa` int(11) NOT NULL,
`com_kto` varchar(100) NOT NULL,
`com_kogda` int(11) NOT NULL,
`com_email` varchar(200) NOT NULL,
`com_text` text NOT NULL,
`com_ip` varchar(15) NOT NULL,
PRIMARY KEY (`com_id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=cp1251;
CREATE TABLE `skyfoto` (
`foto_id` int(11) NOT NULL auto_increment,
`foto_org` int(3) NOT NULL,
`foto_kmestu` int(5) NOT NULL,
`foto_tit` varchar(150) NOT NULL,
`foto_file` varchar(16) NOT NULL,
PRIMARY KEY (`foto_id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=cp1251;
CREATE TABLE `skymag_stat` (
`stat_id` int(3) NOT NULL auto_increment,
`stat_nazv` varchar(200) NOT NULL,
PRIMARY KEY (`stat_id`)
) ENGINE=MyISAM AUTO_INCREMENT=20 DEFAULT CHARSET=cp1251;
CREATE TABLE `skymag_zak` (
`zak_id` int(9) NOT NULL auto_increment,
`zak_ot` int(7) NOT NULL,
63
`zak_tov` text NOT NULL,
`zak_data` int(11) NOT NULL,
`zak_prim` text NOT NULL,
`zak_stat` int(3) NOT NULL default '1',
`zak_datastat` int(11) NOT NULL,
`zak_arh` int(1) NOT NULL default '0',
`zak_arhadm` int(1) NOT NULL default '0',
PRIMARY KEY (`zak_id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
CREATE TABLE `skymod` (
`mod_id` int(2) NOT NULL auto_increment,
`mod_nazv` varchar(150) NOT NULL,
`mod_text` text NOT NULL,
PRIMARY KEY (`mod_id`)
) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=cp1251;
CREATE TABLE `skynas` (
`nas_id` int(2) NOT NULL auto_increment,
`nas_par` varchar(15) NOT NULL,
`nas_znach` varchar(255) NOT NULL,
PRIMARY KEY (`nas_id`)
) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=cp1251;
CREATE TABLE `skyusers` (
`user_id` int(11) NOT NULL auto_increment,
`user_icq` int(10) NOT NULL,
`user_web` varchar(100) NOT NULL,
`user_email` varchar(100) NOT NULL,
`user_emailview` int(1) default '0',
`user_login` varchar(50) NOT NULL,
`user_pass` varchar(32) NOT NULL,
`user_sol` char(3) NOT NULL,
`user_tel` varchar(30) NOT NULL,
`user_fax` varchar(30) NOT NULL,
`user_gorod` varchar(20) NOT NULL,
`user_obl` varchar(25) NOT NULL,
`user_regtime` int(14) NOT NULL,
`user_vizit` int(14) NOT NULL,
`user_osebe` varchar(255) NOT NULL,
`user_prava` int(1) NOT NULL default '1',
`user_ip` varchar(15) NOT NULL,
`user_ras` int(1) NOT NULL default '0',
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=cp1251 PACK_KEYS=0;

64
Приложение Б.
Скрипт интернет-магазина
<?
if (isset($_GET['logout']))
{ session_start();
if (isset($_SESSION['ses_user'])) { unset($_SESSION['ses_user']); }
if (isset($_SESSION['pass'])) { unset($_SESSION['pass']); }
setcookie('user_id', '', 0, "/");
setcookie('user_pass', '', 0, "/");
header('Location: index.php');
exit;
}
include ("db.php");
$mod_id = globper('mod_id');
$cat_id = globper('cat_id');
$tov_id = globper('tov_id');

//вход, если запомнили


if (isset($_COOKIE['user_id']) && isset($_COOKIE['user_pass']))
{ $_SESSION['ses_user'] = $_COOKIE['user_id'];
$_SESSION['pass'] = $_COOKIE['user_pass'];
}

//проверка
if (isset($_SESSION['ses_user']) && isset($_SESSION['pass']))
{
$ses_user = (isset($_SESSION['ses_user'])) ?
mysql_real_escape_string($_SESSION['ses_user']) : '';
$pass = (isset($_SESSION['pass'])) ?
mysql_real_escape_string($_SESSION['pass']) : '';
$skybase = mysql_query("SELECT
`user_id`,`user_login`,`user_pass`,`user_prava`,`user_email`
FROM `skyusers` WHERE `user_pass`='{$pass}' AND `user_id`='{$ses_user}'
LIMIT 1",$db) or die(mysql_error());
if (mysql_num_rows($skybase) == 1)
{ $skyrow = mysql_fetch_array($skybase);
$prava = $skyrow['user_prava'];
$name = $skyrow['user_login'];
$user_email = $skyrow['user_email'];
}
else {
$prava = 0;
if (isset($_SESSION['ses_user'])) {
unset($_SESSION['ses_user']); }
if (isset($_SESSION['pass'])) { unset($_SESSION['pass']); }
setcookie('user_id', '', 0, "/");
setcookie('user_pass', '', 0, "/");
header('Location: skycat.php');
exit(); }
}

//путь по открытым рубрикам


if (isset($cat_id) && !empty($cat_id) && $act != "login")
{
$cat_idtitl = $cat_id;
for ($i = 0; ; $i++)
{
$skybaseput = mysql_query("SELECT `cat_name`,`cat_papa` FROM
`skycat_cat` WHERE `cat_id`='{$cat_idtitl}'",$db)
or die(mysql_error());
65
$skyrowput = mysql_fetch_array($skybaseput);
$titl = $skyrowput['cat_name']." &raquo; ".$titl;
if ($skyrowput['cat_papa']==0) { break;}
$cat_idtitl = $skyrowput['cat_papa'];
}
}
//название товара в титл
if (isset($tov_id))
{ $skybasetovtit = mysql_query("SELECT `tov_nazv` FROM `skycat_tov` WHERE
`tov_id`='{$tov_id}' LIMIT 1",$db) or die(mysql_error());
$skyrowtovtit = mysql_fetch_array($skybasetovtit);
$titl .= $skyrowtovtit['tov_nazv'];
}

//категории
if (isset($mod_id))
{ $skybasemodtit = mysql_query("SELECT `mod_nazv` FROM `skymod` WHERE
`mod_id`='{$mod_id}' LIMIT 1",$db) or die(mysql_error());
$skyrowmodtit = mysql_fetch_array($skybasemodtit);
$titl = $skyrowmodtit['mod_nazv'];
}

//отправить письмо пользователю


if ($a=='otprpismo' && $prava==5)
{ $user_email = globper('user_email');
$pismo_text = globper('pismo_text');
$headers=null;
$headers.="Content-Type: text/html; charset=windows-1251\r\n";
$headers.="From: SkyScript.ru@SkyMail.v2\r\n";
$headers.="X-Mailer: SkyMail\r\n";
$msg="<html><head><meta http-equiv='Content-Type' content='text/html;
charset=windows-1251'><style>BODY {FONT-FAMILY: arial,helvetica; FONT-SIZE:
12px; COLOR: #333} TD {FONT-SIZE: 12px; COLOR: #333} .sm {FONT-SIZE:
9px;}</style></head><body>".$pismo_text."<br /><br /><br /><hr /><center><a
class='sm' target=_blank href=http://www.skyscript.ru>Скрипт разработан
SkyScript</a></center></body></html>";
mail($user_email, "Сообщение из интернет магазина —".$nazv_cat, $msg,
$headers);
$ok='<div align="center"><div class="ok" style="width:840px;">Письмо
отправлено.</div></div>';
}
//редактировать статус
if ($a=='redstat' && $prava==5)
{ $stat_id = globper('stat_id'); $stat_nazv = globper('stat_nazv');
$skyred = mysql_query("UPDATE `skymag_stat` SET
`stat_nazv`='{$stat_nazv}' WHERE `stat_id`='{$stat_id}'",$db) or
die(mysql_error());

}
//добавить статус
if ($a=='dobstat' && $prava==5)
{ $stat_nazv = globper('stat_nazv');
if (empty($stat_nazv)) { $oshibka='<div align="center"><div
class="alert" style="width:840px;">Напишите название статуса.</div></div>'; }
else {
$skydob = mysql_query ("INSERT INTO `skymag_stat` (`stat_nazv`) VALUES
('{$stat_nazv}')",$db) or die(mysql_error());
}
}
//удалить статус
if ($a=='udstat' && $prava==5)
{ $stat_id = globper('stat_id');
if (!empty($stat_id)) {
66
$skyud = mysql_query ("DELETE FROM `skymag_stat` WHERE
`stat_id`='{$stat_id}'",$db) or die(mysql_error());
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "">
<html xml:lang="ru" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title><? echo $nazv_cat; if (isset($titl)) { echo " &raquo; ".$titl; }
?></title>
<link rel="shortcut icon" href="pic/favicon.ico">
<link href="scripts/jquery-ui.css" rel="stylesheet" type="text/css">
<link href="st.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="scripts/jquery.js"></script>
<script type="text/javascript" src="scripts/jquery.fancybox-
1.2.1.pack.js"></script>
<script type="text/javascript"
src="scripts/jquery.validationengine.js"></script>
<script type="text/javascript" src="scripts/skycat.js"></script>
<script type="text/javascript" src="scripts/skycom.js"></script>
<script type="text/javascript" src="scripts/jquery-ui.js"></script>
</head>
<body>
<div id="mask"></div>
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0"
background="pic/skyscript_fon_verh.png">
<tr>
<td align="center">
<table width="950" border="0" align="center" cellpadding="0" cellspacing="0"
background="pic/skyscript_fon_verh.png">
<tr>
<td width="275"><a href=""><img title="Интернет-магазин компьютеров"
src="pic/skyscript_logo.png" width="275" height="100" border="0"></a></td>
<td>&nbsp;</td>
<td align="left"><span class="bl">Интернет магазин компьютерной
техники</span></td>
<td width="33"><a href="adm.php">Администрирование</a></td>
<td width="65" align="left">
<a href="index.php"><img border="0" src="pic/home.png" width="35"
height="22" alt="начало" /></a></td>
</tr>
</table>
</td>
</tr>
</table>
<form action="skycat.php" method="post" class="kn">
<table style='margin-top:17px;' align='center' width='884' border='0'
cellspacing='0' cellpadding='0'>
<tr><td valign="top" width="265"><img src="pic/rss.png" width="15"
height="15" /> <a target="_blank" href="skycat.xml">RSS лента последних
товаров</a></td>
<td>
<input onblur="inputBG(this,0)" onfocus="inputBG(this,1)" name="poisk"
type="text" style="width:510px;" />
<input name="act" type="hidden" value="poisk"/></td><td>
<input style="width:80px; cursor:pointer;" type="submit" value="найти" />
</td></tr>
</table>
</form>
<? if (isset($oshibka)) { echo '<br />'.$oshibka; } if (isset($ok)) { echo
'<br />'.$ok; } ?>
<!-- Верхнее меню-->
67
<table style="margin-top:25px;" align="center" width="884" border="0"
cellspacing="0" cellpadding="0">
<tr>
<td style="border-bottom:0px solid #cccccc;" valign="middle" align="left"
height="37">
<?
$skybasemod = mysql_query("SELECT `mod_id`,`mod_nazv` FROM `skymod`
ORDER BY `mod_id`",$db) or die(mysql_error());
if (mysql_num_rows($skybasemod) > 0)
{
$skyrowmod = mysql_fetch_array($skybasemod);
do {
echo ' <a class="knop"
href="skycat.php?mod_id='.$skyrowmod['mod_id'].'"
title="'.$skyrowmod['mod_nazv'].'">'.$skyrowmod['mod_nazv'].'</a>';
}
while ($skyrowmod = mysql_fetch_array($skybasemod));
}
if($cat_price == 1) {
?>
<a class="knop" href="skycat.php?mod=price">Прайс</a>
<? } ?>
</td>
<td align="right" style='border-bottom:0px solid #cccccc;'>
<!-- корзина -->
<div id="korzina">
<table cellpadding="0" cellspacing="1" border="0">
<tbody>
<tr class="korzPoln nevid"><td><a id="ochKorz" href="#" class="nevid">
<img title="Очистить корзину" align="right" src="pic/del.png" alt=""
width="12" style="margin:3px 5px 0 0;" />
</a><span class="sm4">товаров:</span> <span id="totalGoods"></span>
</td></tr>
<tr class="korzPoln nevid"><td><span class="sm4">на сумму:</span> <span
id="totalPrice"></span> <? echo $cat_val; ?></td></tr>
<tr class="korzPust"><td class="sm2" style="padding-right:5px;"> Корзина
пуста </td></tr>
</tbody>
</table>
</div>
<!-- завершение корзина -->
</td>
<td width="33" style="border-bottom:0px solid #cccccc;" align="right">
<img id="korzPustPic" src="pic/korzinapust.png" alt="" width="30" />
<a title="Оформить заказ" id="oformit" href="skycat.php?mod=ofzak"
class="nevid sm2"><img src="pic/korzinapoln.png" alt="" width="30"
/></a></td>
</tr>
</table>

<!-- Основная таблица -->


<table width="884" border="0" cellspacing="3" cellpadding="0" align="center"
style="margin-top:15px;">
<tr>
<td valign="top" width="260">
<?
if($prava >0 ) { echo '<a id="tabs31" title="Личный кабинет"
href="?mod=lich" class="knop">'.$name.'</a>';
echo ' <a style="margin:0 0 0 5px" href="?logout" title="Выйти"
class="knop">Выход</a><br /><br /><br />'; }
else { ?>
<a href="#" class="knop" id="vhod">Вход и просмотр заказов</a><br
/><br /><br />
68
<? }
$skybasecat = mysql_query("SELECT `cat_id`,`cat_name`,`cat_pic` FROM
`skycat_cat` WHERE `cat_papa`='0' ORDER BY `cat_name`",$db) or
die(mysql_error());
if (mysql_num_rows($skybasecat) > 0)
{ $skyrowcat = mysql_fetch_array($skybasecat);
do {
if (isset($_COOKIE['Podcat'.$skyrowcat['cat_id']])) { $nev=''; $otkr =
1; $src = 'pic/cat-dt.gif'; }
else { $nev='class="nevid"'; $otkr = 0; $src = 'pic/cat-cl.gif';}
echo '<dl class="cat"><dt>
<img id="otPodcat'.$skyrowcat['cat_id'].'"
cat="'.$skyrowcat['cat_id'].'" otkr="'.$otkr.'" title="Открыть подкатегории"
src="'.$src.'" style="float:left; margin: 4px 5px 0 0; cursor:pointer;" />
<a
href="skycat.php?act=cat&cat_id='.$skyrowcat['cat_id'].'">'.$skyrowcat['cat_n
ame'].'</a></dt>';
$skybasecat1 = mysql_query("SELECT `cat_id`,`cat_name` FROM `skycat_cat`
WHERE `cat_papa`='{$skyrowcat['cat_id']}' ORDER BY `cat_name`",$db) or
die(mysql_error());
if (mysql_num_rows($skybasecat1) > 0)
{
echo '<div id="Podcat'.$skyrowcat['cat_id'].'" '.$nev.'>';
$skyrowcat1 = mysql_fetch_array($skybasecat1);
do {
echo '<dd>';
echo '<a title="'.$skyrowcat1['cat_name'].'"
href="skycat.php?act=cat&cat_id='.$skyrowcat1['cat_id'].'">'.$skyrowcat1['cat
_name'].'</a>';
echo '</dd>';
}
while($skyrowcat1 = mysql_fetch_array($skybasecat1));
echo '</div>';
}
echo '</dl>';
}
while($skyrowcat = mysql_fetch_array($skybasecat));

//ссылки для статистики и увеличения ТИЦ, при необходимости удалите их


echo "<a href='http://skyscript.ru' style='font-
size:0px;'>skyscript.ru</a>";
echo "<a href='http://skystudio.ru' style='font-
size:0px;'>skystudio.ru</a>";
}
else { echo "Нет категорий"; }
?>
</td>
<td valign="top">
<!-- Рабочий блок -->
<?
if (!isset($cat_id) && !isset($mod_id) && !isset($mod) && !isset($act)) {
$mod_id = 1; }
if (isset($mod_id))
{
$skybasemodpr = mysql_query("SELECT `mod_nazv`,`mod_text` FROM `skymod`
WHERE `mod_id`='{$mod_id}' LIMIT 1",$db) or die(mysql_error());
$skyrowmodpr = mysql_fetch_array($skybasemodpr);
echo '<div class="zag2" style="margin:0 0 5px
0;">'.$skyrowmodpr['mod_nazv'].'</div>';
echo $skyrowmodpr['mod_text'];

//вывод товаров на 1 страницу


if ($mod_id==1){
69
$skybasetov = mysql_query("SELECT * FROM `skycat_tov`
WHERE `tov_perv`='1' ORDER BY `tov_id` DESC",$db) or die(mysql_error());
if (mysql_num_rows($skybasetov) > 0)
{
$skyrowtov = mysql_fetch_array($skybasetov);
$gor=0;
echo '<table cellspacing="0" cellpadding="0"
style="margin:0 0 15px 0; border:1px solid #f2f2f2; border-radius:
4px;"><tr>';
do {
if ($gor >= 3) { echo "<tr>"; }
if ($cv == 1) { $bgzapis = "#ffffff";
$cv=0; } else { $bgzapis = "#f5f5f5"; $cv++; }
if (!empty($skyrowtov['tov_foto'])) {
$img = '<a
href="skycat.php?mod=cat&cat_id='.$skyrowtov['tov_cat'].'&tov_id='.$skyrowtov
['tov_id'].'"><img align="center" style="margin:10px 0 10px 0;"
src="pic/tov/sm_'.$skyrowtov['tov_foto'].'" border="0" /><br /></a>'; }
else { $img="<br /><br /><br /><br />"; }
if (!empty($skyrowtov['tov_starcena'])) {
$tov_starcena = '<p>Баллы:
'.$skyrowtov['tov_starcena'].'</p>'; }
else { $tov_starcena=""; }
if (!empty($skyrowtov['tov_cena'])) {
$tov_cena = '<p class="zag2"
style="margin:0 0 0 0;">Цена: '.$skyrowtov['tov_cena'].' '.$cat_val.'</p>
<div><a title="Добавить в корзину" id="'.$skyrowtov['tov_id'].'-
'.$skyrowtov['tov_cena'].'" href="#" class="dobKorz"><img
src="pic/korzinadob.png" /></a></div>'; }
else { $tov_cena=""; }
$tov_nazv = $skyrowtov['tov_nazv'];
if (strlen($tov_nazv) > 40) { $tov_nazv =
substr("$tov_nazv", 0, 40); $tov_nazv = $tov_nazv."..."; }
echo '<td>';
echo'<table class="tbl" width="190"
height="270" bgcolor="'.$bgzapis.'" style="position:relative; margin:5px 7px
5px 7px; padding:0;" cellpadding="0" cellspacing="0"><tr><td valign="top"
align="center" style="margin:0; padding:0;">'.$img.'<p style="word-wrap:
break-word; margin:0; padding:0;"><a
href="skycat.php?mod=cat&cat_id='.$cat_id.'&tov_id='.$skyrowtov['tov_id'].'">
<span class="ch">'.$tov_nazv.'</span></a></p><p>'.$tov_starcena.'</p>
'.$tov_cena.'</td></tr></table>';
echo '</td>';
$gor++;
if ($gor >= 3) { echo '</tr>'; $gor = 0; }
}
while($skyrowtov =
mysql_fetch_array($skybasetov));
echo '</tr></table>';
}
}
}
//путь по открытым рубрикам
//категории
if (isset($cat_id))
{
$cat_idput = $cat_id;
for ($i = 0; ; $i++)
{
$skybaseput = mysql_query("SELECT `cat_id`,`cat_name`,`cat_papa`
FROM `skycat_cat` WHERE `cat_id`='{$cat_idput}'",$db)
or die(mysql_error());
$skyrowput = mysql_fetch_array($skybaseput);
70
$catput = "<a class='ch'
href='skycat.php?act=cat&cat_id=".$skyrowput['cat_id']."'>
".$skyrowput['cat_name']."</a> <span
class='kr'>&raquo;</span> ".$catput;
if ($skyrowput['cat_papa']==0) { break;}
$cat_idput = $skyrowput['cat_papa'];
}
$catput = "<a class='ch' title='к рубрикам'
href='skycat.php'>Главная</a>
<span class='kr'>&raquo;</span> ".$catput."";
$catsey = $skyrowput['cat_name'];
echo '<div style="background-color:#f5f5f5; padding:10px; margin:0
0 10px 0; border-radius: 4px; ">';
echo $catput;
echo '</div>';

//вывод товара крупно


if (isset($tov_id))
{
$skybasetov = mysql_query("SELECT * FROM `skycat_tov` WHERE
`tov_id`='{$tov_id}' LIMIT 1",$db) or die(mysql_error());
$skyrowtov = mysql_fetch_array($skybasetov);
if (!empty($skyrowtov['tov_foto'])) { $tov_foto = '<td
valign="top" width="1">
<a class="gallery" rel="group"
href="pic/tov/'.$skyrowtov['tov_foto'].'">
<img style="margin:0 10px 3px 0;"
src="pic/tov/sm_'.$skyrowtov['tov_foto'].'"></a></td>'; }
else { $tov_foto = '<td></td>'; }
$tov_nazv = $skyrowtov['tov_nazv'];
$tov_opis = $skyrowtov['tov_opis'];
$tov_artic = $skyrowtov['tov_artic'];
$tov_cena = $skyrowtov['tov_cena'];
$tov_starcena = $skyrowtov['tov_starcena'];
$tov_opis = $skyrowtov['tov_opis'];
$tov_perv = $skyrowtov['tov_perv'];
$tov_kolvo = $skyrowtov['tov_kolvo'];
$tov_status = $skyrowtov['tov_kolvo'];
if (!empty($tov_artic)) { $tov_artic = '<p>Артикул:
'.$tov_artic.'</p>'; }
if (!empty($tov_starcena)) { $tov_starcena = '<p>Баллы:
'.$tov_starcena.'</p>'; }
if (!empty($tov_cena)) { $tov_cena = '<p class="zag2"
style="margin-bottom:0;">Цена: '.$tov_cena.' '.$cat_val.' <a title="Добавить
в корзину" id="'.$skyrowtov['tov_id'].'-'.$skyrowtov['tov_cena'].'" href="#"
class="dobKorz"><img src="pic/korzinadob.png" /></a></p>'; }
if (!empty($tov_kolvo)) { $tov_kolvo = '<p class="sm">Количество и
балы: '.$tov_kolvo.'</p>';} else { $tov_kolvo =''; }

echo '<table border="0" style="margin:0 0 20px


0;"><tr>'.$tov_foto.'';
echo '<td
valign="top"><h4>'.$tov_nazv.'</h4>'.$tov_artic.$tov_starcena.$tov_cena.$tov_
kolvo.'</td></tr>';
$skybasefoto = mysql_query("SELECT * FROM `skyfoto` WHERE
`foto_kmestu`='{$tov_id}' ORDER BY `foto_id`",$db);
if (mysql_num_rows($skybasefoto) > 0)
{
echo '<tr><td colspan="2">';
$skyrowfoto = mysql_fetch_array($skybasefoto);
do {
echo '<table align="left" border="0"><tr><td>

71
<a class="gallery" rel="group"
title="'.$skyrowfoto['foto_tit'].'"
href="pic/tov/'.$skyrowfoto['foto_file'].'">
<img style="margin-right:5px;" height="40"
src="pic/tov/sm_'.$skyrowfoto['foto_file'].'"></a></td></tr></table>';
}
while ($skyrowfoto = mysql_fetch_array($skybasefoto));
echo '</td></tr>';
}
echo '<tr><td colspan="2">'.$tov_opis.'</td></tr>';
echo '</table>';
if ($skyrowtov['tov_com']==1) { $com=$skyrowtov['tov_id'];
include("skycom.php"); echo '<br /><br />';}
}
else {
$skybasecat = mysql_query("SELECT `cat_id`,`cat_name` FROM `skycat_cat` WHERE
`cat_papa`='{$cat_id}' ORDER BY `cat_name`",$db)
or die(mysql_error());
if (mysql_num_rows($skybasecat) > 0)
{
$skyrowcat = mysql_fetch_array($skybasecat);
echo '<dl class="cat" style="width:450px;">';
do {
//подсчет кол-ва позиций в рубрике
$skybasekol = mysql_query("SELECT `cat_id` FROM
`skycat_cat`
WHERE `cat_papa`='{$skyrowcat['cat_id']}'",$db) or
die(mysql_error());
if (mysql_num_rows($skybasekol) > 0)
{
$skyrowkol = mysql_fetch_array($skybasekol);
do {
$skybasekolvo = mysql_query("SELECT `tov_id` FROM
`skycat_tov`
WHERE `tov_cat`='{$skyrowkol['cat_id']}'",$db) or
die(mysql_error());
$kolvotov = $kolvotov + mysql_num_rows($skybasekolvo);
}
while ($skyrowkol =
mysql_fetch_array($skybasekol));
if ($kolvotov>0) {$kolvotov="(".$kolvotov.")";}
else {$kolvotov="";}
}
else
{
$skybasekolvo = mysql_query("SELECT `tov_id` FROM
`skycat_tov`
WHERE `tov_cat`='{$skyrowcat['cat_id']}'",$db) or
die(mysql_error());
$kolvotov = mysql_num_rows($skybasekolvo);
if ($kolvotov>0) {$kolvotov="(".$kolvotov.")";} else
{$kolvotov="";}
}
echo '<dd><a
href="skycat.php?act=cat&cat_id='.$skyrowcat['cat_id'].'"

title="'.$skyrowcat['cat_name'].'">'.$skyrowcat['cat_name'].'</a>
<span style="margin-left:3px;"
class="sm2">'.$kolvotov.'</span></dd>';
$kolvotov = '';
}
while($skyrowcat = mysql_fetch_array($skybasecat));
echo '</dl>';
72
}
else {
$skybasecatname = mysql_query("SELECT `cat_name` FROM
`skycat_cat` WHERE `cat_id`='{$cat_id}'",$db) or die(mysql_error());
$skyrowcatname = mysql_fetch_array($skybasecatname);
echo '<p class="zag2" style="margin:15px 0 0 0; font-size:140%; font-
weight:bold;">';
echo $skyrowcatname['cat_name'].':</p>';

// вывод товаров
$num = 6;
$link .= 'skycat.php?act=cat&cat_id='.$cat_id.'&';
$skybase1 = mysql_query("SELECT COUNT(*) FROM `skycat_tov` WHERE
`tov_cat`='{$cat_id}'");
$temp = mysql_fetch_array($skybase1);
$posts = $temp[0];
$vsegop = (($posts - 1) / $num) + 1;
$vsegop = intval($vsegop);
$p = intval($p);
if(empty($p) or $p < 0) $p = 1;
if($p > $vsegop) $p = $vsegop;
$start = $p * $num - $num;
if ($start < 0) { $start = 0;}
if ($p > 3) $pervpage = ' <a class=knop href='.$link.'p=1>1</a> ';
if ($p != 1) $predpage = ' <a class=knop title=предидущая
href='.$link.'p='.($p-1).'><</a> ';
if ($vsegop > 3 and $p > 4) { $toch = ' <span class=ser> ... </span> '; }
$p2 = $vsegop - $p;
if ($vsegop > 3 and $p2 >= 4) { $toch2 = ' <span class=ser> ... </span> '; }
if (($p+2) < $vsegop) $poslpage = ' <a class=knop
href='.$link.'p='.$vsegop.'>' .$vsegop. '</a> ';
if ($p != $vsegop) $nextpage = ' <a class=knop title=следующая
href='.$link.'p='. ($p + 1) .'>></a>';
if($p - 3 > 0) $page3left = ' <a class=knop href='.$link.'p='.($p-3).'>'.($p-
3).'</a> ';
if($p - 2 > 0) $page2left = ' <a class=knop href='.$link.'p='.($p-2).'>'.($p-
2).'</a> ';
if($p - 1 > 0) $page1left = ' <a class=knop href='.$link.'p='.($p-1).'>'.($p-
1).'</a> ';
if($p + 3 <= $vsegop) $page3right = ' <a class=knop href='.$link.'p='.($p +
3).'>'.($p+3).'</a> ';
if($p + 2 <= $vsegop) $page2right = ' <a class=knop href='.$link.'p='.($p +
2).'>'.($p+2).'</a> ';
if($p + 1 <= $vsegop) $page1right = ' <a class=knop href='.$link.'p='.($p +
1).'>'.($p+1).'</a> ';
$skybasetov = mysql_query("SELECT * FROM `skycat_tov` WHERE
`tov_cat`='{$cat_id}' ORDER BY `tov_id` DESC LIMIT $start, $num",$db) or
die(mysql_error());
if (mysql_num_rows($skybasetov) > 0)
{
$skyrowtov = mysql_fetch_array($skybasetov);
if ($vsegop > 1) { if ($p==1) {$startol=1; } if
($p==2) {$startol=$num+1; }
if ($p>=3) {$startol=$num*($p-1)+1; } } else
{$startol=1;}
$gor=0;
echo '<table cellspacing="0" cellpadding="0"
style="margin:0 0 15px 0; border:1px solid #f2f2f2;"><tr>';
do {
if ($gor >= 3) { echo "<tr>"; }
if ($cv == 1) { $bgzapis = "#ffffff";
$cv=0; } else { $bgzapis = "#f5f5f5"; $cv++; }
if (!empty($skyrowtov['tov_foto'])) {
73
$img = '<a
href="skycat.php?mod=cat&cat_id='.$cat_id.'&tov_id='.$skyrowtov['tov_id'].'">
<img align="center" style="margin:10px 0 10px 0;"
src="pic/tov/sm_'.$skyrowtov['tov_foto'].'" border="0" /><br /></a>'; }
else { $img="<br /><br /><br /><br />"; }
if (!empty($skyrowtov['tov_starcena'])) {
$tov_starcena = '<p>Баллы:
'.$skyrowtov['tov_starcena'].'</p>'; }
else { $tov_starcena=""; }
if (!empty($skyrowtov['tov_cena'])) {
$tov_cena = '<p class="zag2"
style="margin:0 0 0 0;">Цена: '.$skyrowtov['tov_cena'].' '.$cat_val.'</p>
<div><a title="Добавить в корзину" id="'.$skyrowtov['tov_id'].'-
'.$skyrowtov['tov_cena'].'" href="#" class="dobKorz"><img
src="pic/korzinadob.png" /></a></div>'; }
else { $tov_cena=""; }

$tov_nazv = $skyrowtov['tov_nazv'];
if (strlen($tov_nazv) > 40) { $tov_nazv =
substr("$tov_nazv", 0, 40); $tov_nazv = $tov_nazv."..."; }
echo '<td>';
echo'<table class="tbl" width="190"
height="270" bgcolor="'.$bgzapis.'" style="position:relative; margin:5px 7px
5px 7px; padding:0;" cellpadding="0" cellspacing="0"><tr><td valign="top"
align="center" style="margin:0; padding:0;">'.$img.'<p style="word-wrap:
break-word; margin:0; padding:0;"><a
href="skycat.php?mod=cat&cat_id='.$cat_id.'&tov_id='.$skyrowtov['tov_id'].'">
<span class="ch">'.$tov_nazv.'</span></a></p><p>'.$tov_starcena.'</p>
'.$tov_cena.'</td></tr></table>';
echo '</td>';
$gor++;
if ($gor >= 3) { echo '</tr>'; $gor = 0; }
}
while($skyrowtov =
mysql_fetch_array($skybasetov));
echo '</tr></table>';

// Вывод меню если страниц больше одной


if ($vsegop > 1)
{ Error_Reporting(E_ALL & ~E_NOTICE);
echo "<center><div class=navbar>";
echo $predpage.$pervpage.$toch.$page2left.$page1left.'<span
class="nav"><strong>'.$p.'</strong></span>'.$page1right.$page2right.$toch2.$p
oslpage.$nextpage;
echo "</div><br />";
}
}
else
{
echo "<br />В данной категории пока нет товаров<br
/><br /><br /><br />";
}
}
}
?>
</div>
<!-- /page -->
<? }

//результаты поиска
if ($act=="poisk")
{
$poisk = globper('poisk');
74
$num = 10;
$link = 'skycat.php?act=poisk&poisk='.$poisk.'&';
if($a=='arhzak') { $link.='a=arhzak&'; }
$skybase1 = mysql_query("SELECT COUNT(*) FROM `skycat_tov` WHERE `tov_nazv`
LIKE '%$poisk%' OR `tov_opis` LIKE '%$poisk%'");
$temp = mysql_fetch_array($skybase1);
$posts = $temp[0];
$vsegop = (($posts - 1) / $num) + 1;
$vsegop = intval($vsegop);
$p = intval($p);
if(empty($p) or $p < 0) $p = 1;
if($p > $vsegop) $p = $vsegop;
$start = $p * $num - $num;
if ($start < 0) { $start = 0;}
if ($p > 3) $pervpage = ' <a class=knop href='.$link.'p=1>1</a> ';
if ($p != 1) $predpage = ' <a class=knop title=предидущая
href='.$link.'p='.($p-1).'><</a> ';
if ($vsegop > 3 and $p > 4) { $toch = ' <span class=ser> ... </span> '; }
$p2 = $vsegop - $p;
if ($vsegop > 3 and $p2 >= 4) { $toch2 = ' <span class=ser> ... </span> '; }
if (($p+2) < $vsegop) $poslpage = ' <a class=knop
href='.$link.'p='.$vsegop.'>' .$vsegop. '</a> ';
if ($p != $vsegop) $nextpage = ' <a class=knop title=следующая
href='.$link.'p='. ($p + 1) .'>></a>';
if($p - 3 > 0) $page3left = ' <a class=knop href='.$link.'p='.($p-3).'>'.($p-
3).'</a> ';
if($p - 2 > 0) $page2left = ' <a class=knop href='.$link.'p='.($p-2).'>'.($p-
2).'</a> ';
if($p - 1 > 0) $page1left = ' <a class=knop href='.$link.'p='.($p-1).'>'.($p-
1).'</a> ';
if($p + 3 <= $vsegop) $page3right = ' <a class=knop href='.$link.'p='.($p +
3).'>'.($p+3).'</a> ';
if($p + 2 <= $vsegop) $page2right = ' <a class=knop href='.$link.'p='.($p +
2).'>'.($p+2).'</a> ';
if($p + 1 <= $vsegop) $page1right = ' <a class=knop href='.$link.'p='.($p +
1).'>'.($p+1).'</a> ';
$skybaseob = mysql_query("SELECT * FROM `skycat_tov` WHERE `tov_nazv` LIKE
'%$poisk%' OR `tov_opis` LIKE '%$poisk%' LIMIT $start, $num",$db) or
die(mysql_error());
if (empty($poisk)) { echo '<p class="alert">Обязательно введите ключевое
слово для поиска</p>';}
else {
echo '<div style="background-color:#f5f5f5; padding:10px;
margin:0 0 10px 0;">';
echo 'Найдено товаров: <strong>'.$posts.'</strong> по
запросу: <strong>'.$poisk.'</strong>';
echo '</div>';
if (mysql_num_rows($skybaseob) > 0)
{
$skyrowob = mysql_fetch_array($skybaseob);
if ($vsegop > 1) { if ($p==1) {$startol=1; } if
($p==2) {$startol=$num+1; }
if ($p>=3) {$startol=$num*($p-1)+1; } } else
{$startol=1;}
echo '<ol class="results"
START="'.$startol.'">';
do {
if (!empty($skyrowob['tov_foto'])) {
$img = '<td valign="top" style="margin:0;
padding:0;"><img width="40px" align="left" style="margin:5px 10px 0 0;"
src="pic/tov/sm_'.$skyrowob['tov_foto'].'"
border="0" /></td>'; }
else { $img=""; }
75
$tov_nazv = $skyrowob['tov_nazv'];
if (strlen($tov_nazv) > 245) { $tov_nazv =
substr("$ob_text", 0, 245); $tov_nazv = $tov_nazv."..."; }
$skyrowob['tov_opis'] =
strip_tags($skyrowob['tov_opis']);
$tov_opis = $skyrowob['tov_opis'];
if (strlen($tov_opis) > 245) { $tov_opis =
substr("$tov_opis", 0, 245); $tov_opis = $tov_opis."..."; }
$skybasekuda = mysql_query("SELECT `cat_name` FROM
`skycat_cat`
WHERE `cat_id`='{$skyrowob['tov_cat']}' LIMIT 1",$db) or
die(mysql_error());
$skykuda = mysql_fetch_array($skybasekuda);
echo '<li class="cat" style="border-bottom:1px solid #f2f2f2;
margin:10px 0 15px 0;">';
if (!empty($skyrowob['tov_cena'])) { echo '<div
style="float:right; width:35px;"><a title="Добавить в корзину"
id="'.$skyrowob['tov_id'].'-'.$skyrowob['tov_cena'].'" href="#"
class="dobKorz"><img src="pic/korzinadob.png" /></a></div>'; }
echo '<h4><a title=""
href="skycat.php?mod=cat&cat_id='.$skyrowob['tov_cat'].'&tov_id='.$skyrowob['
tov_id'].'">'.$skyrowob['tov_nazv'].' — '.$skyrowob['tov_cena'].'
'.$cat_val.'</a></h4><div class="sm4" style="margin:0; padding:0;">Рубрика:
<a href="skycat.php?cat_id='.$skyrowob['tov_cat'].'"><span
class="sm4">'.$skykuda['cat_name'].'</span></a></div><table border="0"
style="margin:0; padding:0;" cellpadding="0" cellspacing="0"><tr>'.$img.'<td
valign="top" style="margin:0; padding:4px 0 10px 0;"><p style="margin:0;
width:525px; padding:0; word-wrap: break-
word;">'.$tov_opis.'</p></td></tr></table></li>';
}
while($skyrowob =
mysql_fetch_array($skybaseob));
echo '</ol>';
// Вывод меню если страниц больше одной
if ($vsegop > 1)
{ Error_Reporting(E_ALL & ~E_NOTICE);
echo "<center><div class=navbar>";
echo $predpage.$pervpage.$toch.$page2left.$page1left.'<span
class="nav"><strong>'.$p.'</strong></span>'.$page1right.$page2right.$toch2.$p
oslpage.$nextpage;
echo "</div><br />";
}
}
else
{
echo "";
}
}
}

// Прайс
if ($mod=='price')
{
echo '<div align="left" style="margin:0 0 0 0; border-bottom:2px solid
#f2f2f2; padding:0px 0px 16px 0px; width:615px; background-color:#FFF;">';
echo '<div class="zag2" style="border:0px solid #000;">Прайс-лист <div
style="float:right; width:150px; border:0px solid #000;" align="right"><a
href="price.xls"><span class="ser">скачать <img style="display:inherit;"
src="pic/excel.png" alt="" width="20"/></span></a></div></div>';
echo '<table width="100%" border="0" cellpadding="0" cellspacing="0"
class="tbl">';

76
echo '<tr height="15"><td align="center" class="sm2">наименование</td><td
align="center" class="sm2">артикул</td><td align="center" class="sm2">цена
('.$cat_val.')</td><td align="center" class="sm2">количество</td></tr>';
include("scripts/excelwriter.inc.php");
$excel=new ExcelWriter("price.xls");
if($excel==false)
echo $excel->error;
$myArr=array($nazv_cat,"","","");
$excel->writeLine($myArr);
$myArr=array("","","","");
$excel->writeLine($myArr);
$myArr=array("наименование","артикул","цена(".$cat_val.")","количество");
$excel->writeLine($myArr);
$myArr=array("","","","");
$excel->writeLine($myArr);

//1 уровень
$skybasecat = mysql_query("SELECT `cat_id`,`cat_name` FROM `skycat_cat` WHERE
`cat_papa`='{$cat_id}' ORDER BY `cat_name`",$db) or die(mysql_error());
if (mysql_num_rows($skybasecat) > 0)
{
$skyrowcat = mysql_fetch_array($skybasecat);
do {
echo '<tr bgcolor="#fde9f1" height="25"><td colspan="4"
style="padding-left:5px;"><a
href="skycat.php?mod=cat&cat_id='.$skyrowcat['cat_id'].'"

title="'.$skyrowcat['cat_name'].'"><strong>'.$skyrowcat['cat_name'].'</s
trong></a></td></tr>';
$myArr=array($skyrowcat['cat_name']);
$excel->writeLine($myArr);
//2 уровень
$skybasecat1 = mysql_query("SELECT `cat_id`,`cat_name` FROM
`skycat_cat` WHERE `cat_papa`='{$skyrowcat['cat_id']}' ORDER BY
`cat_name`",$db) or die(mysql_error());
if (mysql_num_rows($skybasecat1) > 0)
{
$skyrowcat1 = mysql_fetch_array($skybasecat1);
do {
echo '<tr><td colspan="4" height="25" style="padding-
left:12px; background:url(pic/bg_podcat.png) 0px 7px no-repeat"><a
title="'.$skyrowcat1['cat_name'].'"
href="skycat.php?mod=cat&cat_id='.$skyrowcat1['cat_id'].'"><strong
style="color:#555555;">'.$skyrowcat1['cat_name'].'</strong></a></td></tr>';
$myArr=array($skyrowcat1['cat_name']);
$excel->writeLine($myArr);
//3 уровень
$skybasecat3 = mysql_query("SELECT `cat_id`,`cat_name`
FROM `skycat_cat` WHERE `cat_papa`='{$skyrowcat1['cat_id']}' ORDER BY
`cat_name`",$db) or die(mysql_error());
if (mysql_num_rows($skybasecat3) > 0)
{
$skyrowcat3 = mysql_fetch_array($skybasecat3);
do {
echo '<tr><td colspan="4" height="25"
style="padding-left:23px; background:url(pic/bg_podcat.png) 10px 7px no-
repeat"><a title="'.$skyrowcat3['cat_name'].'"
href="skycat.php?mod=cat&cat_id='.$skyrowcat3['cat_id'].'"><span
style="color:#777777;"><strong>'.$skyrowcat3['cat_name'].'</strong></span></a
></td></tr>';
$myArr=array($skyrowcat3['cat_name']);
$excel->writeLine($myArr);
//4 уровень
77
$skybasecat4 = mysql_query("SELECT `cat_id`,`cat_name`
FROM `skycat_cat` WHERE `cat_papa`='{$skyrowcat3['cat_id']}' ORDER BY
`cat_name`",$db) or die(mysql_error());
if (mysql_num_rows($skybasecat4) > 0)
{
// $skyrowcat4 = mysql_fetch_array($skybasecat4);
// do {
// echo '<tr><td colspan="4" height="25"
style="padding-left:33px; background:url(pic/bg_podcat.png) 20px 7px no-
repeat"><a title="'.$skyrowcat4['cat_name'].'"
href="skycat.php?mod=cat&cat_id='.$skyrowcat4['cat_id'].'"><span
style="color:#333333;">'.$skyrowcat4['cat_name'].'</span></a></td></tr>';
// $myArr=array($skyrowcat4['cat_name']);
// $excel->writeLine($myArr);
// }
// while($skyrowcat4 =
mysql_fetch_array($skybasecat4));
}
else
{
$skybasetov = mysql_query("SELECT * FROM
`skycat_tov` WHERE `tov_cat`='{$skyrowcat3['cat_id']}' ORDER
BY `tov_id` DESC",$db) or die(mysql_error());
if (mysql_num_rows($skybasetov) > 0)
{
$skyrowtov =
mysql_fetch_array($skybasetov);
do {
if ($cv == 1) { $bgzapis = "#fff";
$cv=0; } else { $bgzapis = "#fef3f7"; $cv++; }
$tov_nazv =
$skyrowtov['tov_nazv'];
if (strlen($tov_nazv) > 50) {
$tov_nazv = substr("$tov_nazv", 0, 50); $tov_nazv = $tov_nazv."..."; }
echo '<tr height="25" bgcolor="'.$bgzapis.'">';
echo'<td style="padding-left:23px;"><a
href="skycat.php?mod=cat&cat_id='.$cat_id.'&act=redtov&tov_id='.$skyrowtov['t
ov_id'].'"><span style="color:#333333;">'.$tov_nazv.'</span></a></td><td
align="center">'.$skyrowtov['tov_artic'].'</td><td
align="center">'.$skyrowtov['tov_cena'].'</td><td
align="center">'.$skyrowtov['tov_kolvo'].'</td>';
echo '</tr>';

$myArr=array($skyrowtov['tov_nazv'],$skyrowtov['tov_artic'],$skyrowtov['
tov_cena'],$skyrowtov['tov_kolvo']);
$excel->writeLine($myArr);
}
while($skyrowtov =
mysql_fetch_array($skybasetov));
}
}
//завершение 4 уровня
}
while($skyrowcat3 =
mysql_fetch_array($skybasecat3));
}
else
{
$skybasetov = mysql_query("SELECT * FROM
`skycat_tov` WHERE `tov_cat`='{$skyrowcat1['cat_id']}' ORDER
BY `tov_id` DESC",$db) or die(mysql_error());
if (mysql_num_rows($skybasetov) > 0)
{
78
$skyrowtov =
mysql_fetch_array($skybasetov);
do {
if ($cv == 1) { $bgzapis = "#fff";
$cv=0; } else { $bgzapis = "#fef3f7"; $cv++; }
$tov_nazv =
$skyrowtov['tov_nazv'];
if (strlen($tov_nazv) > 50) {
$tov_nazv = substr("$tov_nazv", 0, 50); $tov_nazv = $tov_nazv."..."; }
echo '<tr height="25" bgcolor="'.$bgzapis.'">';
echo'<td style="padding-left:12px;"><a
href="skycat.php?mod=cat&cat_id='.$cat_id.'&act=redtov&tov_id='.$skyrowtov['t
ov_id'].'"><span style="color:#333333;">'.$tov_nazv.'</span></a></td><td
align="center">'.$skyrowtov['tov_artic'].'</td><td
align="center">'.$skyrowtov['tov_cena'].'</td><td
align="center">'.$skyrowtov['tov_kolvo'].'</td>';
echo '</tr>';

$myArr=array($skyrowtov['tov_nazv'],$skyrowtov['tov_artic'],$skyrowtov['
tov_cena'],$skyrowtov['tov_kolvo']);
$excel->writeLine($myArr);
}
while($skyrowtov =
mysql_fetch_array($skybasetov));
}
}
//завершение 3 уровня
}
while($skyrowcat1 = mysql_fetch_array($skybasecat1));
}
else
{
$skybasetov = mysql_query("SELECT * FROM `skycat_tov` WHERE
`tov_cat`='{$skyrowcat['cat_id']}' ORDER BY
`tov_id` DESC",$db) or die(mysql_error());
if (mysql_num_rows($skybasetov) > 0)
{
$skyrowtov = mysql_fetch_array($skybasetov);
do {
if ($cv == 1) { $bgzapis = "#fff"; $cv=0; } else
{ $bgzapis = "#fef3f7"; $cv++; }
$tov_nazv = $skyrowtov['tov_nazv'];
if (strlen($tov_nazv) > 50) { $tov_nazv =
substr("$tov_nazv", 0, 50); $tov_nazv = $tov_nazv."..."; }
echo '<tr height="25" bgcolor="'.$bgzapis.'">';
echo'<td style="padding-left:12px;"><a
href="skycat.php?mod=cat&cat_id='.$cat_id.'&act=redtov&tov_id='.$skyrowtov['t
ov_id'].'"><span style="color:#333333;">'.$tov_nazv.'</span></a></td><td
align="center">'.$skyrowtov['tov_artic'].'</td><td
align="center">'.$skyrowtov['tov_cena'].'</td><td
align="center">'.$skyrowtov['tov_kolvo'].'</td>';
echo '</tr>';

$myArr=array($skyrowtov['tov_nazv'],$skyrowtov['tov_artic'],$skyrowtov['tov_c
ena'],$skyrowtov['tov_kolvo']);
$excel->writeLine($myArr);
}
while($skyrowtov =
mysql_fetch_array($skybasetov));
}
}
//завершение 2 уровня
}
79
while($skyrowcat = mysql_fetch_array($skybasecat));
}
//завершение 1 уровень
echo '</table>';
$excel->close();
echo '</div>';
}

//оформить заказ
if ($mod=='ofzak')
{
if ($_COOKIE["korzina"]) {
$massivKorz = explode(",", $_COOKIE["korzina"]);
echo'<table id="tblTov" border="0" width="620" class="tbl" cellpadding="5"
cellspacing="0">';
echo'<tr>
<td bgcolor="#ffffff" width="25" class="sm2" align="center">№</td>
<td bgcolor="#ffffff" class="sm2" width="50" align="center">фото</td>
<td bgcolor="#ffffff" class="sm2" align="center">название</td>
<td bgcolor="#ffffff" class="sm2" width="70" align="center">количество</td>
<td bgcolor="#ffffff" class="sm2" align="center">цена</td>
<td bgcolor="#ffffff"></td>
</tr>';
for ( $i=0; $i<count($massivKorz)-1; $i++)
{
$korz = explode(":", $massivKorz[$i]);
$skybasetov = mysql_query("SELECT * FROM `skycat_tov` WHERE
`tov_id`='{$korz[0]}' LIMIT 1",$db) or die(mysql_error());
$skyrowtov = mysql_fetch_array($skybasetov);
if (!empty($skyrowtov['tov_foto'])) { $tov_foto = '
<a class="gallery" rel="group"
href="pic/tov/'.$skyrowtov['tov_foto'].'">
<img style="margin:2px 0 0 0; width:40px;"
src="pic/tov/sm_'.$skyrowtov['tov_foto'].'"></a>'; }
else { $tov_foto = ''; }
$tov_nazv = $skyrowtov['tov_nazv'];
if (strlen($tov_nazv) > 50) { $tov_nazv = substr("$tov_nazv", 0, 50);
$tov_nazv = $tov_nazv."..."; }
echo'<tr id="strokTov'.$korz[0].'">
<td align="center">'.($i+1).'</td>
<td align="center">'.$tov_foto.'</td>
<td><a
href="skycat.php?mod=cat&cat_id='.$skyrowtov['tov_cat'].'&act=redtov&tov_id='
.$skyrowtov['tov_id'].'"><span
style="color:#333333;">'.$tov_nazv.'</span></a></td>
<td align="center">
<img id="menTov'.$korz[0].'" tov="'.$korz[0].'" src="pic/men.png" alt=""
width="13" height="11" style="cursor:pointer" />
<input onkeyup="return tolkoCif(this);" onchange="return
tolkoCif(this);" id="mestoKolTov'.$korz[0].'" tov="'.$korz[0].'" type="text"
value="'.$korz[1].'" style="width:20px; text-align:center;" />
<img id="bolTov'.$korz[0].'" tov="'.$korz[0].'" src="pic/bol.png" alt=""
width="13" height="11" style="cursor:pointer" /></td>
<td align="center">'.$korz[2].'</td>
<td align="right" width="25"><img id="udTov'.$korz[0].'"
tov="'.$korz[0].'" src="pic/del.png" alt="" width="18"
style="cursor:pointer;" /></td>
</tr>';
$vsego+=$korz[2]*$korz[1];
}
$vsego = number_format($vsego, 2, '.', '');
echo'<tr><td bgcolor="#ffffff" colspan="4" align="right"
height="40"><strong>Всего:</strong></td>
80
<td bgcolor="#ffffff" align="center" colspan="2"><span
id="totalPriceKorz">'.$vsego.'</span> '.$cat_val.'</td></tr>';
echo'</table>';

}
else { echo'корзина пуста<br />
<br />
'; }
if ($prava>0) {
$skybase = mysql_query("SELECT * FROM `skyusers` WHERE
`user_id`='{$_SESSION['ses_user']}' LIMIT 1",$db) or die(mysql_error());
$skyrow = mysql_fetch_array($skybase);
$user = '<tr><td bgcolor="#FFFFFF" colspan="2" height="30px">Вы вошли
как пользователь: <strong>'.$name.'</strong> ('.$user_email.')
<span id="pole_reg_user"
class="nevid">'.$_SESSION['ses_user'].'</span></td></tr>'; }
else { $user='
<tr>
<td align="right">Фамилия Имя Отчество</td>
<td height="40px" style="padding-left:10px;">
<input id="pole_user_login" name="user_login" type="text"
style="width:420px;" /></td>
</tr>
<tr>
<td align="right">E-mail</td>
<td height="40px" style="padding-left:10px;">
<input id="pole_user_email" name="user_email" type="text"
style="width:420px;" /></td>
</tr>
';
echo '<span class="sm4"><a href="#" id="reg2">Зарегистрировавшись</a> в
нашем магазине, Вы сможете совершать покупки намного быстрее и удобнее, кроме
того, Вы сможете следить за выполнением заказов, смотреть историю своих
заказов.</span>';}
?>
<form action="" method="post" class="kn">
<table id="tblKorz" class="tbl" border="0" cellpadding="0"
cellspacing="0">
<tr>
<td colspan="2" class="ser textmal" height="40"
bgcolor="#FFFFFF">
<div id="oshZak">Заполните нужные поля для оформления
заказа</div></td>
</tr>
<? echo $user; ?>
<tr>
<td align="right" width="250">Телефон <span class="sm2">вид:
9451234567</span></td>
<td width="450" height="40px" style="padding-left:10px;">
<input id="pole_user_tel" name="user_tel" type="text"
style="width:420px;" onkeyup="return tolkoCif(this);" onchange="return
tolkoCif(this);" value="<? echo $skyrow['user_tel']; ?>" /></td>
</tr>
<tr>
<td align="right">Факс <span class="sm2">вид:
9451234567</span></td>
<td height="40px" style="padding-left:10px;">
<input id="pole_user_fax" name="user_fax" type="text"
style="width:420px;" onkeyup="return tolkoCif(this);" onchange="return
tolkoCif(this);" value="<? echo $skyrow['user_fax']; ?>" /></td>
</tr>
<tr>
<td align="right">Город</td>
81
<td height="40px" style="padding-left:10px;">
<input id="pole_user_gorod" name="user_gorod" type="text"
style="width:420px;" value="<? echo $skyrow['user_gorod']; ?>" />
</td>
</tr>
<tr>
<td align="right">Адрес</td>
<td height="40px" style="padding-left:10px;">
<input id="pole_user_obl" name="user_obl" type="text"
style="width:420px;" value="<? echo $skyrow['user_obl']; ?>" />

</td>
</tr>
<tr>
<td align="right">Примечание к заказу</td>
<td height="40px" style="padding:4px 0 4px 10px;">
<textarea id="pole_zak_prim" name="zak_prim" type="text"
style="width:420px; height:60px;"></textarea>
<input type="hidden" name="a" value="ofzak" />
</td>
</tr>
<tr>
<td height="47px" align="center" colspan="2"
bgcolor="#FFFFFF">
<input id="knZak" style="width:220px; cursor:pointer; margin:5px
0 0 0;" type="submit" value="Отправить заказ" /></td>
</tr>
</table>
</form>
<?
}
//Личный кабинет - заказы
if ($mod=='lich' && $prava>0)
{
//перевод в архив
if ($a=='zakvarh')
{
if ($prava==5) {
$skyred = mysql_query("UPDATE `skymag_zak`
SET `zak_arhadm`='1' WHERE `zak_id`='{$z}'",$db) or
die(mysql_error());
}
else { $skyred = mysql_query("UPDATE `skymag_zak`
SET `zak_arh`='1' WHERE `zak_id`='{$z}' and
`zak_ot`='{$_SESSION['ses_user']}'",$db) or die(mysql_error());
}
}

//изменение личной информации


if ($a=="redlich")
{
$user_login = globper('user_login');
$user_email = globper('user_email');
$user_icq = globper('user_icq');
$user_tel = globper('user_tel');
$user_fax = globper('user_fax');
$user_gorod = globper('user_gorod');
$user_obl = globper('user_obl');
$user_osebe = globper('user_osebe');
$user_pass = globper('user_pass');
$user_pass2 = globper('user_pass2');
if ($user_pass!=$user_pass2) {$osh='Пароли не совпадают';}
if (empty($user_login)) {$osh='Обязательно введите имя';}
82
$skybase = mysql_query("SELECT `user_email`,`user_login` FROM `skyusers`
WHERE `user_email`='{$user_email}' and
`user_id`!='{$_SESSION['ses_user']}'",$db) or die(mysql_error());
if (mysql_num_rows($skybase) > 0) { $skyrow =
mysql_fetch_array($skybase); $osh='Электронный ящик '.$skyrow['user_email'].'
уже зарегистрирован пользователем '.$skyrow['user_login'].''; }
if(empty($user_email)) { $osh='Обязательно введите адрес электронной
почты'; }
if (preg_match("/^[ѐа-яА-Яa-zA-Z0-9_\.\-]+\@([ѐа-яА-Яa-zA-Z0-9\-]+\.)+[ѐа-яА-
Яa-zA-Z0-9]{2,4}$|^$/", $user_email)){} else { $osh = 'Введите корректный e-
mail адрес'; }
if (isset($user_pass) && !empty($user_pass) && isset($user_pass2) &&
!empty($user_pass2) && $user_pass==$user_pass2)
{ function usersol($n=3)
{
$key = '';
$pattern =
'1234567890abcdefghijklmnopqrstuvwxyz.,*_-=+';
$counter = strlen($pattern)-1;
for($i=0; $i<$n; $i++)
{ $key .= $pattern{rand(0,$counter)}; }
return $key;
}
$user_sol = usersol();
$newpass = $user_pass;
$code_pass = md5(md5($newpass) . $user_sol);
$novpass =
",`user_pass`='{$code_pass}',`user_sol`='{$user_sol}'";
$_SESSION['pass'] = $code_pass;
$ok='Пароль успешно изменен';
}
else { $novpass =''; }
if (!isset($osh)) {
$skybase = mysql_query("UPDATE `skyusers` SET
`user_login`='{$user_login}',`user_email`='{$user_email}',`user_obl`='{$user_
obl}',`user_gorod`='{$user_gorod}',`user_tel`='{$user_tel}',`user_fax`='{$use
r_fax}',`user_icq`='{$user_icq}',`user_web`='{$user_web}',`user_osebe`='{$use
r_osebe}'".$novpass." WHERE `user_id`='{$_SESSION['ses_user']}'",$db) or
die(mysql_error());
}
}
?>
<div id="tabs">
<ul>
<li><a href="#tabs-1">Заказы</a></li>
<li><a href="#tabs-2">Личная информация</a></li>
<?
if ($prava==5){ echo'<li><a href="#tabs-
3">Пользователи</a></li><li><a href="#tabs-4">Настройки</a></li>'; }
?>
</ul>
<div id="tabs-1">
<? if($a=='arhzak') {
echo'<span class="kr textbol">Архив заказов</span> <div
style="float:right;"><a href="?mod=lich" class="knop">Вернуться к
заказам</a></div>';
if ($prava==5) { $arh="AND `zak_arhadm`='1'"; } else { $arh="AND
`zak_arh`='1'"; }
}
else { echo '<span class="kr textbol">Активные заказы</span> <div
style="float:right;"><a href="?mod=lich&a=arhzak"
class="knop">архив</a></div>';

83
if ($prava==5) { $arh="AND `zak_arhadm`='0'"; } else { $arh="AND
`zak_arh`='0'"; }
}
if ($prava==5) { $zak_ot="`zak_ot`!='0'"; } else {
$zak_ot="`zak_ot`='{$_SESSION['ses_user']}'"; }
$num = 5;
$link='skycat.php?mod=lich&';
if($a=='arhzak') { $link.='a=arhzak&'; }
$skybase1 = mysql_query("SELECT COUNT(*) FROM `skymag_zak` WHERE
".$zak_ot." ".$arh."");
$temp = mysql_fetch_array($skybase1);
$posts = $temp[0];
$vsegop = (($posts - 1) / $num) + 1;
$vsegop = intval($vsegop);
$p = intval($p);
if(empty($p) or $p < 0) $p = 1;
if($p > $vsegop) $p = $vsegop;
$start = $p * $num - $num;
if ($start < 0) { $start = 0;}
if ($p > 3) $pervpage = ' <a class=knop href='.$link.'p=1>1</a> ';
if ($p != 1) $predpage = ' <a class=knop title=предидущая
href='.$link.'p='.($p-1).'><</a> ';
if ($vsegop > 3 and $p > 4) { $toch = ' <span class=ser> ... </span> ';
}
$p2 = $vsegop - $p;
if ($vsegop > 3 and $p2 >= 4) { $toch2 = ' <span class=ser> ... </span>
'; }
if (($p+2) < $vsegop) $poslpage = ' <a class=knop
href='.$link.'p='.$vsegop.'>' .$vsegop. '</a> ';
if ($p != $vsegop) $nextpage = ' <a class=knop title=следующая
href='.$link.'p='. ($p + 1) .'>></a>';
if($p - 3 > 0) $page3left = ' <a class=knop href='.$link.'p='.($p-
3).'>'.($p-3).'</a> ';
if($p - 2 > 0) $page2left = ' <a class=knop href='.$link.'p='.($p-
2).'>'.($p-2).'</a> ';
if($p - 1 > 0) $page1left = ' <a class=knop href='.$link.'p='.($p-
1).'>'.($p-1).'</a> ';
if($p + 3 <= $vsegop) $page3right = ' <a class=knop
href='.$link.'p='.($p + 3).'>'.($p+3).'</a> ';
if($p + 2 <= $vsegop) $page2right = ' <a class=knop
href='.$link.'p='.($p + 2).'>'.($p+2).'</a> ';
if($p + 1 <= $vsegop) $page1right = ' <a class=knop
href='.$link.'p='.($p + 1).'>'.($p+1).'</a> ';
$skybase = mysql_query("SELECT * FROM `skymag_zak` WHERE ".$zak_ot." ".$arh."
ORDER BY `zak_id` DESC LIMIT $start, $num",$db) or die(mysql_error());
if (mysql_num_rows($skybase) > 0)
{ $skyrow = mysql_fetch_array($skybase);
echo'<table id="tblTov" border="0" width="570" class="tbl" cellpadding="5"
cellspacing="0"><tr>
<td bgcolor="#ffffff" width="25" class="sm2" align="center">№</td>
<td bgcolor="#ffffff" class="sm2" align="center">заказано</td>
<td bgcolor="#ffffff" class="sm2" width="50" align="center">статус</td>
</tr>';
do {
echo '<tr class="vib"><td class="textbol" style="border-bottom:1px
solid #cccccc;"><strong>'.$skyrow['zak_id'].'</strong></td>
<td style="border-bottom:1px solid #cccccc; padding-top:30px;">';
//информация о заказчике
if ($prava==5) {
$skybaseuser = mysql_query("SELECT * FROM `skyusers` WHERE
`user_id`='{$skyrow['zak_ot']}' LIMIT 1",$db)
or die(mysql_error());
$skyrowuser = mysql_fetch_array($skybaseuser);
84
if ($skyrowuser['user_prava']>0) { $reg='зарегистрирован'; } else
{ $reg='не зарегистрирован'; }
echo '<span class="kr">Пользователем:</span>
<strong>'.$skyrowuser['user_login'].'</strong> —
'.$skyrowuser['user_email'].' <span class="ser textmal">('.$reg.')<br
/></span><span class="textmal">';
if (!empty($skyrowuser['user_icq'])) { echo ' <strong
class="ser">ICQ:</strong> '.$skyrowuser['user_icq']; }
if (!empty($skyrowuser['user_tel'])) { echo ' <strong
class="ser">Телефон:</strong> '.$skyrowuser['user_tel']; }
if (!empty($skyrowuser['user_fax'])) { echo ' <strong
class="ser">Факс:</strong> '.$skyrowuser['user_fax']; }
if (!empty($skyrowuser['user_gorod'])) { echo ' <strong
class="ser">Город:</strong> '.$skyrowuser['user_gorod']; }
if (!empty($skyrowuser['user_obl'])) { echo ' <strong
class="ser">Адрес:</strong> '.$skyrowuser['user_obl']; }
if (!empty($skyrowuser['user_osebe'])) { echo ' <strong
class="ser">Доп. инф.:</strong> '.$skyrowuser['user_osebe']; }
echo '</span>';
}

//вывод товаров из заказа


$massivKorz = explode(",", $skyrow['zak_tov']);

echo'<table border="0" cellpadding="5" cellspacing="0" width="400"


style="margin:5px 0 15px 0;">';
for ( $i=0; $i<count($massivKorz)-1; $i++)
{
$korz = explode(":", $massivKorz[$i]);
$skybasetov = mysql_query("SELECT * FROM `skycat_tov` WHERE
`tov_id`='{$korz[0]}' LIMIT 1",$db) or die(mysql_error());
$skyrowtov = mysql_fetch_array($skybasetov);
if (!empty($skyrowtov['tov_foto'])) { $tov_foto = '
<a class="gallery" rel="group"
href="pic/tov/'.$skyrowtov['tov_foto'].'">
<img style="margin:2px 0 0 0; width:40px;"
src="pic/tov/sm_'.$skyrowtov['tov_foto'].'"></a>'; }
$tov_nazv = $skyrowtov['tov_nazv'];
if (strlen($tov_nazv) > 50) { $tov_nazv = substr("$tov_nazv", 0, 50);
$tov_nazv = $tov_nazv."..."; }
echo'<tr>
<td align="center">'.$tov_foto.'</td>
<td><a
href="skycat.php?mod=cat&cat_id='.$skyrowtov['tov_cat'].'&act=redtov&tov_id='
.$skyrowtov['tov_id'].'">
<span style="color:#333333;">'.$tov_nazv.'</span></a></td>
<td align="center" nowrap="nowrap">'.$korz[1].' шт.</td>
<td align="center">'.$korz[2].'</td>
</tr>';
$vsego+=$korz[2]*$korz[1];
}
$vsego = number_format($vsego, 2, '.', '');
if (!empty($skyrow['zak_prim'])) { echo'<tr><td colspan="4"
class="textmal ser2"><em><strong>Примечания:</strong>
'.$skyrow['zak_prim'].'</em></td></tr>'; }
echo'<tr><td colspan="4" align="right" height="40">';
if ($a!='arhzak') { echo '<div style="float:left"><a
href="skycat.php?mod=lich&a=zakvarh&z='.$skyrow['zak_id'].'"
class="knop">поместить в архив</a></div>'; }
echo '<strong>На сумму: </strong><span id="totalPriceKorz">'.$vsego.'</span>
'.$cat_val.'</td></tr>';
echo'</table>';
$vsego = '';
85
//запрос статуса заказа
$skybasest = mysql_query("SELECT * FROM `skymag_stat` WHERE
`stat_id`='{$skyrow['zak_stat']}' LIMIT 1",$db) or die(mysql_error());
$skyrowst = mysql_fetch_array($skybasest);
echo '</td>
<td align="center" class="kr" style="border-bottom:1px solid
#cccccc;">';
echo '<div style="margin:0 0 20px 0;">Заказан:<br /><span
class="ser" title="'.russian_date('j F Y года
G:i',$skyrow['zak_data']).'">'.russian_date('j.m.Y',$skyrow['zak_data']).'</s
pan></div>';
if ($prava==5) {
$skybaseredst = mysql_query("SELECT * FROM
`skymag_stat`",$db) or die(mysql_error());
$skyrowredst = mysql_fetch_array($skybaseredst);
echo '<select id="selZak'.$skyrow['zak_id'].'"
zak="'.$skyrow['zak_id'].'" style="width:120px;">';
do { if ($skyrow['zak_stat']==$skyrowredst['stat_id']) {
$sel='selected="selected"'; } else { $sel=''; }
echo '<option value="'.$skyrowredst['stat_id'].'"
'.$sel.'>'.$skyrowredst['stat_nazv'].'</option>';}
while ($skyrowredst = mysql_fetch_array($skybaseredst));
echo '</select>';
}
else { echo $skyrowst['stat_nazv']; }
if (!empty($skyrow['zak_datastat'])) { echo '<div
id="vremStatRed'.$skyrow['zak_id'].'" title="'.russian_date('j F Y года
G:i',$skyrow['zak_datastat']).'"
class="ser">'.russian_date('j.m.Y',$skyrow['zak_datastat']).'</div>'; }
else { echo '<div id="vremStatRed'.$skyrow['zak_id'].'"
class="ser"></div>'; }
echo'</td></tr>';
}
while($skyrow = mysql_fetch_array($skybase));
echo'</table>';

// Вывод меню если страниц больше одной


if ($vsegop > 1)
{ Error_Reporting(E_ALL & ~E_NOTICE);
echo "<center><div class=navbar>";
echo $predpage.$pervpage.$toch.$page2left.$page1left.'<span
class="nav"><strong>'.$p.'</strong></span>'.$page1right.$page2right.$toch2.$p
oslpage.$nextpage;
echo "</div><br />";
}
}
else { echo'<br /><br />нет заказов'; }
?>
</div>
<div id="tabs-2">
<span class="kr textbol">Личная информация</span>
<?
$skybase = mysql_query("SELECT * FROM `skyusers` WHERE
`user_id`='{$_SESSION['ses_user']}' LIMIT 1",$db) or die(mysql_error());
$skyrow = mysql_fetch_array($skybase);
?>
<form method="post" class="kn">
<table border="0" cellpadding="0" cellspacing="0" class="tbl" width="550">
<tr>
<td colspan="2" class="ser textmal" height="45" bgcolor="#FFFFFF">
<div id="oshLich">Заполните или измените свои данные. <span
class="kr"><? if(isset($osh)){ echo '<img src="pic/allert.png" alt=""

86
width="20" /> '.$osh; } //if (isset($ok)) { echo '<span
class="ch">'.$ok.'</span>'; }
?>
</span></div></td>
</tr>
<tr>
<td align="right">Имя</td>
<td height="45" style="padding-left:20px;">
<input id="poleEmailLich" name="user_login" type="text" value="<? echo
$skyrow['user_login']; ?>" style="width:380px;" />
</td>
</tr>
<tr>
<td align="right">Электронная почта</td>
<td height="45" style="padding-left:20px;">
<input id="poleEmailLich" name="user_email" type="text" value="<? echo
$skyrow['user_email']; ?>" style="width:380px;" />
</td>
</tr>
<tr>
<td align="right">ICQ</td>
<td height="45" style="padding-left:20px;">
<input id="poleIcqLich" name="user_icq" type="text"
onkeyup="return tolkoCif(this);" onchange="return tolkoCif(this);" value="<?
if (!empty($skyrow['user_icq'])) echo $skyrow['user_icq']; ?>"
style="width:380px;" /></td>
</tr>
<tr>
<td align="right">Телефон</td>
<td height="45" style="padding-left:20px;">
<input id="poleTelLich" name="user_tel" type="text"
onkeyup="return tolkoCif(this);" onchange="return tolkoCif(this);" value="<?
echo $skyrow['user_tel']; ?>" style="width:380px;" /></td>
</tr>
<tr>
<td align="right">Факс</td>
<td height="45" style="padding-left:20px;">
<input id="poleFaxLich" name="user_fax" type="text"
onkeyup="return tolkoCif(this);" onchange="return tolkoCif(this);" value="<?
echo $skyrow['user_fax']; ?>" style="width:380px;" /></td>
</tr>
<tr>
<td align="right">Город</td>
<td height="45" style="padding-left:20px;">
<input id="poleGorodLich" name="user_gorod" type="text"
value="<? echo $skyrow['user_gorod']; ?>" style="width:380px;" /></td>

</tr>
<tr>
<td align="right">Адрес</td>
<td height="45" style="padding-left:20px;">
<input id="poleOblLich" name="user_obl" type="text"
value="<? echo $skyrow['user_obl']; ?>" style="width:380px;" /></td>
</tr>
<tr>
<td align="right">Дополнительно</td>
<td height="45" style="padding:7px 0 7px 20px;">
<textarea id="poleOsebeLich" name="user_osebe"
style="width:380px;"><? echo $skyrow['user_osebe']; ?></textarea>
</td>
</tr>
<tr>
<td align="right">Поменять пароль</td>
87
<td height="45" style="padding-left:20px;">
<input id="polePassLich" name="user_pass" type="password"
style="width:380px;" />
</td>
</tr>
<tr>
<td align="right">Повтор пароля</td>
<td height="45" style="padding-left:20px;">
<input id="polePass2Lich" name="user_pass2"
type="password" style="width:380px;" />
</td>
</tr>

<tr>
<td height="45" colspan="2" align="center"
bgcolor="#FFFFFF">
<input type="hidden" name="a" value="redlich" />
<input id="knReg" style="width:220px; cursor:pointer; margin:0 0
0 15px;" type="submit" value="Внести изменения" /></td>
</tr>

</table>
</form>
</div>
<? if($prava==5) { ?>
<div id="tabs-3">
<?
$num = 10;
$link='skycat.php?mod=lich&';
$skybase2 = mysql_query("SELECT COUNT(*) FROM `skyusers`");
$temp = mysql_fetch_array($skybase2);
$posts = $temp[0];
$vsegoup = (($posts - 1) / $num) + 1;
$vsegoup = intval($vsegoup);
$up = intval($up);
if(empty($up) or $up < 0) $up = 1;
if($up > $vsegoup) $up = $vsegoup;
$start = $up * $num - $num;
if ($start < 0) { $start = 0;}
if ($up > 3) $pervpageu = ' <a class=knop href='.$link.'up=1>1</a> ';
if ($up != 1) $predpageu = ' <a class=knop title=предидущая
href='.$link.'up='.($up-1).'><</a> ';
if ($vsegoup > 3 and $up > 4) { $tochu = ' <span class=ser> ... </span> '; }
$up2 = $vsegoup - $up;
if ($vsegoup > 3 and $up2 >= 4) { $toch2u = ' <span class=ser> ... </span> ';
}
if (($up+2) < $vsegoup) $poslpageu = ' <a class=knop
href='.$link.'up='.$vsegoup.'>' .$vsegoup. '</a> ';
if ($up != $vsegoup) $nextpageu = ' <a class=knop title=следующая
href='.$link.'up='. ($up + 1) .'>></a>';
if($up - 3 > 0) $page3leftu = ' <a class=knop href='.$link.'up='.($up-
3).'>'.($up-3).'</a> ';
if($up - 2 > 0) $page2leftu = ' <a class=knop href='.$link.'up='.($up-
2).'>'.($up-2).'</a> ';
if($up - 1 > 0) $page1leftu = ' <a class=knop href='.$link.'up='.($up-
1).'>'.($up-1).'</a> ';
if($up + 3 <= $vsegoup) $page3rightu = ' <a class=knop
href='.$link.'up='.($up + 3).'>'.($up+3).'</a> ';
if($up + 2 <= $vsegoup) $page2rightu = ' <a class=knop
href='.$link.'up='.($up + 2).'>'.($up+2).'</a> ';
if($up + 1 <= $vsegoup) $page1rightu = ' <a class=knop
href='.$link.'up='.($up + 1).'>'.($up+1).'</a> ';
echo '<div class="kr textbol">Пользователи — всего: '.$posts.'</div>';
88
$skybaseuser = mysql_query("SELECT * FROM `skyusers` ORDER BY `user_id`
DESC LIMIT $start, $num",$db) or die(mysql_error());
if (mysql_num_rows($skybaseuser) > 0)
{
$skyrowuser = mysql_fetch_array($skybaseuser);
echo'<table id="tblTov" border="0" width="570" class="tbl"
cellpadding="5" cellspacing="0"><tr>
<td bgcolor="#ffffff" class="sm2" align="center">Имя</td>
<td bgcolor="#ffffff" class="sm2" align="center" width="100">Электронная
почта</td>
<td bgcolor="#ffffff" class="sm2" align="center">Заказы</td>
<td bgcolor="#ffffff" class="sm2" width="50"
align="center">Зарегистрирован</td>
</tr>';
do {
if ($cv == 1) { $bgzapis = "#ffffff"; $cv=0; } else { $bgzapis =
"#f5f5f5"; $cv++; }
if (!empty($skyrowuser['user_regtime'])) { $user_reg =
russian_date('j F Y',$skyrowuser['user_regtime']); }
else { $user_reg='<span class="ser">нет</span>'; }
if ($skyrowuser['user_prava']==5) { $user_reg='<span
class="kr">администратор</span>'; }
echo '<tr bgcolor="'.$bgzapis.'">
<td style="padding-top:8px; padding-bottom:8px;"><a
id="dopInfo'.$skyrowuser['user_id'].'" user="'.$skyrowuser['user_id'].'"
class="textsred2" title="Информация о пользователе
'.$skyrowuser['user_login'].'"href="#">'.$skyrowuser['user_login'].'</a>
<div class="nevid textmal"
id="dopInfoUser'.$skyrowuser['user_id'].'">';
if (!empty($skyrowuser['user_icq'])) { echo ' <strong
class="ser">ICQ:</strong> '.$skyrowuser['user_icq'].'<br />'; }
if (!empty($skyrowuser['user_tel'])) { echo ' <strong
class="ser">Телефон:</strong> '.$skyrowuser['user_tel'].'<br />'; }
if (!empty($skyrowuser['user_fax'])) { echo ' <strong
class="ser">Факс:</strong> '.$skyrowuser['user_fax'].'<br />'; }
if (!empty($skyrowuser['user_gorod'])) { echo ' <strong
class="ser">Город:</strong> '.$skyrowuser['user_gorod'].'<br />'; }
if (!empty($skyrowuser['user_obl'])) { echo ' <strong
class="ser">Адрес:</strong> '.$skyrowuser['user_obl'].'<br />'; }
if (!empty($skyrowuser['user_osebe'])) { echo ' <strong
class="ser">Доп. инф.:</strong> '.$skyrowuser['user_osebe'].'<br />'; }
//подсчет количества заказов
$skybasezakazov = mysql_query("select `zak_id` from `skymag_zak`
where `zak_ot`='{$skyrowuser['user_id']}'") or die(mysql_error());
$zakazov = mysql_num_rows($skybasezakazov);
echo '</div>
</td>
<td align="center">
<a id="otprPismoUser'.$skyrowuser['user_id'].'" href="#otprPismo"
user="'.$skyrowuser['user_id'].'"
title="'.$skyrowuser['user_login'].'">'.$skyrowuser['user_email'].'</span></t
d>
<td align="center" width="30">'.$zakazov.'</td>
<td align="center" width="140">'.$user_reg.'</td>
</tr>';
$idred='id="comText'.$skyrowcom['com_id'].'" href="#ComRed"
title="Редактировать" com="'.$skyrowcom['com_id'].'"';
}
while($skyrowuser = mysql_fetch_array($skybaseuser));
echo"</table>";
// Вывод меню если страниц больше одной
if ($vsegoup > 1)
{ Error_Reporting(E_ALL & ~E_NOTICE);
89
echo "<center><div class=navbar>";
echo $predpageu.$pervpageu.$tochu.$page2leftu.$page1leftu.'<span
class="nav"><strong>'.$up.'</strong></span>'.$page1rightu.$page2rightu.$toch2
u.$poslpageu.$nextpageu;
echo "</div><br />";
}
}
else { echo "<br /><br /><br />Нет пользователей<br /><br />"; }
?>
</div>
<div id="tabs-4">
<div class="kr textbol">Настройки</div>
<p style="line-height:1.5;"><a href="adm.php?mod=cat">Редактирование
каталога</a><br />
<a href="adm.php?mod=mod">Редактирование разделов</a><br />
<a href="adm.php?mod=nas">Настройки каталога и комментариев</a></p>
Статусы:<br />
<table border="0" cellpadding="0" cellspacing="0"><tr><td>
<select id="poleStat" style="width:300px; margin:7px 0 9px 0;">
<?
$skybasestat = mysql_query("SELECT * FROM `skymag_stat`",$db) or
die(mysql_error());
$skyrowstat = mysql_fetch_array($skybasestat);
do {
echo '<option
value="'.$skyrowstat['stat_id'].'">'.$skyrowstat['stat_nazv'].'</option>';
}
while($skyrowstat = mysql_fetch_array($skybasestat));
?>
</select> <a id="knStatRed" href="#formRedStat" class="knop"
style="width:150px; margin:0 0 0 10px;">Редактировать</a></td><td width="50"
align="right">
<form action="skycat.php?mod=lich" method="post" class="kn">
<input title="удалить статус" style="padding:6px;
cursor:pointer; background:none; border:hidden;" type="image"
src="pic/del.png" width="18" border="0" value="Удалить"
onclick="if(confirm('Действительно удалить статус?'))submit(); else return
false;">
<INPUT id="poleUdStat" type="hidden" name="stat_id" />
<INPUT type="hidden" name="a" value="udstat" />
</form>
</td></tr></table>
<form action="skycat.php?mod=lich" method="post" class="kn">
<input type="text" name="stat_nazv" style="width:285px;" />
<input name="a" type="hidden" value="dobstat" />
<input type="submit" value="Добавить" style="cursor:pointer; width:150px;
margin:0 0 0 10px;" />
</form>
</div>
<? } ?>
</div>
<? } //завершение Личный кабинет - заказы ?>
<!-- Завершение Рабочий блок -->
</td>
</tr>
</table>
<!-- Завершение Основной таблицы -->

<!-- Низ
# .......................
..........................................................
#
#
90
#
........................................................................
.........
-->
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0"
background="pic/skyscript_fon_niz.png">
<tr>
<td align="center"><table width="950" height="68" border="0"
align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="33"></td>
<td width="210" align="left"><div class="sm2">Created by Luna<br />
<a href=""></a></div></td>
<td width="33">&nbsp;</td>
<td align="left"><div class="sm2">Интернет магазин <span class="kr">
компьютеров</span> Compik<br />
Работает на PHP + MySQL </div></td>

<td align="right"><!--Rating@Mail.ru counter-->


<script language="JavaScript" type="text/javascript"><!--
d=document;var a='';a+=';r='+escape(d.referrer);js=10;//--></script>
<script language="JavaScript1.1" type="text/javascript"><!--
a+=';j='+navigator.javaEnabled();js=11;//--></script>
<script language="JavaScript1.2" type="text/javascript"><!--
s=screen;a+=';s='+s.width+'*'+s.height;
a+=';d='+(s.colorDepth?s.colorDepth:s.pixelDepth);js=12;//--></script>
<script language="JavaScript1.3" type="text/javascript"><!--
js=13;//--></script>
<script language="JavaScript" type="text/javascript"><!--
d.write('<a href="http://top.mail.ru/jump?from=1671954" target="_top">'+
'<img src="http://d3.c8.b9.a1.top.mail.ru/counter?id=1671954;t=84;js='+js+
a+';rand='+Math.random()+'" alt="Рейтинг@Mail.ru" border="0" '+
'height="18" width="88"><\/a>');if(11<js)d.write('<'+'!-- ');//--></script>
<noscript>
<a target="_top" href="http://top.mail.ru/jump?from=1671954">
<img
src="http://d3.c8.b9.a1.top.mail.ru/counter?js=na;id=1671954;t=84"
height="18" width="88" border="0" alt="Рейтинг@Mail.ru" /></a>
</noscript>
<script language="JavaScript" type="text/javascript"><!--
if(11<js)d.write('--'+'>');//--></script>
<!--// Rating@Mail.ru counter-->
</td>
<td width="33" align="right"></td>
</tr>
</table></td>
</tr>
</table>
<!-- Низ -->

<!--модальные окна-->
<!--вход в систему-->
<div id="oknovhod" class="nevid">
<form action="" method="post" class="kn">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td colspan="2" class="ser textmal" height="40">
<div id="oshEmail">Введите свой электронный адрес, указанный при
регистрации и пароль</div></td>
</tr>
<tr>
<td align="right">Электронная почта</td>
<td height="45px" style="padding-left:10px;">
91
<input id="poleEmail" title="Введите свой адрес электронной
почты" name="user_email" type="text" size="20" /></td>
</tr>
<tr>
<td align="right">Пароль</td>
<td height="45px" style="padding-left:10px;">
<input id="polePass" name="user_pass" type="password" size="20"
/>
<input type="hidden" name="a" value="login" />
</td>
</tr>
<tr>
<td height="47px" align="center" colspan="2">
<input ssilka="<? echo
'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; ?>" id="knVhod"
style="width:220px; cursor:pointer; margin:5px 0 0 0;" type="submit"
value="Войти" /></td>
</tr>
<tr>
<td valign="bottom">
<a id="zabPar" class="textmal ser" href="#" title="Забыли
пароль?">Забыли пароль?</a></td>
<td height="45" valign="bottom" style="padding-
left:10px;"><a id="reg" class="textmal ser" href="#">Вы не зарегистрированы?
Зарегистрироваться.</a>
</td>
</tr>
</table>
</form>
</div>
<!--завершение вход в систему-->

<!--восстановить пароль-->
<div id="oknozab" class="nevid">

<form action="index.php" method="post" class="kn">

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


<tr>
<td colspan="2" class="ser textmal" height="55">
<div id="oshZab">Укажите электронный адрес, указанный при
регистрации. На него будет отправлено письмо с новым паролем.</div></td>
</tr>
<tr>
<td align="right" height="58">Электронная почта</td>
<td style="padding-left:7px;">
<input id="poleEmailZab" title="Введите адрес электронной почты,
указанный при регистрации" name="user_email" type="text" size="20" /></td>
</tr>
<tr>
<td valign="bottom" colspan="2" align="center">
<input id="knZab" style="width:220px; cursor:pointer; margin:5px
0 0 0;" type="submit" value="Отправить новый пароль" /></td>
</tr>
<tr>
<td valign="bottom"><input type="hidden" name="a"
value="zab">
<a id="vhod4" class="textmal ser" href="#" title="Войти">Войти с
паролем</a></td>
<td height="48" valign="bottom"><a id="reg2" class="textmal
ser" href="#">Вы не зарегистрированы? Зарегистрироваться.</a>
</td>
</tr>
92
</table>
</form>
</div>
<!--завершение восстановить пароль-->

<!--регистрация-->
<div id="oknoreg" class="nevid">
<form method="post" class="kn">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td colspan="2" class="ser textmal" height="55">
<div id="oshReg">Обязательно заполните все поля. <br />Введите
действующий электронный адрес. <br />Сохраните введенный пароль.</div></td>
</tr>
<tr>
<td align="right">Ваше имя</td>
<td height="45px" style="padding-left:10px;">
<input id="poleNameReg" title="Введите свой адрес электронной
почты" name="user_login" type="text" size="20" /></td>
</tr>
<tr>
<td align="right">Электронная почта</td>
<td height="45px" style="padding-left:10px;">
<input id="poleEmailReg" title="Введите свой адрес электронной
почты" name="user_email" type="text" size="20" /></td>
</tr>
<tr>
<td align="right">Пароль</td>
<td height="45px" style="padding-left:10px;">
<input id="polePassReg" name="user_pass" type="password"
size="20" />
</td>
</tr>
<tr>
<td align="right">Повторите пароль</td>
<td height="45px" style="padding-left:10px;">
<input id="polePass2Reg" name="user_pass2" type="password"
size="20" />
</td>
</tr>
<tr>
<td colspan="2" class="ser textmal" height="54px">
<input type="checkbox" name="soglasen" id="sog" />
<label for="sog" id="soglab"><span style="cursor:pointer;">Мною
прочитаны <a href="#">правила пользования</a> сайтом и я с ними
согласен</span></label></td>
</tr>
<tr>
<td height="45px" colspan="2" align="center"> <input
id="knReg" disabled="disabled" style="width:220px; cursor:pointer; margin:0 0
0 15px;" type="submit" value="Зарегистрироваться" /></td>
</tr>
<tr>
<td valign="bottom"><input type="hidden" name="a"
value="reg"><input type="hidden" name="cat_id" value="<? echo $cat_id; ?>">
<a id="zabPar2" class="textmal ser" href="#" title="Забыли
пароль?">Забыли <br />
пароль?</a></td>
<td height="45" valign="bottom" style="padding-
left:10px;"><a id="vhod5" class="textmal ser" href="#">Уже зарегистрированы?
Войти.</a>
</td>
</tr>
93
</table>
</form>
</div>
<!--завершение регистрации-->

<? if ($prava==5 && $mod=='lich') { ?>


<!--отправка сообщения покупателю-->
<form id="otprPismo" action="skycat.php?mod=lich" method="post" class="window
kn" style="padding:10px;">
<div class="close" id="fancy_close" style="display: block;"></div><img src=""
/>
Отправить письмо пользователю
<div style="margin:7px 0 7px 0;"><span id="poleLoginUser"
class="textbol"></span> <input name="user_email" id="poleEmailUser"
type="text" /></div>
<textarea name="pismo_text" id="polePismoText" style="width:350px;
height:150px;"></textarea><br />
<input name="a" type="hidden" value="otprpismo" />
<center>
<input type="submit" value="Отправить" style="cursor:pointer; margin:10px 0 0
0;" />
</center>
</form>
<!--завершение отправка сообщения покупателю-->

<!--редактирование статусов-->
<form id="formRedStat" action="skycat.php?mod=lich" method="post"
class="window kn" style="padding:10px;">
<div class="close" id="fancy_close" style="display: block;"></div><img src=""
/>
<input name="stat_nazv" id="poleStatNazv" type="text" style="width:300px;"
/></div>
<input id="poleStatId" name="stat_id" type="hidden" />
<input name="a" type="hidden" value="redstat" />
<center>
<input type="submit" value="Редактировать" style="cursor:pointer; margin:10px
0 0 0;" />
</center>
</form>
<!--завершение редактирование статусов-->
<? } ?>

</body>
</html><? if (isset($al)) { al($al); } ?>

94