ЭТАПЫ РАЗРАБОТКИ ИНФОРМАЦИОННОЙ СИСТЕМЫ

Курсовая работа по предмету «Web-программирование»
Информация о работе
  • Тема: ЭТАПЫ РАЗРАБОТКИ ИНФОРМАЦИОННОЙ СИСТЕМЫ
  • Количество скачиваний: 15
  • Тип: Курсовая работа
  • Предмет: Web-программирование
  • Количество страниц: 57
  • Язык работы: Русский язык
  • Дата загрузки: 2014-12-08 16:41:28
  • Размер файла: 329.47 кб
Помогла работа? Поделись ссылкой
Информация о документе

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

Если Вы являетесь автором текста представленного на данной странице и не хотите чтобы он был размешён на нашем сайте напишите об этом перейдя по ссылке: «Правообладателям»

Можно ли скачать документ с работой

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


СОДЕРЖАНИЕ
Введение 3
1. Выбор среды разработки 4
2. Этапы разработки сайта 9
3. Руководство пользователя 16
Заключение 19
Список используемой литературы 20
Приложение A 21

ВВЕДЕНИЕ
Информационные технологии, основанные на применении компьютера, бeз кoтoрых человек не мoжeт oбoйтись в сoвременном мирe - это унивeрсальные технолoгии, oсновaнные нa рaбoте с текстовыми редaкторами, элeктрoнными тaблицами, базами дaнных, графическими рeдaктoрами, а также мультимeдиa и тeлeкоммуникационныe тeхнологии.
Инфoрмационные технологии, кaк неoтъемлемая сoставляющая сoвременной жизни человека, пoзвoляют упрaвлять oгрoмными пoтoками информации с применением вычислительной техники. В целом, инфoрмационные технoлoгии – это кoмплекс инжeнeрных и тeхнoлогических нaук, обеспечивающих oргaнизацию жизнeдеятельности сoвременного общeства. ИТ спосoбны обрабатывать информацию, хрaнить oгрoмные oбъемы инфoрмации, a также пeрeдавать информацию в крaткие сроки на любые расстояния.
Информационные технологии все глубже и глубже проникают в современную жизнь, наполняя ее практичностью, удобством и комфортом. Информационные технологии - это настоящее и будущее человечества, и общество уже не сможет отказаться от такого комфортного помощника и советчика.


ВЫБОР СРЕДЫ РАЗРАБОТКИ
Для разработки информационной системы были выбраны следующие средства: на стороне клиента — HTML, CSS, JavaScript, на стороне сервера — PHP, MySQL, протокол связи клиент-серверорганизован на основе XML.
HTML — стандартный язык разметки документов во Всемирной паутине. Большинство веб-страниц содержат описание разметки на языке HTML (или XHTML). Язык HTML интерпретируется браузерами и отображается в виде документа в удобной для человека форме.
Язык HTML является приложением SGML (стандартного обобщённого языка разметки) и соответствует международному стандарту ISO 8879.
Язык HTML был разработан британским учёным Тимом Бернерсом-Ли приблизительно в 1986—1991 годах в стенах Европейского Центра ядерных исследований в Женеве (Швейцария). HTML создавался как язык для обмена научной и технической документацией, пригодный для использования людьми, не являющимися специалистами в области вёрстки. HTML успешно справлялся с проблемой сложности SGML путём определения небольшого набора структурных и семантических элементов — дескрипторов. Дескрипторы также часто называют «тегами». С помощью HTML можно легко создать относительно простой, но красиво оформленный документ. Помимо упрощения структуры документа, в HTML внесена поддержка гипертекста. Мультимедийные возможности были добавлены позже.
Текстовые документы, содержащие разметку на языке HTML (такие документы традиционно имеют расширение .html или .htm), обрабатываются специальными приложениями, которые отображают документ в его форматированном виде. Такие приложения, называемые «браузерами» или «интернет-обозревателями», обычно предоставляют пользователю удобный интерфейс для запроса веб-страниц, их просмотра (и вывода на иные внешние устройства) и, при необходимости, отправки введённых пользователем данных на сервер. Наиболее популярными на сегодняшний день браузерами являются Google Chrome, Mozilla Firefox, Opera,Internet Explorer и Safari итд.
Сообществом WHATWG (англ. Web Hypertext Application Technology Working Group), начиная с 2004 года, разрабатывается спецификация Web Applications 1.0, часто неофициально называемая «HTML 5», которая расширяет HTML (впрочем, имея и совместимый с XHTML 1.0 XML-синтаксис) для лучшего представления семантики различных типичных страниц, например форумов, сайтов аукционов, поисковых систем, онлайн-магазинов и т. д., которые не очень удачно вписываются в модель XHTML 2.
CSS — каскадные таблицы стилей — формальный язык описания внешнего вида документа, написанного с использованиемязыка разметки.
Преимущественно используется как средство описания, оформления внешнего вида веб-страниц, написанных с помощью языков разметки HTML и XHTML, но может также применяться к любым XML-документам, например, к SVG или XUL.
Преимущественно используется как средство описания, оформления внешнего вида веб-страниц, написанных с помощью языков разметки HTML и XHTML, но может также применяться к любым XML-документам, например, к SVG или XUL.
В начале 1990-х различные браузеры имели свои стили для отображения веб страниц. HTML развивался очень быстро и был способен удовлетворить все существовавшие на тот момент потребности по оформлению информации, поэтому CSS не получил тогда широкого признания.
Термин «каскадные таблицы стилей» был предложен Хокон Виум Ли в 1994 году. Совместно с Бертом Босом он стал развивать CSS.
CSS — одна из широкого спектра технологий, одобренных консорциумом W3C и получивших общее название «стандарты Web». В 1990-х годах стала ясна необходимость стандартизировать Web, создать какие-то единые правила, по которым программисты и веб-дизайнеры проектировали бы сайты. Так появились языки HTML 4.01 и XHTML, и стандарт CSS.
В отличие от многих существовавших на тот момент языков стиля, CSS использует наследование от родителя к потомку, поэтому разработчик может определить разные стили, основываясь на уже определенных ранее стилях.
CSS используется создателями веб-страниц для задания цветов, шрифтов, расположения отдельных блоков и других аспектов представления внешнего вида этих веб-страниц. Основной целью разработки CSS являлось разделение описания логической структуры веб-страницы (которое производится с помощью HTML или других языков разметки) от описания внешнего вида этой веб-страницы (которое теперь производится с помощью формального языка CSS). Такое разделение может увеличить доступность документа, предоставить большую гибкость и возможность управления его представлением, а также уменьшить сложность и повторяемость в структурном содержимом. Кроме того, CSS позволяет представлять один и тот же документ в различных стилях или методах вывода, таких как экранное представление, печатное представление, чтение голосом (специальным голосовым браузером или программой чтения с экрана), или при выводе устройствами, использующими шрифт Брайля.
JavaScript — прототипно-ориентированный сценарный язык программирования. Является диалектом языка ECMAScript. JavaScript обычно используется как встраиваемый язык для программного доступа к объектам приложений. Наиболее широкое применение находит в браузерах как язык сценариев для придания интерактивности веб-страницам.
Название «JavaScript» является зарегистрированным товарным знаком компании Oracle Corporation.
На JavaScript оказали влияние многие языки, при разработке была цель сделать язык похожим на Java, но при этом лёгким для использования непрограммистами.
Основные архитектурные черты: динамическая типизация, слабая типизация, автоматическое управление памятью, прототипное программирование, функции как объекты первого класса.
Языком JavaScript не владеет какая-либо компания или организация, что отличает его от ряда языков программирования, используемых в веб-разработке.
Первоначально язык назывался LiveScript и предназначался как для программирования на стороне клиента, так и для программирования на стороне сервера (там он должен был называться LiveWire). На синтаксис оказали влияние языки Си и Java, и, поскольку Java в то время было модным словом, 4 декабря 1995 года LiveScript переименовали в JavaScript, получив соответствующую лицензию у Sun. Анонс JavaScript со стороны представителей Netscape и Sun состоялся накануне выпуска второй бета-версии NetscapeNavigator. В нём декларируется, что 28 лидирующих ИТ-компаний выразили намерение использовать в своих будущих продуктах JavaScript как объектный скриптовый язык с открытым стандартом.
По инициативе компании Netscape была проведена стандартизация языка ассоциацией ECMA. Стандартизированная версия имеет название ECMAScript, описывается стандартом ECMA-262. Первой версии спецификации соответствовал JavaScript версии 1.1, а также языки JScript и ScriptEasy.
XML — расширяемый язык разметки рекомендованный Консорциумом Всемирной паутины(W3C) язык разметки. Спецификация XML описывает XML-документы и частично описывает поведение XML-процессоров (программ, читающих XML-документы и обеспечивающих доступ к их содержимому). XML разрабатывался как язык с простым формальным синтаксисом, удобный для создания и обработки документов программами и одновременно удобный для чтения и создания документов человеком, с подчёркиванием нацеленности на использование в Интернете. Язык называется расширяемым, поскольку он не фиксирует разметку, используемую в документах: разработчик волен создать разметку в соответствии с потребностями к конкретной области, будучи ограниченным лишь синтаксическими правилами языка. Сочетание простого формального синтаксиса, удобства для человека, расширяемости, а также базирование на кодировках Юникод для представления содержания документов привело к широкому использованию как собственно XML, так и множества производных специализированных языков на базе XML в самых разнообразных программных средствах.
PHP — скриптовый язык программирования общего назначения, интенсивно применяемый для разработки веб-приложений. В настоящее время поддерживается подавляющим большинством хостинг-провайдеров и является одним из лидеров среди языков программирования, применяющихся для создания динамических веб-сайтов.
Язык и его интерпретатор разрабатываются группой энтузиастов в рамках проекта с открытым кодом. Проект распространяется под собственной лицензией, несовместимой с GNU GPL.
MySQL — свободная реляционная система управления базами данных. Разработку и поддержку MySQL осуществляет корпорация Oracle, получившая права на торговую марку вместе с поглощённой Sun Microsystems, которая ранее приобрела шведскую компанию MySQL AB. Продукт распространяется как под GNU General Public License, так и под собственной коммерческой лицензией. Помимо этого, разработчики создают функциональность по заказу лицензионных пользователей. Именно благодаря такому заказу почти в самых ранних версиях появился механизм репликации.
MySQL является решением для малых и средних приложений. Входит в состав серверов WAMP, AppServ, LAMP и в портативные сборки серверов Денвер,XAMPP, VertrigoServ. Обычно MySQL используется в качестве сервера, к которому обращаются локальные или удалённые клиенты, однако в дистрибутив входит библиотека внутреннего сервера, позволяющая включать MySQL в автономные программы.
Гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц: пользователи могут выбрать как таблицы типа MyISAM, поддерживающие полнотекстовый поиск, так и таблицы InnoDB, поддерживающие транзакции на уровне отдельных записей. Более того, СУБД MySQL поставляется со специальным типом таблиц EXAMPLE, демонстрирующим принципы создания новых типов таблиц. Благодаря открытой архитектуре и GPL-лицензированию, в СУБД MySQL постоянно появляются новые типы таблиц.

ЭТАПЫ РАЗРАБОТКИ ИНФОРМАЦИОННОЙ СИСТЕМЫ.
Первый этап - постановка задачи. Исследование бизнес-процессов Заказчика. Постановка задач. На данном этапе определяется круг задач, которые предполагается решать с использованием разрабатываемой информационной системы, определяются требования к самой системе. Детально исследуется каждая цепочка операций автоматизируемых бизнес-процессов. Ведется активная работа с конечными пользователями на предмет выявления наиболее трудоемких операций.
Определяется перечень входной и выходной информации, формы действующей и требуемой отчетности. Исследуются возможности интеграции с другими информационными системами, используемыми Заказчиком.
Магазин по продаже автозапчастей закупает товар у поставщиков, далее складирует товар на складе и продает его покупателям(Рис. 1, Рис. 2). Информационная система магазина по продаже автозапчастей должна организовывать поступление товара на склад, его продажу.
Рисунок 1. Диаграмма IDEF0.

Рисунок 2. Декомпозированная диаграмма IDEF0.
Этап 2. Формирование требований и разработка технического задания. Информационная система магазина по продаже автозапчастей должна обеспечивать хранение информации о доступном на складе товаре. Доступ рабочих к информационной системе должен быть организован в соответствии с должностными обязанностями. Информационная система должна автоматизировать продажу и поступление товара на склад.
Стадия 3. Эскизный проект. На этом этапе стоит определить логическую модель информационной модели, список используемых технологий, структуру базы данных, а также предположительное место развертывания ИС.
На стороне клиента используется связка Javascript, HTMLи CSS. На стороне сервера используетсяPHPи MySQL. Для связи сервера и клиента используется протокол основанный на XML. Связь клиент-сервер предполагается шифровать TLS(Рис 3).
Рисунок 3. Логическая структура ИС.
В качестве СУБД был выбран MySQL. В ходе системного анализа была разработана структура данных удовлетворяющая поставленным требованиям. Стоит отметить что пароли пользователей хранятся в базе данных в виде хешей MD5. Каждый пользователь находится в определенной группе должностей. Каждой должности сопоставлено битовое поле “privilege”, в котором биты отвечают за доступ к определенному действию.
Рисунок 4. Логическая модель БД.
Стадия 4. Техническийпроект. На этом этапе стоит разработать программную часть клиента и сервера.
Серверная часть разрабатывается на PHP. PHPподдерживает парадигмы процедурного программирования и ООП. Для реализации программной части была выбрана парадигма процедурного программирования. В ходе разработки были разработаны следующие процедуры:
1. createUser(firstName, midleName, lastName, phone, passwordMD5, post_id) — процедура для создания пользователя, аргументы: имя, отчество, фамилия, телефон, пароль, должность.
2. deleteUser(id) — процедура для удаления пользователя, аргументы: ид пользователя.
3. updateUser(id, firstName, midleName, lastName, phone, password, post_id) — процедура для изменения пользователя, аргументы: ид пользователя, имя, отчество, фамилия, телефон, пароль, должность.
4. createSupplier(name, fullName, phone, site, email, address) — процедура для создания поставщика, аргументы: краткое название фирмы, полное название фирмы, телефон, сайт, почта, адрес.
5. deleteSupplier(id) — процедура для удаления поставщика, аргументы: ид поставщика.
6. updateSupplier(id, name, fullName, phone, site, email, address) — процедура для изменения поставщика, аргументы: ид поставщика, краткое название фирмы, полное название фирмы, телефон, сайт, почта, адрес.
7. createItem(name, description, supplier_id, count, price) — процедура для создания товара, аргументы: название товара, описание, поставщик, количество, стоимость.
8. deleteItem(id) — процедура для удаления товара, аргументы: ид товара.
9. updateItem(id, name, description, supplier_id, count, price) — процедура для изменения товара, аргументы: ид товара, название товара, описание, поставщик, количество, стоимость.
10. createTransaction(items_id) — процедура для проведения транзакции аргументы: список ид товаров.
11. login (id, passwordMD5) — процедура для идентификации пользователя. аргументы: ид пользователя, хеш пароля.
12. generatePage() — процедура для генерации HTMLстраницы.
13. ConnectDB() — процедура для соединения PHPс базой данных MySQL/
14. sessionCheck() — процедура для проверки наличии сессии с текущим пользователем.
15. accessCheck(access) — процедура для проверки привилегий текущего пользователя, аргументы: вид доступа.
16. XMLdispatch (xmlStr) — процедура для разбора поступившего запроса.
Все функции возвращают True(тип Boolean) в случае корректного выполнения операции и False(тип Boolean) или строку с описанием ошибки в случае не корректного выполнения.
Для связи сервера с клиентом используется протокол основанный на XML, пример запроса(Рис 5.).
Рисунок 5. Пример запроса.
В запросе клиент-сервер, клиент может использовать следующие ноды:
1. getUsers — получить список пользователей.
2. getItems — получить список товаров.
3. getSuppliers — получить список поставщиков.
4. getTransactions — получить список транзакций.
5. createUser — создать пользователя. Атрибуты firstName, midleName, lastName, phone, passwordMD5 и post_id передаются процедуре createUser.
6. deleteUser — удалить пользователя. Атрибут id передается процедуре deleteUser.
7. updateUser — обновить пользователя. Атрибуты id, firstName, midleName, lastName, phone, passwordMD5 и post_id передаются процедуре updateUser.
8. createItem — создать товар. Атрибуты name, description, supplier_id, count и price передаются процедуре createItem.
9. deleteItem — удалить товар. Атрибут id передается процедуре deleteItem.
10. updateItem — обновить товар. Атрибуты id, name, description, supplier_id, count и price передаются процедуре updateItem.
11. createSupplier — создатьпоставщика. Атрибуты name, fullName, phone, site, email и address передаютсяпроцедуре createSupplier.
12. deleteSupplier — удалитьпоставщика. Атрибут id передаетсяпроцедуре deleteSupplier.
13. updateSupplier — обновитьпоставщика. Атрибуты id, name, fullName, phone, site, email и address передаютсяпроцедуре updateSupplier.
14. createTransaction — провеститранзакцию. Нода createTransaction должнасодержатьпотомков item сатрибутамиcount. Информация о товарах передается функции createTransaction.
Перед всеми запросами происходит проверка прав пользователя. Корректность запроса проверяется в соответствующей запросу процедуре PHP.
В запросе сервер-клиент, сервер может использовать следующие ноды:
1. error — сообщение об ошибке. Содержит текст ощибки.
2. success — сообщение о успешно выполненной операции. Содержит текст операции.
3. User — сообщение о добавленном пользователе. Содержит информацию о пользователе.
4. item — сообщение о добавленном товаре. Содержит информацию о добавленном товаре.
5. transaction — сообщение о проведенной транзакции. Содержит информацию о транзакции.
6. supplier — сообщение о добавленном поставщике. Содержит информацию о поставщике.
Эти запросы обрабатываются соответствующим образом на стороне клиента.
РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ.
Этап 5. Рабочая документация. В этом этапе стоит оформить руководство пользователя.
При входе в ИС, пользователь увидит окно идентификации(Рис. 6) где нужно ввести свой уникальный номер и пароль, выданный администратором. По умолчанию администратор имеет номер «1» и пароль «123456».
Рисунок 6. Окно входа.
После идентификации пользователь увидит рабочее окно, содержание которого меняется в зависимости от уровня доступа.
Рисунок 7. Рабочее окно.
Во вкладке «Пользователи» можно просмотреть информацию о пользователях и удалить их. Во вкладке «Товары» можно просмотреть информацию о товарах и удалить их. Нажав на поставщика во вкладке «Товары» можно перейти к нужному поставщику и просмотреть информацию о нем. На вкладке «Транзакции» можно посмотреть историю сделок, дату, продавца, общую стоимость и список товаров. Во вкладке «Поставщики» можно просмотреть информацию о поставщиках.
Рисунок 8. Вкладка «Добавить пользователя».
На вкладке «Добавить пользователя» можно добавить нового пользователя, для этого нужно ввести имя, фамилию, отчество, телефон, выбрать должность из списка, назначить пароль и нажать на кнопку «Создать».
Рисунок 9. Вкладка «Добавить товар».
На вкладке «Добавить товар» можно добавить новый товар, для этого нужно ввести название товара, его описание, выбрать поставщика из списка, ввести количество, стоимость и нажать на кнопку «Создать».
Рисунок 10. Вкладка «Добавить транзакцию».

На вкладке «Добавить транзакцию» можно провести новую транзакцию, для этого выбрать нужный товар, его количество, нажать кнопку добавить, после добавления всех нужных товаров нужно нажать на кнопку «Подтвердить».
Рисунок 11. Вкладка «Добавить поставщика».
На вкладке «Добавить поставщика» можно добавить нового поставщика, для этого нужно ввести название поставщика, его полное название, телефон, сайт, почту, адрес и нажать на кнопку «Создать».
После работы нужно выйти из учетной записи, для этого нужно нажать на кнопку «Выход» в правом верхнем углу.
ЗАКЛЮЧЕНИЕ
В ходе проделанной работы, я приобрел навыки работы на языке PHP, языке гипертекстовой разметки Html, прототипно-ориентированном языке JavaScript, языке каскадных таблиц стилей CSSи языке структурированных запросов SQL.
В ходе выполнения индивидуального задания, я научился разработке, верстке и конструированию сайтов в Dreamweaver, программированиюPHP, SQL и JavaScript в IDE “NetBeans”.
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
1. Бен Хеник HTML и CSS. Путь к совершенству / Бен Хеник - М. : «Питер» 2013. – 264 с.
2. Дронов, В.А HTML, CSS и Web 2.0. Разработка современных Web-сайтов : учеб. для студ. вузов / Дронов, В.А - М. : «БХВ-Петербург» 2011. – 630 с.
3. Джон Рейсиг JavaScript. Профессиональные приемы программирования / Джон Рейсиг - М. : «Питер» 2010. – 322 с.
4. Джон А. Филлипс Изучаем PHP и MySQL / Джон А. Филлипс - М. : «Символ-Плюс» 2011. – 327 с.
5. Майкл Моррисон JavaScript. Библия пользователя / Майкл Моррисон - М. : «Диалектика» 2012. – 230 с.
6. Маклаков, С.В. Основы CSS : учеб. пособие для студ. среднего проф. образования / Маклаков С.В. - М. : Диалогмифи, 2011. - 340 с.
7. Маклаков, С.В. CASE-средства для разработки информационных систем : учеб. пособие для студ. среднего проф. образования / Маклаков С.В. - М. : Диалогмифи, 2012. – 420 с.
8. Прохоренок, Н.Е. HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера : учеб. для студ. вузов / Прохоренок, Н.Е. - М. : «БХВ-Петербург» 2010. – 528 с.
9. Рейчел Эндрю CSS. 100 и 1 совет / Рейчел Эндрю - М. : «Символ-Плюс» 2010. - 320 с.
10. Стив Суэринг PHP и MySQL. Библия программиста / Стив Суэринг - М. : «Диалектика» 2011. – 272 с.
ПриложениеA
Файл button.css
.button {
display:inline-block;
box-sizing:border-box;
outline: none;
cursor: pointer;
text-align: center;
text-decoration: none;
font: 14px/100% Arial, Helvetica, sans-serif;
padding:.5em 2em .55em 2em;
margin:.5em;
text-shadow: 0 1px 1px rgba(0,0,0,.1);

border:solid;
border-width:2px;
border-color:#996633;
text-align:center;
background-color: #FFCF73;
color:#CC6633;

-moz-user-select: -moz-none;
-o-user-select: none;
-khtml-user-select: none;
-webkit-user-select: none;
user-select: none;
}
.button:hover {
text-decoration: none;
background-color:#F90;
}
.button:active {
color:#996633;
text-decoration: none;
background-color:#F60;
}
.rightBottomButton {
position: absolute;
right:50px;
bottom:30px;
width: 7em;
}
.leftBottomButton {
position: absolute;
left:50px;
bottom:30px;
width: 7em;
}
.rightTopButton {
position: absolute;
right:50px;
top:30px;
width: 7em;
}
.leftTopButton {
position: absolute;
left:50px;
top:30px;
width: 7em;
}
ФайлformBlock.css
.formBlock {
box-sizing:border-box;
padding:0.1em;
font:24px/100% Arial, Helvetica, sans-serif;
display:inline-block;
width:14em;
margin:5px;
text-align:left;


}
.formBlock input, .formBlock div {
font: 24px/100% Arial, Helvetica, sans-serif;
box-sizing:border-box;
padding:0.1em;
margin-top:0.3em;
width:100%;
display:inline-block;
text-align:left;
}
Файл main.css
body {
//background-color:#1ABC9C;
min-height:100%;
}
Файл Popup.css
.popUp {
position:fixed;
z-index:100;
left:0px;
top:0px;
width:100%;
height:100%;
background: rgb( 0, 0, 0);
background: rgba( 0, 0, 0, 0.5);
}
.popUp > .popUpBox {
display:block;
position:absolute;
margin:0%;
padding:8%;
left:15%;
top:15%;
right:15%;
bottom:15%;
box-sizing:border-box;
border:solid #963;
border-width:2px;
border-radius:10px;
background-color:#EEE;
}
Файл table.css
.wrap {
display:block;
box-sizing:border-box;
left:0px;
top:0px;
padding-bottom:20px;
}
.wrap table {
position:relative;
width: 100%;
table-layout: fixed;
}
.wrap table tr:focus {
background:#ECF0F1;
outline:none;
}
.wrap td {
box-sizing:border-box;
height:30px;
padding: 2px;
margin:0px;
border-style:solid;
border-width:0 0 0 1px;
border-color:#ECF0F1;
}
.wrap td:first-child {
border:none;
}
.wrap .head td {
border-color:#95A5A6;
}
.wrap .head td:first-child {
border:none;
border-top-left-radius:4px;
border-bottom-left-radius:4px;
}
.wrap .head td:last-child {
border-top-right-radius:4px;
border-bottom-right-radius:4px;
}
.wrap tr {
box-sizing:border-box;
height:30px;
padding: 2px;
margin:0px;
border-style:solid;
border-width:1px 0 0 0;
border-color:#BDC3C7;
}
.wrap tr:first-child {
border:none;
}
.wrap .head tr td {
background:#BDC3C7;
color:#000;
}
.wrap > .inner_table {
left:0px;
top:38px;
box-sizing:border-box;
overflow:hidden;
}

Файл functions.php
<?php
error_reporting(0);
session_start();

$DBUrl = localhost:3306;
$DBUsername = root;
$DBPassword = ;
//mysql_select_db(myProject);

/*
post
firstName
midleName
lastName
phone
password

adminID = SELECT id FROM post WHERE name=Администратор;
directorID = SELECT id FROM post WHERE name=Директор;

INSERT INTO users(firstName, midleName, lastName, password, phone, post_id)
VALUES();
mysql_escape_string
*/

function generateRandomStr($length=6) {
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHI JKLMNOPRQSTUVWXYZ0123456789";
$code = "";
$clen = strlen($chars) - 1;
while (strlen($code) < $length) {
$code .= $chars[mt_rand(0,$clen)];
}
return $code;
}


function createBD ($xmlUsers) {
$insertPost = "INSERT INTO post(id, name, description, privilege) VALUES".
"(1, Администратор, Администраторы: могут создавать, удалять, изменять пользователей., 1),".
"(2, Директор, Директор: может просматривать списки товаров, поставщиков, продаж., 1),".
"(3, Завхоз, Завхозы: могут добавлять вид товара, добавлять и удалять товар со склада., 1),".
"(4, Продавец, Продавцы: могут продавать товар., 9);";
$xml = new SimpleXMLElement($_POST[xml]);
$sqlInsert = array();
$adminInit = false;
$directorInit = false;
$adminID = 1;
$directorID = 2;
if ($xml === NULL) return Ошибка запроса;
foreach ($xml->user as $value) {
switch ($value[post]) {
case Администратор:
$adminInit = true;
$newUser = array(7);
$newUser[0] = $value[firstName];
$newUser[1] = $value[midleName];
$newUser[2] = $value[lastName];
$newUser[3] = $value[phone];
$newUser[4] = $value[password];
$newUser[5] = $adminID;
array_push($sqlInsert, $newUser);
break;
case Директор:
$directorInit = true;
$newUser = array(6);
$newUser[0] = $value[firstName];
$newUser[1] = $value[midleName];
$newUser[2] = $value[lastName];
$newUser[3] = $value[phone];
$newUser[4] = $value[password];
$newUser[5] = $directorID;
array_push($sqlInsert, $newUser);
break;
case Завхоз:

break;
case Продавец:

break;

}
}
if (!$adminInit || !$directorInit) return Нужен 1 Администратор и 1 Директор;

if (mysql_select_db(myProject)) mysql_query("DROP DATABASE myProject;");

$result = mysql_query("CREATE DATABASE myProject CHARACTER SET utf8 COLLATE utf8_general_ci;");
if (!$result) {
mysql_query("DROP DATABASE myProject;");
return 0.mysql_error();
}
if (!mysql_select_db(myProject)) {
mysql_query("DROP DATABASE myProject;");
return 1.mysql_error();
}

$result = mysql_query("CREATE TABLE post (id INT(10) AUTO_INCREMENT,name VARCHAR(50) NOT NULL,description VARCHAR(200),privilege int(10),PRIMARY KEY (id),INDEX (id)) ENGINE=InnoDB;");
if (!$result) {
mysql_query("DROP DATABASE myProject;");
return 2.mysql_error();
}

$result = mysql_query("CREATE TABLE users (id INT(10) AUTO_INCREMENT,firstName VARCHAR(50) NOT NULL,midleName VARCHAR(50),lastName VARCHAR(50) NOT NULL,password VARCHAR(32) NOT NULL,phone CHAR(20),post_id int(10),PRIMARY KEY (id),INDEX (id),FOREIGN KEY (post_id) REFERENCES post(id) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB;");
if (!$result) {
mysql_query("DROP DATABASE myProject;");
return 3.mysql_error();
}

$result = mysql_query("CREATE TABLE suppliers (id INT(10) AUTO_INCREMENT,name VARCHAR(50) NOT NULL,fullName VARCHAR(50),phone CHAR(20),site VARCHAR(50),email VARCHAR(50),address VARCHAR(200),PRIMARY KEY (id),INDEX (id)) ENGINE=InnoDB;");
if (!$result) {
mysql_query("DROP DATABASE myProject;");
return 4.mysql_error();
}

$result = mysql_query("CREATE TABLE items (id INT(10) AUTO_INCREMENT,name VARCHAR(50) NOT NULL,description VARCHAR(200),supplier_id int(10),count int(10) UNSIGNED NOT NULL,price DECIMAL(10,2) UNSIGNED NOT NULL,PRIMARY KEY (id),INDEX (id),FOREIGN KEY (supplier_id) REFERENCES suppliers(id) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB;");
if (!$result) {
mysql_query("DROP DATABASE myProject;");
return 5.mysql_error();
}

$result = mysql_query("CREATE TABLE transaction (id INT(10) AUTO_INCREMENT,cash DECIMAL(10,2) UNSIGNED NOT NULL,data TIMESTAMP,item_id INT(10),user_id INT(10),PRIMARY KEY (id),INDEX (id),FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE ON UPDATE CASCADE,FOREIGN KEY (item_id) REFERENCES items(id) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB;");
if (!$result) {
mysql_query("DROP DATABASE myProject;");
return 6.mysql_error();
}

$result = mysql_query("CREATE TABLE transaction_items (item_id INT(10), transaction_id INT(10), FOREIGN KEY (item_id) REFERENCES items(id) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (transaction_id) REFERENCES transaction(id) ON DELETE CASCADE ON UPDATE CASCADE);");
if (!$result) {
mysql_query("DROP DATABASE myProject;");
return 7.mysql_error();
}

$result = mysql_query($insertPost);
if (!$result) {
mysql_query("DROP DATABASE myProject;");
return 8.mysql_error();
}
if (count($sqlInsert)<2) return мало мало;
foreach ($sqlInsert as $value) {
$result = createUser($value[0], $value[1], $value[2], $value[3], $value[4], $value[5]);
if (!$result) {
mysql_query("DROP DATABASE myProject;");
return $result;
}
}

return true;
}
function createUser($firstName, $midleName, $lastName, $phone, $passwordMD5, $post_id) {
$result = mysql_query("INSERT INTO users(firstName, midleName, lastName, phone, password, post_id) VALUES($firstName, $midleName, $lastName, $phone, $passwordMD5, $post_id);");
if ($result) {
return true;
}else{
return mysql_error();
}
}
function deleteUser($id) {
if ($id === NULL || $id === ) return Не правильное имя пользователя;

$result = mysql_query("SELECT id FROM users WHERE id=$id");
if (mysql_num_rows($result) < 1) return Пользователя не существует;
$deleteResult = mysql_query("DELETE FROM users WHERE id=$id;");
if ($deleteResult) {
return true;
}else{
return mysql_error();
}
}
function updateUser($id, $firstName, $midleName, $lastName, $phone, $password, $post_id) {
if ($username === NULL || $username === ) return Не правильное имя пользователя;

$result = mysql_query("SELECT username FROM users WHERE username=$username");
if (mysql_num_rows($result) < 1) return Пользователя не существует;
//UPDATE users SET hash=1, firstName=name ;
$sql = UPDATE users SET ;
if ($firstName) {
$sql.=firstName=".$firstName.",;
}
if ($midleName) {
$sql.=midleName=".$midleName.",;
}
if ($lastName) {
$sql.=lastName=".$lastName.",;
}
if ($phone) {
$sql.=phone=".$phone.",;
}
if ($password) {
$sql.=password=".$password.",;
}
if ($post_id) {
$sql.=post_id=".$post_id.",;
}
$sql = substr($sql, 0, strlen($sql)-1)." WHERE username=$username";
$updateResult = mysql_query($sql);
if ($updateResult) {
return true;
}else{
return mysql_error();
}
}

function createSupplier($name, $fullName, $phone, $site, $email, $address) {
if ( strlen($name)<6) return Название фирмы слишком короткое;
$result = mysql_query("INSERT INTO suppliers(name, fullName, phone, site, email, address) VALUES($name, $fullName, $phone, $site, $email, $address);");
if ($result) {
return true;
}else{
return mysql_error();
}
}
function deleteSupplier($id) {
$selectResult = mysql_query("SELECT id FROM suppliers WHERE id=$id;");
if (mysql_num_rows($selectResult) < 1) {
mysql_close($DBHandle);
return Поставщика не существует;
}
$deleteResult = mysql_query("DELETE FROM suppliers WHERE id=$id;");
if ($deleteResult) {
return true;
}else{
return mysql_error();
}
}
function updateSupplier($id, $name, $fullName, $phone, $site, $email, $address) {
$selectResult = mysql_query("SELECT id FROM suppliers WHERE id=$id;");
if (mysql_num_rows($selectResult) < 1) return Пользователя не существует;
//UPDATE users SET hash=1, firstName=name ;
$sql = UPDATE suppliers SET ;
if ($name) {
$sql.="name=$name,";
}
if ($fullName) {
$sql.="fullName=$fullName,";
}
if ($phone) {
$sql.="phone=$phone,";
}
if ($site) {
$sql.="site=$site,";
}
if ($email) {
$sql.="email=$email,";
}
if ($address) {
$sql.="address=$address,";
}
$sql = substr($sql, 0, strlen($sql)-1)." WHERE id=$id";
$updateResult = mysql_query($sql);
if ($updateResult) {
return true;
}else{
return mysql_error();
}
}

function createItem($name, $description, $supplier_id, $count, $price) {
if ( strlen($name)<1) return Название товара слишком короткое;
$result = mysql_query("INSERT INTO items(name, description, supplier_id, count, price) VALUES($name, $description, $supplier_id, $count, $price);");
if ($result) {
return true;
}else{
return mysql_error();
}
}
function deleteItem($id) {
$selectResult = mysql_query("SELECT id FROM items WHERE id=$id;");
if (mysql_num_rows($selectResult) < 1) {
mysql_close($DBHandle);
return Товар не существует;
}
$deleteResult = mysql_query("DELETE FROM items WHERE id=$id;");
if ($deleteResult) {
return true;
}else{
return mysql_error();
}
}
function updateItem($id, $name, $description, $supplier_id, $count, $price) {
$selectResult = mysql_query("SELECT id FROM items WHERE id=$id;");
if (mysql_num_rows($selectResult) < 1) return Товар не существует;
$sql = UPDATE items SET ;
if ($name) {
$sql.="name=$name,";
}
if ($description) {
$sql.="description=$description,";
}
if ($supplier_id) {
$sql.="supplier_id=$supplier_id,";
}
if ($count) {
$sql.="count=$count,";
}
if ($price) {
$sql.="price=$price,";
}
$sql = substr($sql, 0, strlen($sql)-1)." WHERE id=$id";
$updateResult = mysql_query($sql);
if ($updateResult) {
return true;
}else{
return mysql_error();
}
}

function createTransaction($items_id) {
$user_id = 1;
$result = mysql_query("INSERT INTO transaction(user_id) VALUES($user_id);");
if ($result) {
$id = mysql_insert_id();
$strQuery = INSERT INTO transaction_items(transaction_id, item_id, count)VALUES;
foreach($items_id as $key => $value) {
$strQuery .= "($id, $key, $value),";
}
$strQuery[strlen($strQuery)-1] = ;;
$result = mysql_query($strQuery);
if ($result) {
/*
UPDATE
transaction
SET
cash=(
SELECT
sum(transaction_items.count*items.price)
FROM
transaction_items JOIN items ON(transaction_items.item_id=items.id)
WHERE
transaction_id=10
)
WHERE
id=10;
*/
$result1 = mysql_query("UPDATE transaction SET cash=(SELECT sum(transaction_items.count*items.price) FROM transaction_items JOIN items ON(transaction_items.item_id=items.id) WHERE transaction_id=$id) WHERE id=$id;");
return true;
}else{
return $strQuery.mysql_error();
}
}else{
return mysql_error();
}
}
function deleteTransaction($id) {
$selectResult = mysql_query("SELECT id FROM transaction WHERE id=$id;");
if (mysql_num_rows($selectResult) < 1) return Транзакции не существует;
$deleteResult = mysql_query("DELETE FROM transaction WHERE id=$id;");
if ($deleteResult) {
return true;
}else{
return mysql_error();
}
}

function login ($id, $passwordMD5) {
if (sessionCheck()) return true;
if ($id==) return false;

$result = mysql_query("SELECT * FROM post WHERE id IN (SELECT post_id FROM users WHERE id=".mysql_real_escape_string($id)." AND password=".mysql_real_escape_string($passwordMD5).");");
if ($result!=NULL && mysql_num_rows($result)>0 ) {
$arr = mysql_fetch_array($result);
$_SESSION[username] = $id;
$_SESSION[hash] = generateRandomStr(16);
$_SESSION[privilege] = $arr[privilege];
setcookie(session_name(), session_id(), time()+30*60);
setcookie("username", $id, time()+30*60);
setcookie("sessionHash", $_SESSION[hash], time()+30*60);
$_COOKIE[username] = $id;
$_COOKIE[sessionHash] = $_SESSION[hash];
return true;
}
return false;
}
function generatePage() {
if (!mysql_select_db(myProject)) {
$res = createBD("<xml><createUser postАдминистратор firstName=admin midleName= lastName= phone= password=".MD5("123456")."/><createUser postДиректор firstName=director midleName= lastName= phone= password=".MD5("123456")."/></xml>");
if (!$res) {
echo $res;
}else{
header(Location: http:\\.$_SERVER[HTTP_HOST]./in.html);
}
}else if ( sessionCheck() ) {
include("mainPage.php");
}else{
//echo session nan;
header(Location: http:\\.$_SERVER[HTTP_HOST]./in.html);
}
}

function connectDB() {
global $DBUrl, $DBUsername, $DBPassword;
$DBHandle = mysql_connect($DBUrl, $DBUsername, $DBPassword);
if ( !$DBHandle ) {
mysql_close($DBHandle);
return <error>Не удалось соединится с базой данных</error>;
}
mysql_set_charset(utf8);
mysql_select_db(myProject);
return true;
}
function sessionCheck() {
return isset($_COOKIE[username]) && isset($_SESSION[username]) &&
isset($_COOKIE[sessionHash]) && isset($_SESSION[hash]) &&
$_COOKIE[username] === $_SESSION[username] &&
$_COOKIE[sessionHash] === $_SESSION[hash];
}
function accessCheck($access) {
$accessViewUser = 1;
$accessDeleteUser = 2;
$accessUpdateUser = 4;
$accessCreateUser = 8;
$accessViewSupplier = 16;
$accessDeleteSupplier = 32;
$accessUpdateSupplier = 64;
$accessCreateSupplier = 128;
$accessViewItem = 256;
$accessDeleteItem = 512;
$accessUpdateItem = 1024;
$accessCreateItem = 2048;
$accessViewTransaction = 4096;
$accessDeleteTransaction = 8192;
$accessCreateTransaction = 16384;

if ( !isset($_SESSION[privilege]) ) return false;
$privilege = intval($_SESSION[privilege]);
switch ($access) {
case createUser:
if ($privilege&$accessCreateUser) return true;
break;
case updateUser:
if ($privilege&$accessUpdateUser) return true;
break;
case deleteUser:
if ($privilege&$accessDeleteUser) return true;
break;
case viewUser:
if ($privilege&$accessViewUser) return true;
break;
case createSupplier:
if ($privilege&$accessCreateSupplier) return true;
break;
case deleteSupplier:
if ($privilege&$accessDeleteSupplier) return true;
break;
case updateSupplier:
if ($privilege&$accessUpdateSupplier) return true;
break;
case viewSupplier:
if ($privilege&$accessViewSupplier) return true;
break;
case createItem:
if ($privilege&$accessCreateItem) return true;
break;
case deleteItem:
if ($privilege&$accessDeleteItem) return true;
break;
case updateItem:
if ($privilege&$accessUpdateItem) return true;
break;
case viewItem:
if ($privilege&$accessViewItem) return true;
break;
case createTransaction:
if ($privilege&$accessCreateTransaction) return true;
break;
case deleteTransaction:
if ($privilege&$accessDeleteTransaction) return true;
break;
case viewTransaction:
if ($privilege&$accessViewTransaction) return true;
break;
}
return false;
}

function XMLdispatch ($xmlStr) {
$xml = new SimpleXMLElement($xmlStr);
echo <?xml version="1.0" encoding="UTF-8"?><xml>;
foreach($xml as $key => $value) {
switch($key) {
case getUsers:
if (accessCheck(viewUser)) {
$count = mysql_real_escape_string($value[count]);
$start = mysql_real_escape_string($value[start]);
$selectResult = mysql_query("SELECT * FROM users;");
while ( $usersResult = mysql_fetch_array($selectResult) ) {
$id = $usersResult[id];
$firstName = $usersResult[firstName];
$midleName = $usersResult[midleName];
$lastName = $usersResult[lastName];
$phone = $usersResult[phone];
$post_id = $usersResult[post_id];
echo "<user id=$id firstName=$firstName midleName=$midleName lastName=$lastName phone=$phone post_id=$post_id/>";
}
}
break;
case getItems:
if (accessCheck(viewItem)) {
$count = mysql_real_escape_string($value[count]);
$start = mysql_real_escape_string($value[start]);

$selectResult = mysql_query("SELECT * FROM items;");
while ( $itemsResult = mysql_fetch_array($selectResult) ) {//id, name, description, supplier_id, count, price
$id = $itemsResult[id];
$name = $itemsResult[name];
$description = $itemsResult[description];
$supplier_id = $itemsResult[supplier_id];
$count = $itemsResult[count];
$price = $itemsResult[price];
echo "<item id=$id name=$name description=$description supplier_id=$supplier_id count=$count price=$price/>";
}
}
break;
case getSuppliers:
if (accessCheck(viewSupplier)) {//id, name, fullName, phone, site, email, address
$count = mysql_real_escape_string($value[count]);
$start = mysql_real_escape_string($value[start]);

$selectResult = mysql_query("SELECT * FROM suppliers;");
while ( $suppliersResult = mysql_fetch_array($selectResult) ) {
$id = $suppliersResult[id];
$name = $suppliersResult[name];
$fullName = $suppliersResult[fullName];
$phone = $suppliersResult[phone];
$site = $suppliersResult[site];
$email = $suppliersResult[email];
$address = $suppliersResult[address];
echo "<supplier id=$id name=$name fullName=$fullName phone=$phone site=$site email=$email address=$address/>";
}
}
break;
case getTransactions:
if (accessCheck(viewTransaction)) {//id, cash, data, item_id, user_id
$count = mysql_real_escape_string($value[count]);
$start = mysql_real_escape_string($value[start]);

$selectResult = mysql_query("SELECT * FROM transaction;");
while ( $transactionsResult = mysql_fetch_array($selectResult) ) {
$id = $transactionsResult[id];
$cash = $transactionsResult[cash];
$data = $transactionsResult[data];
$user_id = $transactionsResult[user_id];
echo "<transaction id=$id cash=$cash data=$data user_id=$user_id>";
$selectItemsResult = mysql_query("SELECT * FROM transaction_items WHERE transaction_id=$id;");
while ( $transactionsItemsResult = mysql_fetch_array($selectItemsResult) ) {
$itemID = $transactionsItemsResult[item_id];
$itemCount = $transactionsItemsResult[count];
echo "<transactionItem id=$itemID count=$itemCount/>";
}
echo </transaction>;
}
}
break;


case createUser:
if (accessCheck(createUser)) {
$firstName = mysql_real_escape_string($value[firstName]);
$midleName = mysql_real_escape_string($value[midleName]);
$lastName = mysql_real_escape_string($value[lastName]);
$phone = mysql_real_escape_string($value[phone]);
$passwordMD5 = mysql_real_escape_string($value[passwordMD5]);
$post_id = mysql_real_escape_string($value[post_id]);
$resulr = createUser($firstName, $midleName, $lastName, $phone, $passwordMD5, $post_id);
if ($resulr === true) {
$id = mysql_insert_id();
echo "<success id=$username event=createUser>Пользователь $id успешно добавлен</success>";
echo "<user id=$id firstName=$firstName midleName=$midleName lastName=$lastName phone=$phone post_id=$post_id/>";
}else{
echo "<error firstName=$firstName event=createUser>".$resulr.</error>;
}
}else{
echo "<error event=createUser>У вас недостаточно прав</error>";
}
break;
case deleteUser:
if (accessCheck(deleteUser)) {
$id = mysql_real_escape_string($value[id]);
$resulr = deleteUser($id);
if ($resulr === true) {
echo "<success id=$id event=deleteUser>Пользователь $id удален</success>";
}else{
echo "<error id=$id event=deleteUser>$resulr</error>";
}
}else{
echo "<error event=deleteUser>У вас недостаточно прав</error>";
}
break;
case updateUser:
if (accessCheck(updateUser)) {
$id = mysql_real_escape_string($value[id]);
$firstName = mysql_real_escape_string($value[firstName]);
$midleName = mysql_real_escape_string($value[midleName]);
$lastName = mysql_real_escape_string($value[lastName]);
$phone = mysql_real_escape_string($value[phone]);
$passwordMD5 = mysql_real_escape_string($value[passwordMD5]);
$post_id = mysql_real_escape_string($value[post_id]);
$resulr = updateUser($id, $firstName, $midleName, $lastName, $phone, $passwordMD5, $post_id);
if ($resulr === true) {
echo "<success id=$id event=updateUser>Профиль $id обновлен</success>";
}else{
echo "<error id=$id event=updateUser>$id</error>";
}
}else{
echo "<error event=updateUser>У вас недостаточно прав</error>";
}
break;
case createItem:
if (accessCheck(createItem)) {
$name = mysql_real_escape_string($value[name]);
$description = mysql_real_escape_string($value[description]);
$supplier_id = mysql_real_escape_string($value[supplier_id]);
$count = mysql_real_escape_string($value[count]);
$price = mysql_real_escape_string($value[price]);
$createResult = createItem($name, $description, $supplier_id, $count, $price);
if ($createResult === true) {
$id = mysql_insert_id();
echo "<success event=createItem name=$name>Товар $name добавлен". mysql_error()."</success>";
echo "<item id=$id name=$name description=$description supplier_id=$supplier_id count=$count price=$price/>";
}else{
echo "<error event=createItem name=$name>$createResult</error>";
}
}else{
echo "<error event=createItem>У вас недостаточно прав</error>";
}
break;
case deleteItem:
if (accessCheck(deleteItem)) {
$id = mysql_real_escape_string($value[id]);
$deleteResulr = deleteItem($id);
if ($deleteResulr === true) {
echo "<success event=deleteItem id=$id>Поставщик $id удален</success>";
}else{
echo "<error event=deleteItem id=$id>$deleteResulr</error>";
}
}else{
echo "<error event=deleteItem>У вас недостаточно прав</error>";
}
break;
case updateItem:
if (accessCheck(updateItem)) {
$id = mysql_real_escape_string($value[id]);
$name = mysql_real_escape_string($value[name]);
$fullName = mysql_real_escape_string($value[fullName]);
$phone = mysql_real_escape_string($value[phone]);
$site = mysql_real_escape_string($value[site]);
$email = mysql_real_escape_string($value[email]);
$address = mysql_real_escape_string($value[address]);
$updateResult = updateSupplier($id, $name, $fullName, $phone, $site, $email, $address);
if ($updateResult === true) {
echo "<success event=updateItem id=$id>Поставщик $id обновлен</success>";
}else{
echo "<error event=updateItem id=$id>$updateResult</error>";
}
}else{
echo "<error event=updateItem>У вас недостаточно прав</error>";
}
break;
case createSupplier:
if (accessCheck(createSupplier)) {
$name = mysql_real_escape_string($value[name]);
$fullName = mysql_real_escape_string($value[fullName]);
$phone = mysql_real_escape_string($value[phone]);
$site = mysql_real_escape_string($value[site]);
$email = mysql_real_escape_string($value[email]);
$address = mysql_real_escape_string($value[address]);
$createResult = createSupplier($name, $fullName, $phone, $site, $email, $address);
if ($createResult === true) {
$id = mysql_insert_id();
echo "<supplier id=$id name=$name fullName=$fullName phone=$phone site=$site email=$email address=$address/>";
echo "<success event=createSupplier name=$name>Поставщик $name добавлен</success>";
}else{
echo "<error event=createSupplier name=$name>$createResult</error>";
}
}else{
echo "<error event=createSupplier>У вас недостаточно прав</error>";
}
break;
case deleteSupplier:
if (accessCheck(deleteSupplier)) {
$id = mysql_real_escape_string($value[id]);
$deleteResulr = deleteSupplier($id);
if ($deleteResulr === true) {
echo "<success event=deleteSupplier id=$id>Поставщик $id удален</success>";
}else{
echo "<error event=deleteSupplier id=$id>$deleteResulr</error>";
}
}else{
echo "<error event=deleteSupplier>У вас недостаточно прав</error>";
}
break;
case updateSupplier:
if (accessCheck(updateSupplier)) {
$id = mysql_real_escape_string($value[id]);
$name = mysql_real_escape_string($value[name]);
$fullName = mysql_real_escape_string($value[fullName]);
$phone = mysql_real_escape_string($value[phone]);
$site = mysql_real_escape_string($value[site]);
$email = mysql_real_escape_string($value[email]);
$address = mysql_real_escape_string($value[address]);
$updateResult = updateSupplier($id, $name, $fullName, $phone, $site, $email, $address);
if ($updateResult === true) {
echo "<success event=updateSupplier id=$id>Поставщик $id обновлен</success>";
}else{
echo "<error event=updateSupplier id=$id>$updateResult</error>";
}
}else{
echo "<error event=updateSupplier>У вас недостаточно прав</error>";
}
break;
case createTransaction:
if (accessCheck(createTransaction)) {
$trItems = array();
foreach($value->children() as $TRkey => $TRvalue) {
if ($TRkey == item) {
$trItems[mysql_real_escape_string($TRvalue[id])] = mysql_real_escape_string($TRvalue[count]);
}
}
$createResult = createTransaction($trItems);
$id = mysql_insert_id();
if ($createResult === true) {
echo "<success event=createTransaction id=$id>Транзакция $id проведена</success>";
}else{
echo "<error event=createTransaction id=$id>$createResult</error>";
}
}else{
echo "<error event=createTransaction>У вас недостаточно прав</error>";
}
break;
case deleteTransaction:
if (accessCheck(deleteTransaction)) {
}else{
echo "<error event=deleteTransaction>У вас недостаточно прав</error>";
}
break;
}
}
echo </xml>;
}
function getPostID($id) {
switch ($id) {
case 1: return Администратор;
case 2: return Директор;
case 3: return Завхоз;
case 4: return Продавец;
}
return $id;
}
?>