- •Краматорськ 2012
- •Содержание
- •Введение
- •Лабораторная работа №1 Проектирование Web-приложений
- •Краткие теоретические сведения
- •Пример технического задания:
- •Лабораторная работа №2 cms Joomla. Панель управления
- •Лабораторная работа №3 cms Joomla. Наполнение материалом
- •Лабораторная работа №4 cms Joomla. Подключение расширений. Добавление форума
- •Лабораторная работа №5 cms Joomla. Социальная сеть
- •Лабораторная работа №6 cms Joomla. Ведение блога
- •Лабораторная работа №7 Управление интернет - магазином VirtueMart на основе cms Joomla
- •Лабораторная работа №8 Разработка приложений с помощью php
- •Функция in_array
- •Функция array_search
- •Лабораторная работа №9 Разработка приложений бд на cервере MySql с помощью php
- •Установка соединения
- •Выбор базы данных
- •Получение списка полей таблицы
- •Отображение списка полей в html-форму
- •Запись данных в базу данных
- •Лабораторная работа №10 Разработка модулей с использованием mvc фреймворка
- •Краткие теоретические сведения mvc Фреймворк
- •Класс Router
- •Представление
- •Лабораторная работа №11 Разработка компонент для cms Joomla. Разработка простого компонента для пользовательской части
- •Лабораторная работа №12 Разработка компонент для cms Joomla. Разработка компонента с использованием базы данных
- •Лабораторная работа №13 Разработка компонент для cms Joomla. Разработка компонента с административной частью
- •Список рекомендованной литературы
- •7/2005. Підп. До друку Формат 60х84/16.
- •84313, М. Краматорськ, вул. Шкадінова, 72
Функция in_array
in_array("искомое значение","массив",
["ограничение на тип"]);
позволяет установить, содержится ли в заданном массиве искомое значение. Если третий аргумент задан как true, то в массиве нужно найти элемент, совпадающий с искомым не только по значению, но и по типу. Если искомое значение – строка, то сравнение чувствительно к регистру.
Например, имеется массив не изученных нами языков программирования. Мы хотим узнать, содержится ли в этом массиве язык PHP. Напишем следующую программу:
<?php
$langs = array("Lisp","Python","Java",
"PHP","Perl");
if (in_array("PHP",$langs,true))
echo "Надо изучить PHP<br>"; // выведет сообщение "Надо изучить PHP"
if (in_array("php",$langs))
echo "Надо бы изучить php<br>";
// ничего не выведет, поскольку в массиве есть строка "PHP", а не "php"
?>
В качестве искомого значения этой функции может выступать и массив. Правда, это свойство было добавлено только начиная с PHP 4.2.0.
Например:
<?php
$langs = array("Lisp","Python",array("PHP","Java"),"Perl");
if (in_array(array("PHP","Java"),$langs))
echo "Надо бы изучить PHP и Java<br>";
?>
Функция array_search
Это еще одна функция для поиска значения в массиве. В отличие от in_array в результате работы array_search возвращает значение ключа, если элемент найден, и ложь – в противном случае. А вот синтаксис у этих функций одинаковый:
array_search("искомое значение","массив",
["ограничение на тип"]);
Сравнение строк чувствительно к регистру, а если указан опциональный аргумент, то сравниваются еще и типы значений. До PHP 4.2.0, если искомое значение не было найдено, эта функция возвращала ошибку или пустое значение NULL.
<?php
$langs = array("","Lisp","Python","Java", "PHP","Perl");
if (!array_search("PHP",$langs))
echo "Надо бы изучить PHP<br>";
else {
$k = array_search("PHP",$langs);
echo "PHP я изучил $k-м";
}
?>
В результате мы получим строчку: PHP я изучил 4-м
Очевидно, что эта функция более функциональна, чем in_array, поскольку мы не только получаем информацию о том, что искомый элемент в массиве есть, но и узнаем, где именно в массиве он находится. А что будет, если искомых элементов в массиве несколько? В таком случае функция array_search() вернет ключ первого из найденных элементов. Чтобы получить ключи всех элементов, нужно воспользоваться функцией array_keys().
Работа с файлами
<?php
$h = fopen("1.txt","w");
/* открывает на запись файл 1.txt если он существует, или создает пустой
файл с таким именем, если его еще нет */
$h = fopen("dir/2.txt","w+");
/* открывает на запись и чтение или создает файл 2.txt в директории dir */
$h = fopen( "http://www.server.ru/dir/file.php","r");
/* открывает на чтение файл, находящийся по указанному адресу*/
?>
<?php
$h = fopen("my_file.html","w");
$text = "Этот текст запишем в файл.";
if (fwrite($h,$text)) echo "Запись прошла успешно";
else
echo "Произошла ошибка при записи данных";
fclose($h);
?>
В результате работы этого скрипта в браузере мы увидим сообщение о том, что запись прошла успешно, а в файле my_file.html появится строка "Этот текст запишем в файл.". Если бы этот файл существовал до того, как мы выполнили этот скрипт, все находящиеся в нем данные были бы удалены.
Если же мы напишем такой скрипт:
<?php
$h = fopen("my_file.html","a");
$add_text = "Добавим текст в файл.";
if(fwrite($h,$add_text,7)) echo "Добавление текста прошло успешно<br>";
else echo "Произошла ошибка при добавлении данных<br>";
fclose($h);
?>
то к строке, уже существующей в файле my_file.html, добавится еще семь символов из строки, содержащейся в переменной $add_text, т.е. слово «Добавим»
Считывание всех строк файла my_file.txt:
<?php $h = fopen("my_file.html","r");
while (!feof ($h)) {
$content = fgets($h);
echo $content,"<br>";}
?>
Функция stat( ) возвращает индексируемый массив с подробной информацией о файле с заданным именем: stat(string имя_файла)
В элементах массива возвращается следующая информация:
0 Устройство
1 Индексный узел (inode)
2 Режим защиты индексного узла
3 Количество ссылок
4 Идентификатор пользователя владельца
5 Идентификатор группы владельца
6 Тип устройства индексного узла
7 Размер в байтах
8 Время последнего обращения
9 Время последней модификации
10 Время последнего изменения
11 Размер блока при вводе/выводе в файловой системе
12 Количество выделенных блоков
Таким образом, если вы хотите узнать время последнего обращения к файлу, обратитесь к элементу 8 возвращаемого массива. Например:
$file = "datafile.txt";
list($dev, $inode, $inodep, $nlink, $uid, $gid, $inodev, $size, $atime, $mtime, $ctime, $bsize) = stat($file);
echo(date("F d Y H:i:s.", fileatime("1.html")); // вывод в формате даты
Задание к работе:
Ознакомиться с теоретическим материалом.
Cоздать скрипт на php для выполнении индивидуального задания (варианты 1-5 решают задачу 1, варианты 6-10 решают задачу 2, варианты 11-15 решают задачу 3, варианты 16-20 решают задачу 4). Использовать элементы диалога таблицы 8.1.
Оформить отчет согласно требованиям.
Задачи:
1 Создать скрипт для работы гостевой книги: использовать указанные элементы диалога для ввода информации о пользователях сайта и оставляемых комментариях, которая будет записывается в файл. Создать страницу с просмотром всех сообщений.
2 Создать текстовый файл с информацией о товарах (название, цена, фирма), в котором отдельная строка соответствует одному товару. Создать скрипт, который выводит на страницу прайс товаров с возможностью заказа товара по нажатию кнопки возле соответствующей строки. При заказе товара, обязательно пользователь вводит свое имя и требуемое количество товара. Список заказов хранить в другом файле, например “zakazi.txt”. Использовать следующую функцию для разбития строки файла на составляющие: list($name,$price)= split (":", $srt,2);
3 Создать список файлов указанной директории, с указанием размеров каждого файла и датой последнего обращения к файлу. Полученную информацию записать в файл statistic_files.txt.
4 В выбранном файле подсчитать кол-во ссылок, таблиц и рисунков.
Таблица 8.1- Индивидуальное задание для выбора элементов диалога
№ |
Текст задания |
№ |
Текст задания |
1 |
Text, password, textarea |
11 |
Select, text |
2 |
Select, textarea |
12 |
Radio, text |
3 |
radio, textarea |
13 |
Checkbox, radio |
4 |
Image (кнопка), textarea |
14 |
Password, select |
5 |
Text, select, reset |
15 |
Select, textarea |
6 |
Text, checkbox |
16 |
Checkbox, select |
7 |
Radio, select |
17 |
Select, text |
8 |
Text, password |
18 |
Radio, textarea |
9 |
reset, select |
19 |
Image (кнопка), textarea |
10 |
Text, radio |
20 |
Select, textarea |
Отчет должен содержать:
Название и цель работы.
Ход работы с детальным описанием выполненных действий с рисунками, листингом кода.
Экранные формы браузера с загруженными страницами.
Выводы о проделанной работе.
Вопросы для подготовки к защите работы:
Какие вы знаете функции для работы со строками?
Как открыть файл на чтение, для записи в начало, для записи в конец?
Приведите функции работы с директориями?
Приведите функции работы с массивами?
Обработка ошибок при подключении к файлам?