- •Язык php
- •Почему нужно выбирать php
- •Комментарии
- •Переменные
- •Внешние переменные
- •Константы
- •Построение интерфейса для добавления информации
- •Установка соединения
- •Выбор базы данных
- •Получение списка полей таблицы
- •Отображение списка полей в html-форму
- •Запись данных в базу данных
- •Отображение данных, хранящихся в MySql
Константы
Константы объявляются в РНР при помощи функции define():
define(CONSTANT, value)
Первый параметр этой функции – имя константы, второй – её значение. При использовании константы на неё ссылаются по имени:
<?
define(CONSTANT1,15);
define(CONSTANT2,"\x20"); // код пробела
echo(CONSTANT1);
echo(CONSTANT2);
?>
По традиции имена констант пишут буквами верхнего регистра. Существует функция defined(), которая проверяет, определена ли константа:
<?
define(CONSTANT,"Hello");
if(defined("CONSTANT"))
{
echo("<p>CONSTANT is defined</p>");
}
?>
Массивы поддерживают числовые и строковые ключи и являются гетерогенными. Массивы могут содержать значения любых типов, включая другие массивы. Суперглобальными массивами (superglobal arrays) в PHP называются предопределенные массивы, которые видны в любом месте исходного кода без использования ключевого слова global.
$GLOBALS - массив всех глобальных переменных (в том числе и пользовательских).
$_SERVER - содержит множество информации о текущем запросе и сервере.
$_ENV - текущие переменные среды. Их набор специфичен для каждой конкретной платформы, на которой выполняется сценарий.
$_GET - ассоциативный массив с параметрами GET-запроса. В исходном виде эти параметры доступны в $_SERVER['QUERY_STRING'] и в $_SERVER['REQUEST_URI'] в составе URI.
$_POST - ассоциативный массив значений полей HTML-формы при отправки методом POST.
$_FILES - ассоциативный массив со сведениями об отправленных методом POST файлах. Каждый элемент имеет индекс идентичный значению атрибута "name" в форме и, в свою очередь, также является массивом со следующими элементами:
['name'] — исходное имя файла на компьютере пользователя.
['type'] — указанный агентом пользователя MIME-тип файла.
['size'] — размер файла в байтах.
['tmp_name'] — полный путь к файлу во временной папке.
['error'] — код ошибки.
$_COOKIE - ассоциативный массив с переданными агентом пользователя значениями cookie.
$_REQUEST - общий массив вводных данных запроса пользователя как в массивах $_GET, $_POST, $_COOKIE. Начиная с версии PHP 4.1 включается и содержимое $_FILES.
$_SESSION - информация о текущей сессии пользователя.
PHP поддерживает широкие объектно-ориентированные возможности, полная поддержка которых была введена в пятой версии языка. Класс в PHP объявляется с помощью ключевого слова class. Методы и поля класса могут быть общедоступными (public, по умолчанию), защищенными (protected) и скрытыми (private). PHP поддерживает все три основные механизма ООП — инкапсуляцию, полиморфизм и наследование (родительский класс указывается с помощью ключевого слова extends после имени класса). Поддерживаются интерфейсы (ставятся в соответствие с помощью implements). Разрешается объявление финальных, абстрактных методов и классов. Множественное наследование классов не поддерживается, однако класс может реализовывать несколько интерфейсов. Для обращения к методам родительского класса используется ключевое слово parent. Экземпляры класса создаются с помощью ключевого слова new, обращение к полям и методам объекта производится с использованием символов ->. Для доступа к членам класса из его методов используется переменная $this.
Среди наиболее часто используемых возможностей PHP стоит отметить следующие:
имеется большой набор функций для работы со строками;
работа с регулярными выражениями PCRE.
работа с базами данных, осуществляемая посредством модулей:
php5-mysql для MySQL,
php5-pgsql для PostgreSQL
и др.
для PHP разработаны средства шаблонирования веб-страниц, позволяющие эффективно разделить представление от модели, например Smarty;
имеется библиотека для работы с графическими изображениями GD, позволяющая производить преобразования с графическими файлами, и создавать изображения "на лету".
PHP MySQL
Лекция предназначена для знакомства со способами взаимодействия PHP и СУБД MySql. Основное внимание уделяется установке соединения с базой данных, функциям отправки запросов и обработке ответов (mysql_connect, mysql_query, mysql_result, mysql_num_rows, mysql_close). Пример - создание web -интерфейса для администрирования базы данных виртуального музея истории.
В дистрибутив PHP входит расширение, содержащее встроенные функции для работы с базой данных MySQL. В этой лекции мы познакомимся с некоторыми основными функциями для работы с MySQL, которые потребуются для решения задач построения web-интерфейсов с целью отображения и наполнения базы данных. Возникает вопрос, зачем строить такие интерфейсы? Для того чтобы вносить информацию в базу данных и просматривать ее содержимое могли люди, не знакомые с языком запросов SQL. При работе с web-интерфейсом для добавления информации в базу данных человеку нужно просто ввести эти данные в html-форму и отправить их на сервер, а наш скрипт сделает все остальное. А для просмотра содержимого таблиц достаточно просто щелкнуть по ссылке и зайти на нужную страницу.
Для наглядности будем строить эти интерфейсы для таблицы Artifacts, в которой содержится информация об экспонатах виртуального музея информатики. В предыдущей лекции мы уже приводили структуру этой коллекции, а также ее связи с коллекциями описания персон (Persons) и изображений (Images). Напомним, что каждый экспонат в коллекции Artifacts описывается с помощью следующих характеристик:
название (title);
автор (author);
описание (description);
альтернативное название (alternative);
изображение (photo).
Название и альтернативное название являются строками менее чем 255 символов длиной (т.е. имеют тип VARCHAR(255)), описание - текстовое поле (имеет тип TEXT), а в полях "автор" и "изображение" содержатся идентификаторы автора из коллекции Persons и изображения экспоната из коллекции Images соответственно.