Введение в СУБД MySQL


Пример приложения, использующего DBI - часть 2


Листинг 13.4.

Эта функция выводит форму, позволяющую пользователю выбрать предмет для экзамена, а также количество вопросов и название. Для вывода списка имеющихся предметов выполняется запрос к таблице предметов. При выполнении в DBI запроса SELECT он должен быть сначала подготовлен, а затем выполнен. Функция DBI::prepare полезна при работе с некоторыми серверами баз данных, позволяющими осуществить операции над подготовленными запросами, прежде чем выполнить их. Для MySQL и mSQL это означает лишь запоминание запроса до вызова функции DBI:: execute.

Результаты работы этой функции посылаются функции add2, как показано ниже:

sub add2 { my Ssubject = param('subjects'); [ my $num = param('num'); $name = param('name') if param('name'); my $out = $dbl"prepare("select name from subject where id=$subject"); $out->execute; my (Ssubname) = $out->fetchrow_a.rray; print header, start_html('title'=>"Создание экзамена по предмету $subname", ' BGCOLOR'=>'white'); print <<END_OF_HTML; <H1> Создание экзамена по предмету $subname</h1> <h2>$name</h2> <P> <FORM ACTION="test.cgi" METHOD=POST> <INPUT TYPE=HIDDEN NAME="action" VALUE="add3"> <INPUT TYPE=HIDDEN NAME="subjects" VALUE="$subject"> <INPUT TYPE=HIDOEN NAME="num" VALUE="$num"> <INPUT TYPE=HIDDEN NAME="name" VALUE="$name"> Введите количество баллов за каждый правильный ответ. Сумма баллов не обязательно должна равняться 100. <Р> END_OF_HTML for (1..$num) { print qq%$_: <INPUT NAME="q$_" SIZE=3> %; if (not.$_ % 5) { print "<br>\n"; } } print <<END_OF_HTML; <P> Введите текст экзамена:<br> <TEXTAREA NAME="test" ROWS=20 COLS=60> </textarea> <p> <INPUT TYPE=SUBMIT VALUE="Ввести экзамен "> <INPUT TYPE=RESET> </form></body></html> END_OF_HTML }




Начало  Назад  Вперед