- •Технология организации баз данных и знаний
- •Методические указания к выполнению лабораторных работ
- •Методические указания к выполнению лабораторных работ
- •Предисловие
- •Библиографический список
- •Лабораторная работа № 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. Создание формы и рнр-сценария в одном файле
Цель работы: Получение навыков и понимание взаимосвязанной работы формы и ее обработки.
Обработка форм
Все данные, которые Вы хотите получить из HTML-формы в PHP сценарий обрабатываются с помощью суперглобальных массивов $_POST или $_GET, в зависимости от указанного в атрибуте method метода передачи данных.
Задание 1: Получение данных из текстового поля
Вам необходимо получить данные из текстового поля и многострочного поля ввода и передать их сценарию.
Решение: Необходимо создать HTML форму и PHP – сценарий для обработки формы.
Создадим два файла: form.html и action.php. В файле form.html будет содержаться html-форма с текстовым полем mytext и текстовой областью msg:
<form action="action.php" name="myform" method="post">
<input type="text" name="mytext" size="50">
<textarea name="msg" cols="20" rows=”10” ></textarea>
<input name="Submit" type=submit value="Отправить данные">
</form>
В этой html-форме нас интересует три элемента: action, который указывает путь к обработчику формы (action.php), имя текстового поля (mytext) и имя многострочного поля вода (msg). Также в форме присутствует кнопка (Submit), при нажатии на которую, происходит передача данных.
После того как html-форма готова, необходимо создать обработчик формы action.php:
<?php
$text = $_POST['mytext'];
$msg = $_POST['mytext'];
echo $text; // Выводим содержимое текстового поля
?>
После того как мы введем любые значение в текстовые поля и нажмем на кнопку "Отправить данные" html-форма отправит значения сценарию action.php.
После этого в переменных $text и $msg будут содержаться значения текстового поля и многострочного поля ввода соответственно, значения которых взяты из суперглобальных переменных $_POST.
Если вы хотите, чтобы в многострочном текстовом поле соблюдалось html-форматирование, то используйте функцию nl2br():
<?php
$text = nl2br($_POST['mytext']);
?>
Задание 1.: Разработать приложение, в котором:
Создается форма ввода (см. рис. 3.11.) помощью программы Lab3.php (см. рис. 3.12.) для введения пользователем данных:
Имени;
Фамилии;
Адреса электронной почты;
Текста - комментария.
Информация указанных данных должна быть охвачена рамкой (fieldset).
Введенные данные обабатываются этим же PHP-сценарием Lab3.php (при нажатии кнопки “OK” или Enter на поле ввода). В программе показана реализация ограничения, требующего обязательного ввода значения поля Фамилия. Если поле Фамилия будет означено и нажата кнопка “OK”, то необходимо вызвать программу Lab3_1.php, в которую необходимо передать зашифрованную информацию.
Lab3_1.php должна отобразить данные в окне браузера.
Рис. 3.11. Форма созданная с помощью программы Lab3.php с введенными данными.
Исходный код программы Lab3.php создающий форму средствами 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>Lab3 Anketa</title>
</head>
<h1 align="justify" >Анкета </h1><!--Заголовок формы-->
<!--justify: строки текста выравниваются по обоим краям.-->
<fieldset style="width: 50%" align="right">
<legend>Ввод исходных данных (заголовок рамки)</legend>
<body bgcolor=><!--по умолчанию белый фон формы-->
<?PHP //тело PHP блока для создания и обработки формы
if (!isset($_POST[Submit]))
{
//echo "Кнопку Submit=OK еще не нажимали <br>";
//Создание формы и описание ее объектов.
print("<form action=\"Lab3.php\" method=POST>");
print("<table> <tr><td> Имя </td>");
print("<td><input type=text name=\"FirstName\" size=20></td></tr>");
print("<tr><td>Фамилия</td>");
print("<td><input type=text name=\"LastName\" size=20></td></tr>");
print("<tr><td>E-mail</td>");
print("<td><input type=text name=\"Email\" size=40></td></tr>");
print("<tr><td> Комментарий</td>");
print("<td><textarea name=\"Comments\" rows=5 cols=40></textarea></td></tr></table>");
print("<input type=submit name=\"Submit\" value=\"OK\"> ");
print("<input type=reset name=\"Reset\" value=\"Отмена-Cancel\">");
//print("<input type=reset name=\"Reset\" value=\"Cancel\">//");
print("</form>");
}
else
{//Вывод введенных данных
$FirstName=trim($_POST[FirstName]);
$iFirstName=$FirstName;
echo "Вышли из формы, нажав кнопку OK. Вывод значений переменных <br>";
$LastName=trim($_POST[LastName]);
if (empty($LastName))
{//проверка на пустое значение переменной $LastName- Фамилия
echo '$LastName Не введена. Введите Фамилию ';
exit; //выйти из программы
}
$Email=trim($_POST[Email]);
$Comments=trim($_POST[Comments]);
$Name=$FirstName." ".$LastName;
print("Ваше имя Firstname is: $FirstName <br>");
print("Ваша фамилия is: $LastName <br>");
print("Ваш e-mail is: $Email <br>");
print("В поле комментария было: $Comments <br>");
$FirstName=md5($FirstName);//шифруем имя
print("Шифрованное имя через md5(Firstname) - is $FirstName <br>");
print("Конкатенация Имени и фамилии: $Name <br>");
$Name=urlencode($Name);
print("urlencode Имени и фамилии: $Name <br>");
print("Click <A href=\"Lab3_1.php?Name=$Name\">here</a> здесь и будет вызвана Lab3_1.php с параметром Name=<br> $Name, ввели имя=".$iFirstName);
//Действие каждого из 6-и ниже стоящих операторов
//эквивалентно действию вышестоящего оператора
//print (" <a href=Lab3_1.php?Name=$Name> here</a> ");
//print " <a href=Lab3_1.php?Name=$Name> here</a> ";
//echo ("<br><a href='Lab3_1.php?Name=$Name'> here</a>");
//echo "<br><a href='Lab3_1.php?Name=$Name'> here</a>";
//echo "<br><a href='Lab3_1.php?Name=$Name'> См.далее</a>";
//print("Click <A href=\"http://localhost/PHP/Lab3_1.php?Name=$Name\">here</a> здесь и будет вызвана Lab3_1.php с параметром $Name, ввели имя=".$iFirstName);
}
?>
</body>
</html>
Рис. 3.12. Код программы Lab3.php для создания формы.
Прим. HTML код на рис. 3.12. показан мелким жирным шрифтом.
Если пользователь введет данные (как показано на рис. 3.11) и нажмет кнопку “OK”, то вновь будет вызвана программа Lab3.php, но в ней сработает ветка
else
{//Вывод введенных данных
и на экран будет выведена следующая информация (рис. 3.13)
Рис. 3.13. Результат обработки события “OK” при вводе значений данных как показано на рис. 3.11.
Если Пользователь использует (см. рис. 3.13), то будет вызвана программаLab3_1.php, код которой приведен на рис. 3.14., а результат представлен на рис. 3.15.
Программа Lab3_1.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>Lab3_1</title>
</head>
<body>
<?PHP
//реакция при нажатии на ссылку HERE, см. файл Lab3.php
//$FirstName = $_GET['FirstName'];
$Name = $_GET['Name'];
$Name1=$_REQUEST['Name'];
if (isset($Name1)) // проверка переменной Name1 на ее существование
{ echo "Переменная с именем Name1 доступна и равна ".$Name1." Ее тип=".gettype($Name1);}
else
{ echo "Переменная с именем Name1 НЕ доступна через REQUEST";
echo "<br>Ее тип=".gettype($Name1);//опеделение типа переменной
} //конец if-else
// echo "<br>Полный адрес к скрипту. Исполняется скрипт - http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
echo "<br>Исполняется скрипт-http://".$_SERVER['SERVER_NAME'];
$a=$_SERVER['REQUEST_URI'];
echo "<br>Передали через адресную строку <br>".$a;
echo "<br> Метод ".$_SERVER['REQUEST_METHOD']." также передал ".$Name ; // GET
echo "<br> QUERY_STRING ".$_SERVER['QUERY_STRING'];
echo "<br> PHP_SELF=".$_SERVER['PHP_SELF'];
if (isset($_SERVER['HTTP_REFERER'])) //контроль существования переменной
{
echo "<br>Вы пришли на данную страницу с адреса: ".$_SERVER['HTTP_REFERER'];
$e = $_SERVER['HTTP_REFERER'];//http://localhost/php/Lab3.php
$d = strstr($e, '/php/');
//print "<br> d=".$d; // печатает /php/Lab3.php
$pos = strpos($d, "/php/"); //
$str=substr($d,$pos+5); //вырежет только Lab3.php
}
print("<br>Hello из $str - Имя и Фамилия: ' $Name '.Отработала ".$_SERVER['PHP_SELF']);
//print("<center> Hello из $d Имя и Фамилия: ' $Name '!!!</center>");
?>
</body>
</html>
Рис. 3.14. Исходный код программы Lab3_1.php – обработка ссылки.
Рамка (fieldset)
Объект fieldset позволяет вам нарисовать рамку вокруг объектов. Имеет закрывающий тэг </fieldset>. Заголовок указывается в тэгах <legend></legend>. Основное назначение объекта – задавание различных стилей оформления.
Например:
<fieldset>
<legend>Программное обеспечение (заголовок рамки)</legend>
Текст, который будет помещен внутри рамки.</fieldset>
Рис. 3.15. Результат работы программы Lab3_1.php – обработка ссылки.
Задание 2. Использование рамок в приложении
Разработать приложение в котором создается форма ввода, испоющая рамку (см. рис. 3.16.).
Рис. 3.16. Пример формы ввода на экране.
Программа Lab3_2.php (рис. 3.17) подготавливает форму для ввода информации:
Имени;
Фамилии;
Текста - комментария.
Информация указанных данных должна быть охвачена рамкой (fieldset) и выделена цветом отличным от стандартного цвета браузера.
Введенные данные обабатываются этим же PHP-сценарием Lab3_2.php (при нажатии кнопки “OK”). В программе показано реализация ограничения, требующего обязательного ввода значения поля Фамилия. Если поле Фамилия будет означено и нажата кнопка “OK” (рис. 3.17),
Рис. 3.17. Пример ввода значения фамилии.
то необходимо вызвать программу Lab3_2.php, в которой необходимо вывести на экран информацию в виде, показанном на рис. 3.18.
Рис. 3.18. Пример вывода введенных значений.
Исходный код программы, реализующий обработку и вывод информации на экран, показанный на рис. 3.17, 3.18 и 3.20 приведен на рис. 3.19 (мелким шрифтом показан текст относящийся к HTML коду).
<!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" />
<!--Обработчик формы в этом же файле Lab3_2.php, method=POST-->
<title>Lab3_2</title>
</head>
<body bgcolor="#f6f6f6" text="#009999" >
<h2>Использование <i><b>bgcolor</b></i> и выделение ссылки цветом</h2><!--Заголовок формы-->
<!--строки текста прижаты по умолчанию, т.е. влево-->
<!--Шрифтовые элементы (font elements) - физическая разметка текста
Шрифтовые элементы это: TT "телетайпный" текст, т.е. текст одного размера