- •Технология организации баз данных и знаний
- •Методические указания к выполнению лабораторных работ
- •Методические указания к выполнению лабораторных работ
- •Предисловие
- •Библиографический список
- •Лабораторная работа № 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. Создание и удаление баз данных
- •Содержание
Задание 4. Сохранение пользовательских данных в текстовом файлеLab9_6_0.Php
В данном задании создается форма ввода (рис. 3.148) предназначенная для заказа товара.
Рис. 3.148. Форма ввода, реализованная в коде Lab9_6_0.php.
Листинг программы для реализации формы представлен ниже.
<!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_6_0 Запись в текстовый</title>
</head>
<body>
<p>Lab9_6_0.php Запись в текстовый файл Lab9_6_1.txt</p>
<h1>Автозапчасти </h1>
<h2>Форма заказа</h2>
<form action="Lab9_6_1.php" method=post>
<table border=0>
<tr bgcolor=#cccccc>
<td width=150>Товар</td>
<td width=15>Количество</td>
</tr>
<tr>
<td>Автопокрышки</td>
<td align=left><input type="text" name="tireqty" size=3 maxlength=3></td>
</tr>
<tr>
<td>Машинное масло</td>
<td align=left><input type="text" name="oilqty" size=3 maxlength=3></td>
</tr>
<tr>
<td>Свечи зажигания</td>
<td align=left><input type="text" name="sparkqty" size=3 maxlength=3></td>
</tr>
<tr>
<td>Адрес доставки</td>
<td align=center><input type="text" name="address" size=40 maxlength=40></td>
</tr>
<tr>
<td colspan=2 align=center><input type=submit value="Отправить заказ"></td>
</tr>
</table>
</form>
</body>
</html>
Рис. 3.149. Код HTML (Lab9_6_0.php) для реализации формы рис. 3.148.
Обработчик формы (как показано в теле кода формы на рис. 3.149) находится в файле Lab9_6_1.php (рис. 3.150).
Листинг обработчика. Файл Lab9_6_1.php.
<?php
// создать короткие имена переменных
$tireqty = $_POST['tireqty']; //Автопокрышки
$oilqty = $_POST['oilqty']; //Машинное масло
$sparkqty =$_POST['sparkqty'];//Свечи зажигания
$address = $_POST['address']; //Адрес доставки
$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
//DOCUMENT_ROOT: W:/home/localhost/www
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Автозапчасти - Результаты заказа</title>
</head>
<body>
<h1>Автозапчасти Lab9_6_1</h1>
<h2>Результаты заказа</h2>
<?php
$date = date('H:i, jS F');
echo '<p>Заказ обработан в '.$date.'</p>';
if ($oilqty<0 or $oilqty<0 or $sparkqty<0):
echo '<p><font color=\"red\">Заказ не принят!</font></p>';
echo 'Отрицательное число в элементах заказа<br></body></html>';
exit;
endif;
echo '<p>Список вашего заказа: </p>';
$totalqty = 0;
$totalqty = $tireqty + $oilqty + $sparkqty;
echo 'Заказано товаров: '.$totalqty.'<br />';
if( $totalqty == 0):
//{
echo 'Вы ничего не заказали на предыдущей странице!<br />';
exit;
//}
endif;
if ( $tireqty>0 )
echo $tireqty.' автопокрышек <br />';
if ( $oilqty>0 )
echo $oilqty.' бутылок с маслом<br />';
if ( $sparkqty>0 )
echo $sparkqty.' свечей зажигания<br />';
$totalamount = 0.00;//Итого по заказу
define('TIREPRICE', 100); //стоимость автопокрышеки
define('OILPRICE', 10); //стоимость бутылки с маслом
define('SPARKPRICE', 4);
$totalamount = $tireqty * TIREPRICE
+ $oilqty * OILPRICE
+ $sparkqty * SPARKPRICE;
$totalamount=number_format($totalamount, 2, '.', ' ');
echo '<p>Итого по заказу: '.$totalamount.'</p>';
echo '<p>Адрес доставки: '.$address.'</p>';
$outputstring = $date."\t"
.$tireqty." автопокрышек\t"
.$oilqty." бутылок с маслом\t"
.$sparkqty." свечей зажигания\t\$"
.$totalamount."\t".$address."\n";
//В качестве разделителя значений использован символ
//горизонтальной табуляции "\t". В качестве разделителя
//строк использована управляющая последовательность "\n"
//открыть файл для добавления
//@$fp = fopen($DOCUMENT_ROOT."/../lab9_6_1.txt", 'ab');
//Верхний fopen откроет правильно, как и следующий оператор
//но путь нахождения файла будет различен.
@$fp = fopen($DOCUMENT_ROOT."/php/lab9_6_1.txt", 'ab');
/*
echo 'Lab9_6_1 Открыть файл lab9.txt для добавления Путь='.$DOCUMENT_ROOT."/php/lab9_6_1.txt".' <br>Результат открытия='.$fp.' gettype(fp)='.gettype($fp).' <br />';
//открыть файл lab9_6_1.txt для добавления
//Путь=W:/home/localhost/www/php/lab9_6_1.txt
//Результат открытия=Resource id #3 gettype(fp)=resource
*/
if (!$fp)
{echo '<p><strong>В настоящий момент ваш запрос не может быть обработан.<br>'
'Пожалуйста, попытайтесь позже.</strong></p></body></html>';
exit;}
//запись в файл
fwrite($fp, $outputstring, strlen($outputstring));
fclose($fp);//закрытие файла
echo '<p>Заказ записан в файл (путь): '.$DOCUMENT_ROOT.'/php/lab9_6_1.txt.</p>';
?>
</body>
</html>
Рис. 3.150. Код обработчика Lab9_6_1.php, для реализации формы рис. 3.148.
Если пользователь заполнит форму информацией вида:
Рис. 3.151. Пример заполненной формы.
и использует кнопку , то реакция обработчикаLab9_6_1.php будет следующей (рис. 3.152).
Рис. 3.152. Реакция обработчика на ошибочные действия пользователя при заполнении формы.
Если пользователь использует кнопку и приведет форму к виду (рис. 3.153),
Рис. 3.153. Пример заполненной формы.
реакция обработчика, после нажатия кнопки “Отправить заказ” показана на рис. 3.154.
Введенная информация будет записана а текстовый файл функцией
fwrite($fp, $outputstring, strlen($outputstring));
Этот вызов указывает PHP на необходимость записи строки из переменной $outputstring в файл на который указывает $fp. Третий параметр функции strlen($outputstring) указывает на длину записи, заносимой в файл.
Например, состав текстового файла после добавления информации из формы показанной на рис. 3.153, представлен на рис. 3.155.
Рис. 3.154. Реакция обработчика на действия пользователя при заполнении формы.
продожение записи в файле Lab9_6_1.txt
Рис. 3.155. Состав файла Lab9_6_1.txt после заполнения формы.
Закрытие файла производится с помощью следующей функции:
fclose($fp);//закрытие файла
Вероятность ошибки при закрытии файла намного меньше, чем при открытии файла, но она существует.