![](/stc/img/evkova.png)
Разработка Web-сайта с использованием технологии PHP и MS SQL
Содержание:
ВВЕДЕНИЕ
Актуальность темы курсовой работы подтверждает тот факт, что сейчас умение обрабатывать информацию и иметь доступ к ней с любой точки земного шара, с любого устройства является ключевым навыком во всех сферах, не только в сфере информационных технологий. Разрабатывается все больше ПО для сбора, хранения и обработки информации. В том числе довольно новое, но очень популярное направление Big Data, которое применяется во многих отраслях современной инфраструктуры. Язык структурированных запросов (далее SQL – Structured Query Language) предоставляет пользователям очень простой и в то же время очень эффективный способ обработки данных. Помимо этого, SQL широко используется и в прикладном программировании, что дает такую необходимую возможность работать с ним и простым пользователям, не прибегая к сложному синтаксису самого языка.
Зачастую, SQL идет в паре с другими языками программирования для удобной работы с данными, хранящимися в БД. Далее мы рассмотрим особенности и специфику работы PHP в паре с MS SQL. Важно отметить, что PHP был специально сконструирован для веб-разработок и его код может быть внедрен непосредственно в HTML, синтаксис которого мы так же рассмотрим и будем использовать в этой работе.
Предметом исследования курсовой работы является «Разработка Web-сайта с использованием технологии PHP и MS SQL»», объектом – «Программирование на языке высокого уровня».
Целью курсовой работы является изучение возможностей использования PHP в связке с MS SQL даже для домашнего ежедневного использования. Поэтому результатом выполнения работы будет являться готовый web-сайт для домашней библиотеки, с возможностью добавлять/изменять данные, а так же использовать отчеты. Являясь поклонником библиотек, книг и имея в наличии достаточное их количество, полученная в ходе исследоования и разработки БД может быть использована локально.
В рамках выполнения цели, необходимо будет решить следующие задачи:
1) определить основные понятия: база данных, система управления базами данных (далее – СУБД), классификация СУБД, основные возможности языка SQL, описание и принцип работы языков PHP и HTML;
2) выявить преимущества и недостатки реляционной модели данных;
3) рассмотреть синтаксис языка SQL;
4) рассмотреть синтаксис языков PHP и HTML;
5) разработать структуру и подготовить скрипты для создания БД для домашней библиотеки;
6) подготовить файлы с кодом страниц сайта.
Синтаксис скриптов будет использоваться для SSMS.
1 Глава. Аналитическая часть
1.1 Описание предметной области. Постановка задачи
До недавнего времени Excel являлся одним из основных инструментов регистрации, хранения и обработки информации в большинстве компаний, в том числе и у представителей сектора крупного бизнеса. А в сегменте малого и среднего бизнеса Excel могу выступать единственным инструментом для ведения кадровых данных сотрудников, расчета заработной платы, ведения статистики продаж, хранения сведений о клиентах и т.п. На текущий момент прослеживается явная тенденция по переносу вышеперечисленных задач на базы данных (далее – БД) и различное программное обеспечение, в котором используется SQL как основной способ взаимодействия с БД. Почему на сегодняшний день SQL опережает Excel по популярности?
Первым преимуществом SQL безусловно является возможность работы с одной БД одновременно несколькими пользователями, при этом риски «затирания» данных по причине многопользовательского доступа отсутствуют.
Скоростные показатели. Скорость работы Excel существенно снижается при значительном объеме хранящихся в нем данных, а так же при обращении к более сложному функционалу, формам или макросам, оперативность обработки функций так же падает в разы. В случае работы с БД через различные прикладные программы, которые по большей части используют клиент-серверную архитектуру, большинство запросов уже оптимизировано, и конечный пользователь не ощущает потерю скорости.
Удобство и простота использования. Excel – безусловно превосходный инструмент, но для того, чтобы использовать все его возможности, необходимо обладать довольно специфичными знаниями. Этот факт вынуждает конечных пользователей разбираться в различных нюансах и тонкостях работы макросов, зачастую даже проходить отдельное обучение, вместо выполнения целевого действия – работы с данными. Прикладные программы же изначально были созданы для удобства использования конечным пользователем без специализированных технических знаний. Если смотреть с точки зрения рентабельности для компании, использование SQL и БД позволяет значительно сэкономить человеческий ресурс.
Выше были перечислены основные, но конечно же не все преимущества использования прикладных программ вместо известного всем Excel. Безусловно, в ряде случаев использование Excel остается наиболее оптимальным вариантом. И, при необходимости и наличии соответствующих ресурсов, в т.ч. специалистов, Excel может полностью заменить прикладные программы, работающие с БД.
Цель данной курсовой работы – создать удобный инструмент для хранения и использования данных о книгах домашней библиотеки. Для этого нам необходимо выполнить следующие задачи:
- Реализовать интерфейс для ввода данных на входе;
- Создать структуру БД;
- Настроить БД;
- Определить список конечных результатов, получаемых на выходе.
Сама по себе база данных – это упорядоченный набор структурированной информации, хранящейся в компьютерной системе. Обычно, база данных управляется с помощью системы управления базой данных (далее – СУБД). Именно СУБД мы будем применять для решения поставленных задач.
В качестве источника данных могут быть использованы следующие варианты:
- Веб-интерфейс для записи данных в библиотеку;
- Загрузка данных из Excel с помощью СУБД;
- Ручной ввод в БД с помощью скриптов.
Есть и другие способы заполнения БД, но три вышеперечисленных можно считать наиболее подходящими для реализации поставленной задачи. Выполнить загрузку данных из Excel с помощью стандартного функционала СУБД или ввести данные в БД по средствам скриптов большинство пользователей не смогут (на этапе первоначальной загрузки данныз это может сделать администратор), поэтому на практике наиболее удобным способом для постоянного использования и ежедневного обновления информации является веб-интерфейс. К тому же, веб интерфейс позволяет иметь доступ к данным с различных устройств и из разных точек мира. Реализация такого web-интерфейса возможна разными способами, но в нашем случае я остановилась на двух основных языках: HTML (HyperText Markup Language – язык гипертекстовой разметки) и PHP. Так же будут использованы некоторые опции CSS (Cascading Style Sheets – каскадная таблица стилей).
Так же в веб-интерфейсе можно настроить различные отчеты, необходимые конечному пользователю.
Выбрав способ ввода данных, нужно определить потребности конечного пользователя: какие выборки и отчеты могут понадобиться?
Определим основные характеристики, которые опишем для каждой книги:
- Автор;
- Название;
- Жанр и поджанр;
- Язык, на котором написана книга;
- Основной цвет обложки;
- Факт прочтения.
То есть в качестве результата конечный пользователь получит отчет, отфильтрованный по одному или нескольким характеристикам. Стандартным отчетом будет выборка книг библиотеки, которые еще не были прочитаны.
Так как предполагается систематизация данных именно домашней библиотеки, в данном случае предполагается однопользовательский режим, поэтому мы не будем создавать многопользовательскую версию БД. Все действия будут выполняться единственным пользователем, он же выступит администратором БД.
Целью курсовой работы является создание удобного инструмента для ведения базы данных домашней бибилиотеки с возможностью выгружать необходимые отчеты из БД.
1.2.Выбор средств / методологии проектирования. Выбор СУБД
Система управления базами данных – это комплекс программных средств и инструментов, которые требуются для создания структуры новой БД, а также ее наполнения, редактирования и отображения информации. Существуют различные варианты классификации СУБД: по модели данных, по организации данных или по способу доступа к данным (Рисунок 1).
Рисунок 1 – Классификация СУБД
Если брать за основу классификацию СУБД в соответствии с моделью данных, можно выделить 5 типов СУБД:
- Иерархическая модель данных (Рисунок 2) представляет собой «дерево», где элементы данных располагаются в порядке подчинения. В данной модели каждый узел более низкого уровня может быть связан только с одним узлом более высокого уровня; корневой узел должен быть только один и не может подчиняться никакому другому узлу; до каждого узла может существовать только один путь от корневого.
Рисунок 2 – Иерархическая модель данных
Практическим примером иерархической модели данных может служить структура населенных пунктов планеты Земля. Корневым узлом будет выступать непосредственно планета Земля, далее будут располагаться континенты (Евразия, Австралия, Африка и т.д.), далее страны (Китай, Россия, Англия и т.д.), после области/округа и, наконец, города (Москва, Лондон, Париж и т.д.).
- Сетевая модель данных (Рисунок 3) внешне похожа на ранее рассмотренную иерархическую модель, но есть существенное отличие: в сетевой модели любой узел может быть связан с любым узлом.
Рисунок 3 – Сетевая модель данных
В качестве наглядного практического примера сетевой модели данных можно рассмотреть список учеников учебного заведения, посещающих дополнительные занятия. Изначально наблюдаем идентичность с иерархичной структурой: на первом уровне будет находиться само учебное заведение (школа), на втором уровне – классы. А вот далее на третьем – ученики и на четвертом – дополнительные занятия. На последних двух уровнях мы наблюдаем именно сетевую модель данных, так как ученики разных классов могут посещать одни и те же секции, при этом каждый ученик может посещать не один, а нескольких кружков. Также можно предположить, что каждое дополнительное занятие проводит один из учителей, выступающих куратором одного из классов, поэтому мы можем наблюдать связь второго и четвертого уровней в моделе.
- Реляционная модель данных (Рисунок 4) представляет собой двумерные таблицы, каждая из которых в свою очередь является двумерным массивом. Эти таблицы должны соответствовать определенным правилам: каждый из столбцов таблицы однородный по типу данных; каждый столбец имеет уникальное имя для этой таблицы; порядок строк и столбцов в таблице произвольный; каждая строка имеет уникальный идентификатор для этой таблицы.
Рисунок 4 – Реляционная модель данных
Область применения реляционных таблиц очень широка. С помощью реляционной модели данных можно представить список сотрудников на предприятии (Рисунок 5).
Набор таблиц и полей в подобной БД может варьироваться в зависимости от области применения и необходимости предприятия.
Рисунок 5 – Пример реляционной модели данных
- Объектно-ориентированная модель данных– это БД, в которой данные формируются в виде объектов, атрибутов, методов и классов этих объектов. При этом каждый объект имеет свой уникальный идентификатор. Объект имеет характеристики состояния и поведения. Состояние объекта характеризуется набором его атрибутов. Поведением объекта называется набор методов, управляющих его состоянием. Множество объектов с одинаковыми атрибутами и методами объединяются в классы. Класс имеет свойство наследование – то есть возможность создания нового класса на основе уже существующего. При этом вновь созданный класс (подкласс) наследует все свойства родительского класса (суперкласс), но в дополнение приобретает свои атрибуты и методы. Чаще всего в прикладном программировании используются именно эта модель данных, так как на программном уровне с ней проще всего взаимодействовать. Рассмотрим ту же БД для предприятия «Фирма», но уже в объектно-ориентированной модели (Рисунок 6).
Рисунок 6 – Пример объектно-ориентированной БД
- Объектно-реляционная модель данных (Рисунок 7) совмещает в себе объектно-ориентированную модель по качеству хранящихся данных и реляционный подход к структуре хранения.
Рисунок 7 – Объектно-реляционная модель данных
Далее рассмотрим классификацию СУБД по организации данных. В такой классификации выделяют два типа СУБД.
- Локальная – БД называется локальной, если все ее части находятся на одном компьютере. Преимущество такой модели в ее независимости от сетевых процессов, т.к. все операции управления производятся на одном ПК. Но главный недостаток очевиден – редактирование БД происходит независимо на каждом ПК и, в случае работы в ней нескольких пользователей, сложно собрать и актуализировать все БД.
- Распределенная – БД называется распределенной, если ее части размещаются на двух или более устройствах. Это наиболее удобный вариант БД для многопользовательских систем. Так же, к плюсам подобного устройства БД можно отнести то, что части БД могут храниться на устройствах различного вида и с разными ОС.
По способу доступа к данным мы выделяем три основных вида организации СУБД.
- Файл-серверная архитектура – специфика данной архитектуры заключается в том, что пользователю передаются файлы из БД, но обрабатываются они уже на ПК пользователя. Из минусов такой системы сразу можно отметить, что на сеть дается дополнительная нагрузка в связи с излишними данными, передаваемыми пользователю, что негативно сказывается в случае большого объема объектов, хранящихся на сервере. Однако, эта структура отличается своей простотой, поэтому ее все еще можно встретить на некоторых небольших предприятиях.
- Клиент-серверная архитектура позволяет избежать тех проблем, которые преподносит файл-серверная архитектура. В подобной СУБД большая часть обработки данных происходит на машине сервера, а значит машина пользователя получает уже нужное количество данных, что позволяет снизить нагрузку на сеть, в отличие от предыдущего вида СУБД.
- Встраиваемая архитектура удобна, если БД используется только на одной машине. В этом случае СУБД встроена (тесно связана) с прикладной программой, обращающейся к ней. При этом сама БД находится на той же машине. Конечно, подобная структура не подойдет для средних или крупных предприятий, где администрирование производится несколькими людьми.
SQL (Structure Query Language) является языком программирования, который применяется для организации взаимодействия пользователя с реляционной базой данных. SQL работает по следующей схеме: запрос, написанный программистом на языке SQL обращается к некой СУБД, которая в свою очередь извлекает необходимую информацию из БД.
Рисунок 8 – Схема работы SQL
Несмотря на довольно простой принцип действия, сейчас можно говорить, что SQL предназначен не только для выборки данных, хотя это и является его основной функцией, но этот язык предлагает пользователю гораздо больше возможностей:
- Структура и организация запрашиваемых данных;
- Выборка данных;
- Обработка данных (добавление, изменение, удаление);
- Управление доступом к данным;
- Организация совместного использования БД;
- Обеспечение целостности данных.
Все эти возможности реализуются с помощью операторов SQL, либо встроенных функций СУБД. Рассмотрим основные операторы языка SQL.
Для удобства дальнейшей работы предлагаю воспользоваться примером БД, структура которой представлена в Приложении 1.
Запросы в языке SQL имеют примерно одинаковую структуру:
Рисунок 9 - Структура SQL запросов
Конечно, чем сложнее выборка данных, тем сложнее структура, больше подзапросов и массивнее объем обрабатываемых данных. Так же могут добавляться блоки условий и группировки данных, но основная структура практически всегда сохраняется в представленном виде.
Итак, все запросы на выборку данных в языке SQL начинаются с оператора SELECT. Следом за ним можно встретить следующие варианты:
- «TOP(n)» – где n – это количество строк. С помощью этого оператора мы можем вывести фиксированное количество строк. Используется совместно с перечнем столбцов.
- «pid, name, last_name» – перечень названий столбцов (через запятую), которые необходимо вывести в итоговой таблице.
- «*» - оператор, обозначающий все столбцы. Может использоваться как совместно с перечнем столбцов, так и индивидуально.
Далее, после определения набора столбцов следует оператор FROM. Здесь описываются таблицы, из которых необходимо получить данные. Чаще всего здесь используются операторы INNER/LEFT/RIGHT/FULL JOIN для объединения нескольких таблиц.
В случае необходимости, добавляется оператор условия WHERE, либо, если используются агрегирующие функции, HAVING. Здесь мы можем «отфильтровать» данные по нужным нам параметрам.
И заключительные операторы GROUP BY и ORDER BY. GROUP BY позволяет объединить строки с одинаковыми значениями в определенных столбцах (при этом, должны быть выбраны все столбцы, которые перечислены в операторе SELECT). Оператор ORDER BY позволяет сортировать данные в итоговой таблице, используется совместно с asc – по возрастанию, или desc – по убыванию.
Например, нам нужно из нашей БД выбрать фамилию, имя, город (в котором находится офис сотрудника) и должность сотрудников, с годом рождения с 1990 по 2000 включительно. Запрос будет выглядеть следующим образом:
Рисунок 10 - Пример запроса
Далее разберем операторы, позволяющие управлять данными в БД.
INSERT |
позволяет добавить одну или несколько строк с данными в существующую таблицу. |
DELETE |
позволяет удалить одну или несколько строк из существующей таблицы в БД. |
CREATE |
позволяет создать элемент БД (таблицу, хранимую процедуру, функцию). |
DROP |
позволяет удалить элемент БД (таблицу, хранимую процедуру, функцию). |
UPDATE |
позволяет изменить уже существующие данные в существующей таблице. |
Примеры использования:
Рисунок 11 - Примеры использования операторов
В данных примерах рассмотрены самые простые запросы, которые можно построить с помощью языка SQL. Но в жизни запросы гораздо сложнее и затрагивают большее количество данных. Данные могут не только выводиться при определенных условиях, но могут подвергаться более глубокому анализу. Поэтому SQL завоевал большое количество пользователей.
В рамках данной курсовой работы мы будем использовать MS SQL для проектирования БД домашней библиотеки. Учитывая структуру будущей БД, будет логичным выбором использование объектно-реляционной структуры БД.
1.3. Проектирование и создание базы данных
Ранее мы уже определили основные характеристики, или атрибуты, которыми должна обладать книга. Для удобства использования и экономии места в БД мы будем использовать реляционную модель, которая позволит избежать дублирующих значений.
Прежде чем приступить непосредственно к созданию БД, нужно продумать архитектуру будущей базы. Структурировать таблицы и данные.
Преследуя финальную цель – иметь удобную и понятную БД для домашней библиотеки – необходимо создать таблицу, в которой мы будем хранить данные о книгах – books (Рисунок 12).
Рисунок 12 – Таблица books
В качестве столбцов таблицы мы добавляем:
- Id – уникальный идентификатор книги, внешний ключ;
- Name – название книги, тип данных varchar;
- Auth – информация об авторе, ссылка на таблицу со списком авторов;
- Genre – жанр книги, ссылка на таблицу со списком жанров;
- Subgenre – поджанр книги, ссылка на таблицу со списком поджанров;
- Lang – язык, на которой написана книга, ссылка на таблицу со списком языков;
- Color – цвет обложки книги, ссылка на таблицу со списком цветов;
- Pos – расположение книги, ссылка на таблицу со списком шкафов и полок;
- Read – была книга прочитана или нет;
- Comment – поле для комментария.
Теперь создаем таблицу с авторами – authors (Рисунок 13).
Рисунок 13 – Таблица authors
- Id – уникальный идентификатор автора, внешний ключ;
- Last_name – фамилия автора;
- Name – имя автора;
- F_name – отчество автора (если имеется);
- Birthday – дата рождения автора;
- D_day – дата смерти (если имеется);
- S_bio – краткая биография;
- Native – родной язык автора.
Таблица со списком жанров и поджанров – genres (Рисунок 14).
Рисунок 14 – Таблица genres
- Id – уникальный идентификатор жанра/поджанра, внешний ключ;
- Name – название жанра/поджанра;
- Type – разделение на жанр/поджанр;
- Parent_id – ссылка на родительский жанр у поджанров.
Таблица с перечнем языков – languages (Рисунок 15).
Рисунок 15 – Таблица languages
- Id – уникальный идентификатор языка, внешний ключ;
- Name – название языка на этом языке;
- Name_en – название языка на английском.
Таблица с цветами – colors (Рисунок 16).
Рисунок 16 – Таблица colors
- Id – уникальный идентификатор цвета, внешний ключ;
- Name – название цвета.
Таблица с определением места книги – position (Рисунок 17).
Рисунок 17 – таблица position
- Id – уникальный идентификатор позиции, внешний ключ;
- Cabinet – id шкафа;
- Shelf – id полки
Таблица со всеми шкафами и полками – storage (Рисунок 18).
Рисунок 18 – таблица storage
- Id – уникальный идентификатор шкафа/полки, внешний ключ;
- Type – разделение на шкафы и полки;
- Parent_id – ссылка на родительский шкаф у полок;
- Desk – описание (местонахождение шкафа и тд).
Полная структура БД представлена в Приложении 2.
Далее создаем все таблицы, описанные выше, и устанавливаем связи. Проверяем схему получившейся БД. Скрипты создания таблиц и создания связей, а так же схема БД приведены в Приложении 3.
1.4. Подготовка для работы с языком PHP
Область применения PHP очень широка, но в основном PHP используется для написания сценариев, работающих на стороне сервера. С помощью PHP можно производить различные операции с содержимым html-файлов, устанавливать cookie, управлять аутентификацией, форматировать HTTP-заголовки и т.п. PHP предоставляет возможности доступа к БД, позволяет проводить интеграцию с самыми разными внешними библиотеками. Таким образом, PHP в руках хорошего специалиста позволит удовлетворить практически любое пожелание конечного пользователя.
Основные преимущества PHP:
- Поддерживает работу с большинством СУБД
- Работает на разных платформах
- Поддерживает различные веб-серверы
- Код считывается и выполняется на стороне сервера
- Является одним из наиболее простых для освоения
- Предоставляет открытый исходный код
В результате, выбирая PHP в качестве языка программирования, мы получим отличные возможности использования языка, свободу в выборе операционной системы и веб-сервера. А также мы имеем возможность выбора между объектно-ориентированным программированием (ООП) и процедурным или же их сочетания.
PHP – это веб-ориентированный язык, т.е. язык, предназначенный для использования в интернете, а значит отлично подходящий создания сайтов. Важным достоинством PHP является тот факт, что его можно сочетать с HTML-кодом, а это значит php-код легко внедряется непосредственно в HTML-теги и наоборот HTML-теги можно внедрить в код PHP.
Скрипты необходимо начинать с тегов <?php и заканчивать ?>, можно пользоваться и сокращенной формой <? И ?>. Скрипты, написанные на PHP, выполняются на сервере, а результат в виде HTML-кода отправляется обратно в браузер.
Все, что написано внутри тегов будет считываться как код, все, что находится за пределами тегов будет считаться обычным HTML. Код можно разместить в любом месте документа.
<?php
//PHP код будет здесь
?>
Любой файл, содержащий php-код, должен иметь расширение «.php».
Еще одной особенностью PHP является возможность оставлять комментарии. Комментарии дают возможность пояснить написанный код и никак не влияют на исполнение скрипта. Есть несколько методов дать комментарии: для однострочного комментария можно использовать «//», блок комментариев пишется внутри «/ * … * /». Например,
<?php
// комментарий
/*
блок
комментариев
*/
?>
В PHP используются переменные – это некие контейнеры, в которых хранится информация. Переменные в зависимости от типа могут содержать текстовые значения, числа, массивы или значение другой переменной.
Имя переменной должно состоять из букв латинского алфавита, также оно может содержать цифры и символ нижнего подчеркивания. Важно помнить, что цифры могут содержаться в имени переменной, но не первым символом. Перед именем переменных ставится $. Например:
$name
$user_name
$name11
$name_11
$myname
$Myname
Переменные $Myname и $myname – это разные переменные, то есть PHP учитывает регистр.
Для того чтобы присвоить переменной определенное значение нужно использовать оператор присваивания =. Пример:
$name = «Анастасия»;
$age = 26;
В PHP как и в других языках программирования, есть операторы, то есть наборы символов, выполняющих операции в коде. Например, чтобы присвоить значение переменной, используется оператор присваивания =. Именно оператор определяет действия, которые необходимо выполнить.
Существуют арифметические (Рисунок 19), строковые (Рисунок 20), логические операторы (Рисунок 21), операторы присваивания (Рисунок 22), сравнения (Рисунок 23), инкремента и декремента (Рисунок 24), оператор вывода, условные операторы и оператор switch.
Рисунок 19 – Арифметические операторы
Рисунок 20 – Строковые операторы
Рисунок 21 – Логические операторы
Рисунок 22 – Операторы присваивания
Рисунок 23 – Операторы сравнения
Рисунок 24 – Операторы инкремента и декремента
Чтобы вывести что-то на экран необходимо использовать оператор вывода echo. Например, выведем на экран значения переменных:
<?php
$name = "Анастасия";
$age = 26;
$city = "Самара";
echo $name;
echo "<br>";
echo $age;
echo "<br>";
echo $city;
echo "<br>";
echo "Меня зовут ".$name.", мне ".$age." лет, я живу в городе ".$city.".";
?>
После выполнения скрипта, в браузере появится следующий результат:
Анастасия
26
Самара
Меня зовут Анастасия, мне 26 лет, я живу в городе Самара.
Условные операторы – это набор команд, которые используются для выполнения определенных действий, прописанных в коде, в случае выполнения/невыполнения заданных условий.
if (выражение) блок_выполнения
else блок_выполнения1
Конструкция if...else читается следующим образом: если выполнено условие (т.е. выражение = true), то выполнить действия из блока_выполнения, иначе (т.е. выражение = false) – действия из блока_выполнения1. Использование оператора else не обязательно. Пример:
<?
$names = array("Иван","Петр","Семен");
if ($names[0]=="Иван") {
echo "Привет, Ваня!";
$num = 1;
$account = 2000;
} else {
echo "Привет, ".$names[0].
" А мы ждали Ваню :(";
}
if ($num) echo "Иван первый в списке!";
else echo "Иван НЕ первый в списке?!";
$bax = 30;
if ($account > 100*$bax+3)
echo "Эта строка не появится на экране,
так как условие не выполнено";
else echo "Зато появится эта строка!";
?>
Switch – это еще одна конструкция, позволяющая проверять истинность выражения и в зависимости от этого выполнять различные действия. Можно перевести название, отражающее суть данного оператора, как "переключатель". Switch очень похож на набор операторов if: в зависимости от значения переменной, он переключается между различными блоками выполнения. Структура switch показана ниже:
switch (выражение или переменная){
case значение1:
блок_действий1
break;
case значение2:
блок_действий2
break;
...
default:
блок_действий_по_умолчанию
}
Существует восемь простых типов данных, поддерживаемых PHP.
Скалярные типы:
- boolean (логический);
- integer (целый);
- float (с плавающей точкой);
- string (строковый).
Смешанные типы:
- array (массив);
- object (объект).
Специальные типы:
- resource (ресурс);
- NULL.
В отличие от других языков программирования, в PHP не принято открытое объявление типа переменной. Тип присваивает интерпретатор во время исполнения кода в зависимости от контекста, в котором используется переменная.
В PHP существуют конструкции, позволяющие выполнять повторяющиеся действия - циклы.
Простой цикл while выполняет код, пока выражение определяется как True. Значение выражения проверяется каждый раз перед выполнением цикла.
<?
//эта программа напечатает все четные цифры
$i = 1;
while ($i < 10) {
if ($i % 2 == 0) print $i;
// печатаем цифру, если она четная
$i++;
// и увеличиваем $i на единицу
}
?>
Цикл do..while схож с циклом while, но истинность выражения проверяется в конце, а не в начале цикла. За счет этого код внутри цикла будет выполнен не менее одного раза.
Структура:
do {блок_выполнения} while (выражение);
<?
// эта программа напечатает число 12, несмотря на то
// что условие цикла не выполнено
$i = 12;
do{
if ($i % 2 == 0) print $i;
// если число четное, то печатаем его
$i++;
// увеличиваем число на единицу
}while ($i<10)
?>
Функция форматного вывода printf() производит форматирование и выводит результаты в браузер или консоль.
<?php
$day = 2;
$month = 3;
$year = 2003;
printf("%02d/%02d/%04d", $day, $month, $year);
?>
Большое внимание стоит уделять проверке корректности данных, вводимых пользователем, так как необработанные ошибки, возникающие при вводе неверных данных, приводят к сбою в работе самого скрипта. Например, при создании формы для отправки письма, в случае если электронный адрес получателя будет вводить пользователь, важно сделать как минимум две вещи:
1. Проверить, что поле, в которое вносится адрес электронной почты, непустое;
2. С помощью регулярного выражения проверить соответствие введенного адреса.
Кроме пользовательских ошибок, следует также предусмотреть ситуации умышленного введения некорректных данных, например, скриптов. Для этого, прежде чем отправлять переменную на сервер, вводимый текст необходимо обработать функциями удаления HTML-тегов и обратных слешей. Получается, что минимальная обработка заключается в следующем:
- проверка на непустую строку
- проверка соответствию шаблону
- обработка строки функцией htmlspecialchars для удаления HTML-тегов
- обработка строки функцией stripslashes для удаления обратных слешей.
Передача переменных в PHP.
PHP предоставляет нам возможность передавать данные из одной формы в другую, что позволяет нам создавать сложные структуры сайтов и обработки информации. Мы различаем два способа передачи переменных: GET и POST. При использовании любого из этих способов, важно сначала запустить сессию (session_start()). Рассмотрим эти способы подробнее.
Передача переменных при помощи метода GET. Данный метод передачи переменных применяется в PHP для передачи переменных в следующий php файл при помощи адресной строки. То есть переменные передаются сразу через адресную строку браузера.
Передача переменных в PHP при помощи метода POST. Данный способ позволяет скрыто передавать переменные с одного файла в другой. Обычно для этих целей используются два файла. В первом находится форма для ввода исходных данных, а во втором исполнительный файл, который принимает переменные.
Основные функции для работы с БД MS SQL.
sqlsrv_connect() – используется для подключения к MS SQL Server. По умолчанию используется Windows-аутентификация. Имеет два параметра: название сервера и строка для подключения. Пример:
$serverName = "localhost";
$connectionInfo = array( "Database"=>"library", "UID"=>"adm", "PWD"=>"adm","CharacterSet" => "UTF-8");
@$on_link = sqlsrv_connect( $serverName, $connectionInfo);
sqlsrv_query() – используется для формирования запроса на сервер. Имеет два обязательных параметра: используемое соединение (результат функции sqlsrv_connect()) и строка запроса. Так же могут быть использованы другие параметры: список параметров для передачи в запрос и доп. опции. Пример использования:
$sql = "SELECT id, last_name+', '+name as name from [library].[dbo].[authors] order by name";
$result_select = sqlsrv_query(@$on_link, $sql);
sqlsrv_fetch_array() – используется для обработки получаемой строки, возвращает строку с данными как массив. Имеет один обязательный параметр - источних данных (например, результат функции sqlsrv_query). Так же присутствуют дополнительные параметры: тип массива (по умолчанию принимает значение SQLSRV_FETCH_BOTH), порядок обработки строк (по умолчанию SQLSRV_SCROLL_RELATIVE) и ссылка на индекс строки при использовании определенных значений в предыдущем параметре. Например:
while ($row = sqlsrv_fetch_array($result_select, SQLSRV_FETCH_ASSOC)) {
echo $row['id'] .", ".$row['name']; };
sqlsrv_fetch_object() – используется для возвращения строки данных в качестве объекта. Имеет один обязательный параметр - источних данных (например, результат функции sqlsrv_query). Так же имеет три дополнительных параметра. В моей работе данные параметры не пригодились. Пример использования:
while( $obj = sqlsrv_fetch_object($result_select)) {
echo $obj-> id.", ".$obj-> name."<br />"
sqlsrv_errors() – возвращает последнюю возникшую ошибку операции группы функций sqlsrv. Больше используется на этапе разработки, отладки или тестирования.
ПРОЕКТИРОВАНИЕ WEB-САЙТА ДЛЯ ДОМАШНЕЙ БИБЛИОТЕКИ
Начальные настройки php и запуск локального сервера.
На самом деле, подружить php и MS SQL не так то просто. Для начала необходимо установить сам php. Я воспользовалась свободным приложением от Microsoft - Web Platform Installer. Его я скачала с сайта Microsoft. После установки php согласно инструкции, необходимо дополнительно установить библиотеку для работы php с MS SQL. Но сначала нужно опредилить, какая версия библиотеки должна быть установлена. Для этого я воспользовалась так же справкой Microsoft к устанавливаемой библиотеке (Рисунок 25).
Рисунок 25 - Справка Microsoft
У меня установлен PHP Version 7.4.1, соответствено мне необходима версия 4.0. Установила библиотеки в нужную директорию. Далее переходим в файл php.ini для добавления этих библиотек. Сразу включаем воспроизведение ошибок и логирование с помощью строчек:
display_errors = On
display_startup_errors = On
log_errors = On
Раскомментируем строчку:
extension_dir="C:\Program Files\iis express\PHP\v7.4\ext\"
И добавляем строчки с путями до файлов с библиотеками:
extension=php_pdo_sqlsrv_74_nts.dll
extension=php_pdo_sqlsrv_74_ts.dll
extension=php_sqlsrv_74_nts.dll
extension=php_sqlsrv_74_ts.dll
Теперь php готов к работе с MS SQL. Но, так как php является серверным языком, то прежде чем начать создание сайта, необходимо настроить локальный сервер на машине, на которой будет запускаться сайт (любой ПК, физический или виртуальный сервер). Для этого воспользуемся стандартными средствами, предоставляемыми Microsoft, а именно Диспетчер служб IIS. При необходимости устанавливаем ПО и начинаем настройку Пула приложений. Задаем имя новуму пулу и выбираем среду, в которой он будет работать. В нашем случае подойдет стандартная среда .Net v4.03.30319 (Рисунок 26).
Рисунок 26 – создание пула приложений
Далее переходим к созданию сайта. Вносим название сайта, выбираем созданный нами пул приложений, указываем физический путь (корневая папка будущего сайта), и прописываем незанятый порт для подключения (Рисунок 27). Так как сайт будет внутренним, для личного использования, то оставляю протокол http.
Рисунок 27 – окно добавления сайта
Теперь мы можем приступить к созданию самого сайта. Для начала нужно определиться с разметкой сайта. Я выбрала табличную форму, как наиболее простую и универсальную. Таблица на страницах будет стандартно состоять из всего одной колонки и двух строк. В верхней строке всегда будет располагаться «шапка» сайта со ссылкой для перехода на стартовую страницу. Вторая строка является основным информативным полем. Так, на стартовой странице во второй строке содержатся два раскрывающихся блока – Администрирование и Отчеты (Рисунок 28).
Рисунок 28 – Внешний вид домашней страницы
Так же, для единообразия стиля создаем .css файл для описания стилей. С помощью CSS прописываем стандартный стиль элементов сайта. Там же описываем класс для раскрывающихся блоков. Файл .css имеется в Приложении 4, вместе с остальным проектом.
Для создания новых записей или редактирования существующих нужно использовать раздел «Администрирование». При нажатии на заголовок раскрываются доступные опции (Рисунок 29).
Рисунок 29 – Раздел «Администрирование»
Разберем пример добавления автора. При клике на соответствующую кнопку «Добавить автора» раскрывается форма для ввода данных на отдельной странице (Рисунок 22). Форма организована с помощью HTML тега <form>, метод GET позволяет передать данные из формы в соответствующие переменные и с помощью PHP (драйвер SQL для PHP, семейство функций sqlsrv) записать эти данные в БД. В случае наличия связей между таблицами реализованы выпадающие списки с возможными вариантами (Рисунок 30).
Рисунок 30 – Форма добавления нового автора.
После ввода данных идет обработка данных с помощью вспомогательной страницы, которая не отображается пользователю, а переадресовывает сразу на стартовую страницу. Попробуем создать нового автора. На данный момент в БД записаны некоторые данные (Рисунок 31).
Рисунок 31 – Данные в таблице authors
Попробуем добавить нового автора – Наталью Мазуркевич. Вводим все известные данные о ней (Рисунок 32).
Рисунок 32 – Заполненная форма
Нажимаем кнопку «Добавить». Мы вновь оказываемся на стартовой странице. Проверяем в БД, что информация успешно записана (Рисунок 33).
Рисунок 33 – Данные в БД после добавления нового автора через сайт
Добавление новой книги организовано слегка сложнее. Ввод данных идет поэтапно, с помощью нескольких страниц. Это связано с тем, что существуют зависимые списки (жанр и поджанр, полки и шкафы), которые возможно реализовать только посредством javascript, что усложнит процесс разработки сайта и сделает его экономически менее выгодным по затраченному времени.
Аналогичным образом можно изменить или добавить любые записи в БД, предусмотрено редактирование всех данных через интерфейс по аналогичной схеме. Запись новых данных происходит с помощью php-запроса:
$sql="insert into books ( name, auth) values('".$_SESSION['bookname']."', ".$_SESSION['auth_id'].")";
$result=sqlsrv_query($on_link, $sql);
Аналогично происходит обновление данных:
$sql="update books set [comment]=(select case when '".$_SESSION['comment']."'<>'' then '".$_SESSION['comment']."' else(select [comment] from books where id=".$_SESSION['book_id'].") end) where id=".$_SESSION['book_id'];
$result=sqlsrv_query($on_link, $sql);
Разработка интерфейса и реализация проекта
Какие же отчеты могут понадобиться пользователю? Конечно же выгрузка со всеми книгами в библиотеке и с указанием всех их характеристик. Далее, задаваясь вопросом, что бы почитать, можно пользоваться отдельной выгрузкой с непрочитанными книгами. И, чтобы порекомендовать книги друзьям, можно получить выгрузку с уже прочитанными книгами. И последний отчет – пользовательский, где пользователь сам отмечает какую информацию из таблиц он желает получить. Список отчетов так же находится на стартовой странице и разворачивается нажатием на заголовок (Рисунок 34).
Рисунок 34 – Список доступных отчетов
Выгрузка отчетов реализована с помощью построчной обработки данных php:
while ($row = sqlsrv_fetch_array($result_select, SQLSRV_FETCH_ASSOC)) {
fputcsv($fp, array_values($row));
}
Данные преобразуются в CSV с помощью соответствующих заголовков и скачиваются на ПК пользователя. Для каждого отчета прописан свой отдельный SELECT, который предоставляет возможность получать необходимый набор данных. Структура стандартных отчетов приведена ниже на рисунках 35-37.
Рисунок 35 - Структура отчета "Все книги"
Рисунок 36 - Структура отчета "Непрочитанные книги"
Рисунок 37 - Структура отчета "Прочитанные книги"
На странице пользовательского отчета необходимо отметить чекбоксы полей, которые необходимо включить в отчет (Рисунок 38). После этого, с помощью языка php идет объединение этих чекбоксов в запрос к базе, в результате которого выгружается отчет. Данный отчет являлся самым сложным в реализации, так как необходимо обработать большое количество условий.
Рисунок 38 - Страница пользовательского отчета
1.5 Оценка экономической эффективности проекта
Для определения целесообразности реализуемого проекта необходимо рассмотреть затраты времени на создание БД и сайта и сопоставить их со временем, которое этот проект позволяет сэкономить. Ниже приведена таблица затрат времени.
№ |
Действие |
Затраты |
1 |
Установка и настройка MS SQL Server и сопутствующих приложений |
3 часа |
2 |
Создание базы данных, создание таблиц и связей |
1,5 часа |
3 |
Отрисовка графики (лого сайта) |
1 час |
4 |
Настройки php и драйверов для SQL |
2 часа |
5 |
Создание сайта |
5 часов |
6 |
Заполнение сайта исходными данными |
1,5 часа |
Получается, что всего на настройку сайта потребовалось 14 часов. В среднем, мне необходимо найти 3-4 книги в месяц, а так же просто просмотреть книги 5-7 раз в месяц. На поиск книги я трачу 5 минут, на просмотр всех книг 10-15 минут. Т.е. 4*5+7*15=125 минут в месяц. Сейчас же, чтобы найти книгу мне понадобится 1 минута, и 3 минуты на просмотр всех книг. 4*1+7*3=25. Значит в среднем я экономлю около 100 минут в месяц. За год я сэкономлю 1200 минут, а это 20 часов, что уже превышает время, потраченное мной на разработку БД и сайта.
ЗАКЛЮЧЕНИЕ
В рамках курсовой работы была изучена теория, определены основные понятия и технологии распределенной обработки данных и Web программирования. Был проведен анализ основных моделей БД, в результате которого была выбрана реляционная модель построения баз данных для дальнейшего использования. В качестве основных языков Web программирования были выбраны языки HTML и PHP
Так же были рассмотрены особенности построения языка структурированных запросов SQL, который является информационно-логическим языком, предназначенным для описания, изменения и извлечения данных, хранимых в реляционных базах данных. А так же особенности и основные операторы языка PHP – языка программирования высокого уровня, исполняемого на серверной части.
Так же был рассмотрен практический пример использования PHP совместно с MS SQL на основании разработки веб – сайта. В ходе работы была спроектирована и создана БД на сервере MS SQL Server, подготовлена площадка для запуска php, разработан интерфейс и созданы страницы сайта.
В процессе выполнения курсовой работы решены следующие задачи:
- раскрыты сущность понятий база данных, системы управления базами данных путем изучения классификации баз данных и СУБД;
- был описан прицип работы и основные операторы языка PHP;
- проведен сравнительный анализ разных видов СУБД;
- рассмотрен основной синтаксис языка SQL;
- разработана и реализована база данных;
- Подготовлены и протестированы все страницы сайта и скрипты.
Учитывая, что все поставленные задачи курсовой работы решены, можно утверждать, что цель курсовой работы достигнута.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
- Новиков Б., Домбровская Г. Настройка приложений баз данных. – BHV, 2011. – С.22
- Боуман Дж.С., Эмерсон С.Л., Дарновски М. Практическое руководство по SQL. – Вильямс, 2011. – С.56-90
- Матросов А.В., Сергеев А.О., Чаунин М.П. HTML 4.0. – СПб.: БХВ-Петербург, 2011. – 672 с.:
- Дейт К. Введение в системы баз данных, 8-е издание. – Вильямс, 2006. – С.725
- Дейт К. SQL и реляционная теория. Как грамотно писать код на SQL. – Символ-Плюс, 2010. – С.123
- 102Дунаев В.В. Базы данных. Язык SQL. – СПб. : БХВ-Петербург, 2010. – С.88
- Дейт К., Дарвен Х. Основы будущих систем баз данных. Третий манифест. – Янус-К, 2011. – С. 196
- Дж. Кастаньетто, Х.Рават, С.Шуман, К.Сколло, Д.Велиаф «Профессиональное РНР программирование». – Пер. с англ. – СПб: Символ-Плюс, 2010. – С.76
- Иванова Г.С. – «Основы программирования» Учебник для вузов. – М.: Изд-во МГТУ им. Н.Э. Баумана, 2010. – С.156
- Кренке Д. Теория и практика построения баз данных. – Питер, 2010. – С.206
- Мирошниченко Г. Реляционные базы данных. Практические приемы оптимальных решений. – СПб. : БХВ-Петербург, 2011. – С.199
- Астахова И.Ф., Толстобров А.П., Мельников В.М. SQL в примерах и задачах. – Мн.: Новое знание, 2011. – С.4
- Гончаров А. Самоучитель HTML. – СПб.: Питер, 2008. – 240 с.:
- Тоу Д. Настройка SQL. Для профессионалов. – Питер, 2011. – С.103
- Гарсиа-Молина Г., Ульман Дж., Уидом Дж. Системы баз данных. Полный курс. - Вильямс, 2010. – С.125
- MySQL. Библиотека профессионала – Киев: Диалектика, 2012 – С.170-179
- PHP/MySQL для начинающих – Кудиц-образ, 2010 – С.44-108
- Шкарина Л. Язык SQL: учебный курс. – СПб.: Питер, 2001 – С.23-96
- https://www.php.net/ - Инструкциb по установке, настройке и использовании php.
- https://www.microsoft.com/ - Инструкции по работе с приложениями от Microsoft
- https://www.php.net/manual/ru/funcref.php - Справочник функций, PHP
- http://htmlbook.ru/ - Справочник по HTML и CSS
- https://ru.wikipedia.org/wiki/База_данных – открытая библиотека Wikipedia, статья «Базы данных»
- https://www.oracle.com/ru/ - официальный сайт Oracle в России, статьи по БД и СУБД.
- https://site-do.ru/ - открытые уроки по SQL, БД и PHP
ПРИЛОЖЕНИЕ 1 – Структура тестовой БД.
pid |
name |
last_name |
birthday |
address |
1 |
Александр |
Иванов |
01.06.1995 |
Москва |
2 |
Светлана |
Сидорова |
20.02.1976 |
Самара |
3 |
Мария |
Крайнова |
30.04.1992 |
Оренбург |
4 |
Алиса |
Селезнева |
01.05.2001 |
Киев |
5 |
Игорь |
Верник |
05.06.1989 |
Минск |
6 |
Алексей |
Сидоров |
04.03.1996 |
Оренбург |
7 |
Илья |
Горный |
02.01.2002 |
Екатеринбург |
8 |
Марина |
Клюкова |
05.02.1998 |
Тамбов |
9 |
Светлана |
Смелая |
04.05.1995 |
Самара |
10 |
Олег |
Павлов |
01.06.2002 |
Москва |
11 |
Ольга |
Павлова |
06.08.1965 |
Киев |
12 |
Оксана |
Кротова |
07.04.1974 |
Москва |
13 |
Ксения |
Ветрова |
04.09.1980 |
Санкт-Петербург |
pid |
emp_id |
assign |
offid |
salid |
manager |
hire_date |
6 |
1 |
Директор |
1 |
6 |
NULL |
01.05.2010 |
5 |
2 |
Ассистент |
2 |
2 |
1 |
05.06.2010 |
2 |
3 |
Менеджер по продажам |
4 |
3 |
6 |
01.05.2010 |
9 |
4 |
Программист |
3 |
1 |
7 |
01.05.2010 |
7 |
5 |
Специалист поддержки |
1 |
7 |
6 |
05.06.2010 |
4 |
6 |
Директор офиса |
2 |
5 |
1 |
15.06.2010 |
11 |
7 |
Директор офиса |
4 |
5 |
1 |
15.06.2010 |
8 |
8 |
Переводчик |
1 |
8 |
6 |
25.10.2011 |
13 |
9 |
Юрист |
3 |
9 |
1 |
01.05.2010 |
1 |
10 |
Менеджер по продажам |
1 |
3 |
6 |
05.06.2010 |
12 |
11 |
Специалист отдела кадров |
4 |
10 |
1 |
01.05.2010 |
10 |
12 |
Бухгалтер |
1 |
11 |
13 |
05.06.2010 |
3 |
13 |
Старший бухгалтер |
2 |
4 |
7 |
01.05.2010 |
offid |
address |
city |
name |
1 |
Москва, Верхний проезд, 1Б |
Москва |
Центр |
2 |
Самара, ул. Ленинградская, 34А |
Самара |
Орг |
3 |
Киев, ул. Большая, 1, оф 314. |
Киев |
Укр |
4 |
Москва, Садовое кольцо, 217, оф. 54 |
Москва |
Мск-2 |
salid |
curr |
salary |
tax |
1 |
UAH |
10000,00 |
10,00 |
2 |
RUB |
45000,00 |
13,00 |
3 |
RUB |
70000,00 |
13,00 |
4 |
RUB |
349002,00 |
26,00 |
5 |
RUB |
245213,00 |
13,00 |
6 |
RUB |
4123522,00 |
13,00 |
7 |
RUB |
23215,00 |
13,00 |
8 |
RUB |
24356,00 |
13,00 |
9 |
UAH |
12459,00 |
10,00 |
10 |
RUB |
213953,00 |
26,00 |
11 |
RUB |
243514,00 |
13,00 |
ПРИЛОЖЕНИЕ 2 – Логическая структура БД для домашней библиотеки.
ПРИЛОЖЕНИЕ 3 – Скрипты создания таблиц и связей в БД library.
ПРИЛОЖЕНИЕ 4 – Файлы с кодом
- Расчет приводного вала ленточного конвейера
- Разработка фундамента монтажного цеха
- Проектирование промышленного здания
- Основы мониторинга технического состояния зданий и сооружений
- Финансы акционерных обществ на примере коммерческого банка
- Современная система мотивации персонала в организациях (Теоретические аспекты оплаты труда в малом бизнесе)
- Анализ способов найма кандидатов
- Организация хозяйственных связей в торговле (Сущность хозяйственных связей и порядок их регулирования в торговле)
- Топливно- энергетический комплекс в составе национальной экономики
- Электронная коммерция как прогрессивная форма развития торговли (Сущность электронной коммерции)
- Общие принципы организации информационных систем (Устройство информационных систем)
- Методы экспертного оценивания в задачах принятия решений