- •Обработка динмачиской html страницы
- •Назначение и виды веб серверов
- •Способы встраивания php скрипта в html код
- •Переменные и константы в php. Область определения переменных
- •Область видимости переменных
- •Переменные переменные
- •Константы
- •5. Особенности синтаксиса php
- •6. Глобальные и статические переменные php Глобальные переменные в php
- •Статические переменные в php
- •7. Система типов языка php
- •8. Вывод данных в php
- •Арифметические операторы php
- •Логические операторы php
- •Строковые операторы php
- •Операторы присвоения в php
- •Операторы сравнения в php
- •Операторы инкремента и декремента в php
- •Операторы эквивалентности php
- •Операции с символьными переменными в php
- •Приоритеты выполнения операторов в php
- •Операторы исполнения внешних команд в php
- •Операторы для работы с массивами php
- •Операторы управления ошибками php
- •Операторы классов php
- •Поиск и замена подстрок
- •Регулярные выражения
- •Жадные и ленивые квантификаторы в регулярных выражениях
- •Использование html-форм для передачи данных на сервер
- •Для метода get
- •Для метода post
- •Замечание
- •Замечание
- •Замечание
- •Замечание
- •Замечание
- •Замечание
- •Типы ресурсов Предопределенные константы
- •Проверка существования файла
- •Функция file_exists
- •Функция is_writable
- •Функция is_readable
- •I. Открытие файла
- •II. Манипуляции с данными файла
- •III. Закрытие файла
- •Запись в файл
- •Чтение из файла
- •Взаимодействие php и MySql
- •Создание базы данных с помощью html-формы
- •Листинг 1. Код html-формы
- •Листинг 2. Код записывающей html-формы
6. Глобальные и статические переменные php Глобальные переменные в php
Глобальные переменные - это переменные, которые доступны всей программе, включая подпрограммы (пользовательские функции).
Локальные переменные - переменные, определенные внутри подпрограммы (пользовательской функции). Они доступны только внутри функции, в которой они определены.
Для PHP все объявленные и используемые в функции переменные по умолчанию локальны для функции. То есть, по умолчанию нет возможности изменить значение глобальной переменной в теле функции.
Если вы в теле пользовательской функции будете использовать переменную с именем, идентичным имени глобальной переменной (находящейся вне пользовательской функции), то никакого к отношения глобальной переменной эта локальный переменная иметь не будет. В данной ситуации в пользовательской функции будет создана локальная переменная с именем, идентичным имени глобальной переменной, но доступна данная локальная переменная будет только внутри этой пользовательской функции.
Второй способ доступа к переменным глобальной области видимости - использование специального, определяемого PHP массива $GLOBALS.
Статические переменные в php
Помимо локальных и глобальных переменных, в PHP существует еще один тип переменных - статические переменные.
Если в теле пользовательской функции объявлена статическая переменная, то компилятор не будет ее удалять после завершения работы этой функции.
Объявление статических переменных:
<?php function funct(){ static $int = 0; // верно static $int = 1+2; // неверно (поскольку это выражение) static $int = sqrt(121); // неверно (поскольку это тоже выражение) $int++; echo $int; } ?>
Пример работы пользовательской функции, содержащей статические переменные:
<?php function funct() { static $a; $a++; echo "$a"; } for ($i = 0; $i++<10;) funct(); ?>
Данный сценарий выводит строку:
1 2 3 4 5 6 7 8 9 10
Если мы удалим инструкцию static, будет выведена строка:
1 1 1 1 1 1 1 1 1 1
7. Система типов языка php
8. Вывод данных в php
Вывод данных.
Наиболее часто востребованной задачей при работе с базами данных является вывод результатов выборки или всего содержимого базы на экран. Рассмотрим как это реализуется на примере сервера MySQL и языка PHP.
Прежде всего рассмотрим, как получить структуру таблицы. Для этого в PHP существует функция: mysql_list_fields(string database_name, string table_name, int [link_identifier]). Параметр database_name - наименование базы данных, содержащей нашу таблицу.table_name - наименование таблицы, данные о полях которой мы пытаемся получить. int [link_identifier] - необязательный параметр, указывающий активное соединение.
Результат работы данной функции может быть использован в качестве параметра в следующих функциях: mysql_field_flags() mysql_field_len() mysql_field_name() and mysql_field_type()
Для того, чтобы узнать, сколько полей содержит данная таблица, необходимо использовать функцию mysql_num_fields(int result). Единственный обязательный параметр result, содержит результаты работы функции mysql_list_fields().
Для получения имен полей используем функцию mysql_fiels_name(int result, int field_index). result - результат работы функции mysql_list_fields(), а field_index - порядковый индекс поля. Например, mysql_field_name($res,1) - имя первого поля в таблице
Соединим все это вместе, предварительно установив соединение с базой данных, как я уже описывал:
mysql_connect("yourhost","user","password");
mysql_select_db("database");
$res = mysql_list_fields("database","table");
echo "<TABLE BORDER=1>";
echo "<TR>";
for ($i = 0; $i < mysql_num_fields($res); $i++) {
echo "<TH>";
echo mysql_field_name($res,$i);
echo "</TH>";
}
Таким образом мы получили "шапку" таблицы для вывода результатов. Необходимо заметить, что я подразумеваю, что мы не знаем ни количества, ни наименований полей таблицы. В большинстве случаев разработчику известна эта информация. Но нам важно разобраться в основных принципах, а конкретные случаи вы сможете реализовать сами.
Теперь перейдем к выводу содержания таблицы. Сначала необходимо выполнить запрос к базе данных. Запрос должен выглядеть так: SELECT * FROM tablename. Как посылать запросы к базам данных подробно описано в опыте "Создание системы Совет Дня". Код будет выглядеть следующим образом:
$sql = "SELECT * FROM users";
$res = mysql_query($sql);
while ($row = mysql_fetch_row($res)) {
echo "<TR>";
for ($i = 0; $i < $fields; $i++) {
echo "<TD>".$row[$i]."</TD>";
}
echo "</TR>";
}
echo "</TR></TABLE>";
Результатом работы этого скрипта будет, примерно, следующая таблица:
name |
|
John |
john@world.org |
Kate |
cat@somewhere.com |
William |
bg@microsoft.com |
Andrew |
exper@inbox.ru |
В следующем опыте рассмотрим как организовать постраничный вывод результатов.