Смекни!
smekni.com

Тег FORM, параметр action (стр. 4 из 5)

Пример 8:

@месяц = ("январь","февраль","март"); # Создали массив

foreach $i (@месяц)

{

print $i," "; # Печать $i

}

Результат: январь февраль март

Пример 13:

@месяц = ("январь","февраль","март"); # Создали массив

foreach $i (@месяц)

{

$i = uc($i); # Перевели в верхний регистр

}

print @месяц;

Результат: ЯНВАРЬФЕВРАЛЬМАРТ

Пример 14:

for $i (3,5,7)

{

print "$i ";

}

Результат: 3 5 7

Как видно из представленного описания, в Perl существует большое количество средств организации циклов. Выбирайте конкретные реализации, по своему вкусу, исходя из предложенной задачи. Далее рассматривается вопрос взаимосвязи СУБД MySQL и языка программирования.

Задание. Создайте скрипт, демонстрирующий работу циклов, согласно примеров №№1-14. Результат работы скриптов представьте в web броузере.

Лабораторная работа №4 Формирование Perl скрипта, взаимодействующего с HTML формой и СУБД MySQL

Цель работы: Создать функционирующее приложение для обеспечения сохранения введенных пользователем через HTML форму данных в БД под управлением MySQL.

В данной работе рассмотрены приемы для реализации клиент серверного взаимодействия. Подробно описаны этапы создания Perl программ. Приведены примеры работающих приложений.

В лабораторных работах предполагается использование web сервера APACHE. Рассмотрение параметров настройки web сервера и его установка не входит в программу данного курса. Студентам необходимо знать, что в представленном варианте сервера он настроен на следующее дерево директорий:

D:\usr\ www
cgi-bin
local
Apache Apache.exe
Perl bin Perl.exe
MySQL Mysql.exe

В случае отсутсвия диска D можно воспользоваться командой Subst создания виртуального диска (вводится через командную строку, кнопка Пуск/ Выполнить): SUBST disk1: disk2:\path где disk1: - буква назначаемого виртуального диска, disk2:\path - полный путь к каталогу (папке), который заменяется на виртуальный диск.

Таким образом для создания диска D и расположения в ней директории USR необходимо последнюю расположить в следующей за корневой директории. Например С:/11/USR. Затем воспользоваться командой SUBST D: "c:/11" после чего появиться диск D и на нем будет располагаться содержимое директории C:/11.

Для организации взаимодействия наших Perl-программ с СУБД MySQL необходимо, чтобы в поставку Perl входил модуль DBI. Поскольку модуль в основном ничего сам не делает, а перекладывает все операции по взаимодействию с базами данных на соответствующий им драйвер, то требуется установка библиотеки DBD-Mysql (драйвер к БД MySQL для модуля DBI). По мнению автора и разработчика модуля, «DBI — это API-интерфейс для организации доступа к базам данных из Perl-программ. Спецификация DBI API определяет набор функций, переменных и правил, используемых для прозрачного интерфейса с базами данных».

Концепция драйверов баз данных весьма удобна, поскольку в своем Perl-приложении вы используете стандартные для DBI вызовы, которые затем переадресуют модули соответствующему драйверу, а тот, в свою очередь, уже напрямую будет взаимодействовать с БД, не требуя от вас изучения технических особенностей каждой конкретной СУБД. Таким образом, существуют драйверы DBD::Sybase, DBD::Oracle, DBD::Informix и т.д. (рис. 1, 2).

Рисунок 1 - Архитектура DBI

Рисунок 2 - Поток данных через интерфейс DBI

Для упрощения исходного кода во второй части Perl программы (Чтение входных данных) для передачи большого количества информации из разных полей зачастую используются уже созданные библиотеки, существенно упрощающие написание исходного кода.

#!/usr/local/perl/bin/perl #Подключение необходимой библиотеки (Убедитесь что она находится в директории с Perl)require "cgi-lib.pl";&ReadParse(*input);#Следующая строка выводит все переменные переданные на скриптprint &PrintVariables(*input);

После выполнения этой подпрограммы с использованием библиотеки cgi-lib и функции &ReadParse(*input), можно обращаться к введенным данным используя обращение следующего вида $input{'name'} где name – имя поля в которой осуществлялся ввод данных в форме HTML.

Пример:

Использование в скрипте следующей конструкции:

print "<I><B>Имя</B></I>=$input{'name'}<BR>&bsol;n";

выведет на экран введенное в HTML форме в поле 'name' содержимое.

Основным заданием данной работы будет создание HTML-форм для ввода, просмотра, изменения, добавления данных в БД и разработки CGI-программ на Perl в целях обработки этой формы и последующего размещения документа в базе данных. Напомним, что CGI (Common Gateway Interface) — протокол, механизм, или формальное соглашение между Web-сервером и отдельной программой. Сервер кодирует входные данные, например HTML-формы, а программа CGI декодирует их и генерирует поток выходных данных.

В спецификации протокола ничего не сказано о каком-либо определенном языке программирования. Поэтому программы, соответствующие этому протоколу, могут быть написаны практически на любом языке — на C, C++, Visual Basic, Delphi, Tcl, Python или, как в нашем случае, на Perl. Взаимодействие приложений MySQL и Perl предлагается осуществлять с помощью вебсервера Apache.

Все программы написанные на Perl после отладки должны быть расположены в директории /cgi-bin/bd_name_num из домашней директории вебсервера, а html документы в директории www/bd_name_num, где bd_name_num имя базы данных и номер варианта. Это необходимо учитывать при указании пути для вызова своего исполняемого файла из html формы, например использование конструкции вида:<form action=/cgi-bin/ bd_name_num/example.pl method=get>, обеспечит запуск необходимого файла из директории /cgi-bin/ bd_name_num/.Для того, чтобы PERL мог выводить данные в HTML форме пользуйтесь конструкцией: # Вывод http-заголовкаprint "Content-type: text/html&bsol;n&bsol;n"; после которой можно выводить любые данные на форму с использованием тэга print, как в предыдущей работе: print "<h3>Спасибо, что заполнили форму</h3>&bsol;nНажмите "; Для выполнения любых операций с БД, посредством программ, написанных на PERL, необходимо произвести подключение с серверу MYSQL следующей конструкцией в составе программы: # Подключение к базе$dbh = DBI->connect("DBI:mysql:database=$database", $opt_user,$opt_password) || die "Can't connect: $DBI::errstr&bsol;n"; где $database, $opt_user, $opt_password имя базы данных, имя пользователя, значение пароля соответственно.После подключения к БД можно выполнять любые операции с ней, разрешенные для пользователя, с учетной записью которого было совершено подключение

Этапы создания скрипта

1. Создать форму для вызова скрипта.

2. Создать сам скрипт.

3. Отладить скрипт. Проверить отсутствие ошибок (если это возможно, лучше проверить все возможные пути выполнения программы).

4. Поместить скрипт на сервер и не забыть дать ему права на выполнение.

5. Связать скрипт с формой, вставив его имя в параметр action тэга form. Например:

<form action=/cgi-bin/ bd_name_num/example.pl method=get>

6. Убедиться, что скрипт правильно работает вместе с формой.

Основные части Perl скрипта

В общем случае любой Perl скрипт состоит из четырех ключевых частей:

1. Настройка. Первая часть скрипта обязательно запускает интерпретатор и устанавливает переменный, используемые в теле скрипта. Для запуска интерпретатора необходимо знать правильный путь к программе.

2. Чтение входных данных. Эта часть "считывает" и сохраняет в переменных входные данные в удобной для обработки форме. Эта часть обычно неизменна во всех скриптах.

3. Обработка входных данных. Эта часть соответствующим образом обрабатывает введенные данные. Она может быть простой (около 5 строк) или очень сложной (более 1000 строк) в зависимости от выполняемой задачи.

4. Вывод результатов. Пользователь обычно ожидает какого-либо ответа на свои действия. Эта часть достаточно проста в реализации.

Пример взаимодействия программы Perl с HTML формой

Шаг 1. Создание формы

Создадим для простоты форму, содержащую всего одно поле и позволяющую пользователю зарегистрировать его имя. Напишем в редакторе следующий текст:

<html>

<head>

<title>Test Form</title>

</head>

<body>

<form method=post action="/cgi-bin/db/testform.pl">

<b>Введите Ваше имя: </b>

<br><input name="user_name" value="" size=20><br>

<b>Введите Email: </b>

<br><input name="user_email" value="" size=20><br>

<br><b>Введите Сообщение: </b>

<br><textarea name="user_messages" rows="10" cols="60"></textarea><br>

<input type="submit" value="Зарегистрировать">

</form>

</body>

</html>

Рисунок 3 - Внешний вид созданной формы

Сохраните файл на диске под именем form.html.

Шаг 2. Создание скрипта

Предложенный ниже скрипт принимает введенные данные, сохраняет их в БД guest и показывает сообщение, содержащее ссылку на файл в котором представлены результаты выборки из таблицы.

Наберите в редакторе текст программы и сохраните в файле testform.pl в вашем каталоге, каталога cgi-bin вашего web-сервера.

Убедитесь, что первая строка программы содержит правильный путь к программе-интерпретатору.

Создайте БД, в которой вы будете сохранять вводимые пользователем данные. В представленном ниже примере это таблица Messages