- •Технология организации баз данных и знаний
- •Методические указания к выполнению лабораторных работ
- •Методические указания к выполнению лабораторных работ
- •Предисловие
- •Библиографический список
- •Лабораторная работа № 1 Тема №1. ИнсталляцияMySqLи создание локального сервера
- •1. Цель работы
- •2. Основные технические возможности
- •3. Описание установки
- •4. Порядок выполнения работы
- •5. Содержание отчета
- •Лабораторная работа № 1
- •6. Содержание отчета
- •Лабораторная работа № 2 Тема №1. Создание баз и таблиц данных
- •1. Цель работы
- •2. Основные сведения
- •3. Программа работы
- •4. Указания к выполнению работы
- •3. Программа работы
- •00 Проверка моего домена с именем Moy.Loc
- •4. Указания к выполнению работы
- •5. Содержание отчета
- •3. Указания к выполнению работы
- •Задание 2: Разработать html-форму с методом Post
- •Тема №2. Передача значений переменным в сценариях php. Использование возможностей метода get без html-формы для передачи значений переменных в сценариях php
- •Тема №3. Создание формы и рнр-сценария в одном файле
- •Задание 1: Получение данных из текстового поля
- •I курсив
- •Тема №4. Использование чисел. Управляющие структуры
- •Тема №5. Использование управляющей структурыswitch
- •Тема № 6. Использование регулярных выражений в сценариях рнр
- •Проверка ошибок
- •Задание 1. Вывод информации о ошибочно заполненных полях формы
- •Задание 2. Использование функций пользователя для контроля полей формы
- •Задание 3. Проверка ограничений в текстовом поле.Lab6_0_2.Php
- •Задание 4. Специфика имени пользователя. Lab6_0_3.Php
- •Задание 5. Специфика имени пользователя с помощью JavaScript. Lab6_0_4.Php
- •Тема №7. Работа с массивами
- •Задание 1. Означивание массива и вывод на экран. Lab7_0.Php.
- •Задание 4. Сортировка массива.Lab7_3.Php.
- •Тема №8. Функции в сценариях рнр
- •Задание 1. Вложенные функции.Lab8_0_0.Php
- •Задание 2. Объявление функций внутри других функций.Lab8_0.Php
- •Задание 3. Возврат значений функцией.Lab8_1.Php
- •Задание 4. Возврат нескольких значений функцией.Lab8_2.Php
- •Задание 5. Возвращение функцией нескольких величин.Lab8_3.Php
- •Задание 6. Рекурсивные функции .Lab8_4.Php
- •Задание 7. Функции-переменные.Lab8_5.Php
- •Задание 8. Построение библиотек функций.Lab8_6_0.Php.
- •Задание 9. Построение шаблона сайта.Lab8_7_0.Php.
- •Тема №9. Использование файлов для хранения данных в сценариях рнр
- •Создание сценария загрузки.
- •Задание 3. Сохранение пользовательских данных в текстовом файлеLab9_5.Php
- •Задание 4. Сохранение пользовательских данных в текстовом файлеLab9_6_0.Php
- •Тема № 10. Работа с каталогами в сценариях рнр
- •Тема №11. Создание панели управления файлами
- •Задание 1. Разработать форму и сопутствующее ей приложение для панели управления файлами.
- •Тема № 12.Работа с базой через монтторMySql и PhpMyAdmin
- •Задание 1. Создать базу данных через командную строку
- •Задание 3. Вставка данных в базу данных
- •Задание 4. Создание командных файлов и файлов сценариев для вставки данных в базу данных.
- •Тема № 13. Извлечение данных из базы данных
- •Задание 1. Оператор выборки данныхSelect
- •Задание 2. Извлечение данных по определенному критерию
- •Задание 3. Извлечение данных из нескольких таблиц
- •Задание 4. Поиск несоответствующих строк
- •Задание 5. Использование псевдонимов имен таблиц (as)
- •Задание 6. Извлечение данных в определенном порядке
- •Задание 7. Группировка и агрегирование данных
- •Задание 8. Обновление записей в базе данных (update)
- •Задание 10. Удаление записей, таблиц и базы данных (delete)
- •Тема № 14.Php и MySql. Доступ к базе данных MySql из Web с помощью рнр
- •Задание 1. Изучение работы архитектуры Web-баз данных
- •Задание 2. Проверка и фильтрация данных, исходящих от пользователя. Использование объектно-ориентированного синтаксисаPhp
- •Задание 3. Внесение новой информации в базу данных. Проверка и фильтрация данных, исходящих от администратора
- •Задание 4. Создание и удаление баз данных
- •Содержание
Задание 3. Сохранение пользовательских данных в текстовом файлеLab9_5.Php
Пользовательские данные сохраняются в текстовом файле для последующего статистического анализа, поиска и т. д. -- короче, любой обработки по вашему усмотрению. В листинге 3.144, как и в предыдущих примерах, данные формы обрабатываются в одном сценарии. Пользователю предлагается ввести четыре объекта данных: имя, адрес электронной почты, язык и профессию. Введенная информация сохраняется в текстовом файле lab9_5.txt. Элементы данных разделяются символами «вертикальная черта» (|).
Листинг 9.18. Сохранение пользовательской информации в текстовом файле.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Lab9_5 Запись в текстовый файл</title>
</head>
<body>
<p>Lab9_5.php Запись ввода в текстовый файл lab9_5.txt</p>
<?PHP //тело основной программы
$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
//Например, DOCUMENT_ROOT= W:/home/localhost/www
$name = $_POST['name'];
$seenform=$_POST['seenform'];
$email=$_POST['email'];
$job=$_POST['job'];
$language=$_POST['language'];
// Создать форму
$form = "
<form action=\"Lab9_5.php\" method=\"post\">
<input type=\"hidden\" name=\"seenform\" value=\"z\">
<b>Укажите Ваши данные!<br>
<?php /*?> <?php Внимание! Тег b не закрываем */?>
Фамилия, имя:<br>
<input type=\"text\" name=\"name\" size=\"20\" maxlength=\"20\" value=\"$name\"><br>
Ваш Email:<br>
<input type=\"text\" name=\"email\" size=\"20\" maxlength=\"40\" value=\"$email\"><br>
Ваш предпочитаемый язык:<br>
<select name=\"language\">
<option value=\"\">Выберите язык:
<option value=\"English\">Английский
<option value=\"Spanish\">Испанский
<option value=\"Italian\">Итальянский
<option value=\"French\">Французкий
</select><br>
Ваше занятие:<br>
<select name=\"job\">
<option value=\"\">Кто Вы?:
<option value=\"student\">Студент
<option value=\"programmed\">Программист
<option value=\"manager\">Менeджер
<option value=\"slacker\">Пенсионер
</select><br>
<input type=\"submit\" value=\"Зафиксировать в файле\">
</form>";
if ($seenform != "z"): // Заполнялась ли форма ранее?
print "$form"; // echo " Первая прорисовка формы";
//exit;
else://Заполнили форму. Проверить введенные данные.
$error_flag = "n"; //признак что ошибок нет
if ($name == ""):
// Убедиться в том, что поле имени содержит информацию
print "<font color=\"red\"> Вы забыли ввести Ваше имя</font><br>";
$error_flag = "y";//признак наличия ошибки
else:
//Убедиться в том, что поле адреса содержит информацию
if ($email == ""):
$error_flag = "y";
print "<font color=\"red\">Укажите правильный email
address! Он не должен быть пустым.</font><br>";
else:
// Преобразовать все алфавитные символы в адресе
// электронной почты к нижнему регистру
$email = strtolower(trim($email));
endif; //if ($email == "")
endif; //if ($name == "")
if(!empty($_POST['email'])and $error_flag == "n"):
//Убедиться в правильности синтаксиса адреса электронной почты
//Будем считать, что стандартный адрес электронной почты выглядит так:
// admin@mail.ru
//Адрес состоит из двух частей это:
// admin - имя пользователя.
// mail.ru - домен, доменное имя.
//Их разделяет знак @(собака).
//Имя пользователя - может состоять из букв разного
//регистра, цифр, знаков подчёркивания, точек, минусов.
//Доменное имя - так же может состоять из букв разного
//регистра, цифр, знаков подчёркивания, точек, минусов.
if(preg_match("|^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,6}$|i", $_POST['email'])):
//echo $_POST['email']. " Email - Правильный.<br>";
$error_flag = "n";
echo "Данные введены. Можно формировать файл lab9_5.txt<br>";
$fd = fopen($DOCUMENT_ROOT."/../lab9_5.txt", 'ab');
echo 'Открыть файл для добавления<br>Путь='
.$DOCUMENT_ROOT."/../lab9_5.txt".'<br>Результат открытия='.$fd.'<br />';
if (!$fd): // ошибка открытия файла
echo '<p><strong> Файл lab9_5.txt не доступен. <br></strong>
</p></body></html>';
exit;//выход из программы
endif;
//Убедиться, что во введенных данных не встречается вертикальная черта.
$name = str_replace("|", "", $name);
$email = str_replace("|", "", $email);
// Построить строку с пользовательскими данными
$user_row = $name." ".$email."|".$language." ".$job."\n";
fwrite($fd, $user_row) or die("Could not write to file!");
fclose($fd);
print "<br>Спасибо что уделили время для ответов на вопросы";
print "<br>Строка в файле ".$user_row;
else://шаблон Email не точен
$error_flag = "y";
echo $_POST['email']. " Email - НЕправильный.<br>";
print "<font color=\"red\"> Пример правильного возможного
email: admin@mail.ru</font><br>";
endif;
else: //echo "Вы не ввели email.".$error_flag;
if ($error_flag == "y"):
// Если флаг ошибки $error_flag установлен, то заново отобразить форму.;
print "$form";
endif; //if ($error_flag == "y"):
endif; //if(!empty($_POST['email']))
endif;
?>
</body>
</html>
Рис. 3.144. Файл Lab9_5.php, запись данных в текстовый файл.
Обратите внимание на фрагмент:
$name = str_replace("|", "", $name);
$email = str_replace("|", "", $email);
В данном фрагменте мы проверяем, что пользователь не включил в имя или адрес электронной почты символы «вертикальная черта» (|). Функция str_replace( ) удаляет эти символы, заменяя их пустой строкой. Если бы это не было сделано, пользовательские символы | нарушили бы структуру файла данных и существенно затруднили (а то и сделали невозможным) его правильную обработку.
При работе с относительно малыми объемами информации вполне можно обойтись текстовыми файлами. Однако при большом количестве пользователей или объеме сохраняемой информации для хранения и обработки данных, введенных в форме, лучше воспользоваться базой данных. Эта тема подробно рассматривается далее в лабораторных.
Согласно кода программы, показанного на рис. 3.144 на экран будет выведена форма рис. 3.145.
Заполненная форма ввода показана на рис. 3.146, а результат работы программы (при условии, что пользователь ввел правильные данные) показан на рис. 3.147 и рис. 3.148.
Рис. 3.145. Форма ввода для кода Lab9_5.php.
Рис. 3.146. Заполненная форма ввода для кода Lab9_5.php.
Если пользователь использует кнопку , то будет создан текстовый файл по адресу:
Рис. 3.146a. Результат кода Lab9_5.php. Файл Lab9.txt
Рис. 3.147. Результат кода Lab9_5.php.
В коде программы показанной на рис. 3.144 использована функция PHP fopen.
$fd = fopen($DOCUMENT_ROOT."/../lab9_5.txt", 'ab');
которая в данном примере используется для открытия файла для добавления в него информации.
Первым параметром указывается файл - $DOCUMENT_ROOT."/../lab9_5.txt", который должен быть открыт. Второй параметр - 'ab' – режим открытия файла (в данном случае режим 'ab' предполагает не только открытие для добавления в конец файла, но и создание файла, если он отсутствовал по указанному пути).
В примере для указания пути к файлу использована встроенная переменная $_SERVER['DOCUMENT_ROOT'. Эта переменная указывает на основание дерева документов используемого вами Web-сервера.
Символ .. обозначает родительский каталог корневого каталога документов. В целях безопасности этот коталог находится вне дерева документов, чтобы этот файл не был доступен в WEB, кроме как только через разработанный Вами интерфейс. Этот путь называется относительным, поскольку он описывает позицию в файловой системе относительно корня документов.
Запись в файл в PHP осуществляется функцией:
fwrite($fd, $user_row).
Где $fd – номер ресурса возвращенного функцией fopen, а $user_row – значение записываемое в файл.