Программирование >>  Программный интерфейс приложений 

1 ... 125 126 127 [ 128 ] 129 130 131 ... 264


Страница, которая была выведена с помощью функции

display table list (), содержит следующие ссылки.

/cgi-bin/samp browse?tbl name=absence

/cgi-bin/samp browse?tbl name=event

/cgi-bin/samp browse?tbl name=member

В случае, когда при запуске sampbrowse параметр tbl name содержит определенное значение, сценарий передает это значение функции display table О вместе с именем столбца, по которому будет производиться сортировка. Если столбец не указан, сортировка будет производиться по первому столбцу (к столбцам можно обращаться по их порядковому номеру с помощью предложения ORDER BY 1),

sub display table {

my {$tbl name, $sort column) = @ ; my ($sth7 $url);

# если столбец не указан, сортировать по первому столбцу $sort column = 1 unless $sort column;

# отобразить ссылку, которая возвращает пользователя

# на страницу, содержащую перечень таблиц print $cgi->a ((-href => $cgi->script name ()},

Отобразить список таблиц ); print <BR><BR>\n ;

Ssth $dbh->prepare (qq(

SELECT * FROM $tbl name ORDER BY $sort column

)) ;

$sth->execute ();

print <В>Содержимое таблицы $tbl name:</B><BR>\n ;

# Отобразить таблицу в рамке print <TABLE BORDER>\n ;

# в качестве заголовков столбцов таблицы использовать имена

# столбцов; сделать каждый заголовок ссылкой,

# которая сортирует таблицу по соответствующему столбцу print <TR>\n ;

foreach my $col name (@($sth->{NAME}b) {

$url = Scgi->script name ();

$url .= sprintf ( ?tbl name=%s , $cgi->escape

($tbl name)); $url .= sprintf ( isort column=%s , $cgi->escape

($col name));

display cell ( TH , $cgi->a ({-href => $url}, Scol name), 0);

print </TR>\n ;

# Отобразить строки таблицы

while (my @ary = $sth->fetchrow array ()) {



print <TR>\n ; foreach my $val (@ary) {

display cell ( TD , $val, 1) ;

print </TR>\n ;

>

$sth->finish 0; print </TABLE>\n ;

Страница отображения содержимого таблиц ассоциирует заголовки таблицы со ссылками, по которым таблица отображается повторно. Эти ссылки учитывают параметр sort column, задающий явным образом столбец, по которому будет производиться сортировка. Например, для страницы, отображающей содержимое таблицы event, ссьшки заголовков столбцов будут выглядеть следующим образом.

/cgi-bin/samp browse?tbl name=event&sort column=date /cgi-bin/samp browse?tbl name=event&sort column=type /cgi-bin/samp browse?tbl name=event4sort column=event id

Как display table list О , так и display table () вызывают функцию display cell(), отображающую значение как ячейку таблицы в формате HTML. Эта функция заменяет пустые значения неразрывным пробелом ( snbsp; ), так как в таблицах с рамками ячейки не позволяют отображать границы рамок правильно. Подстановка такого пробела решает эту проблему. Функция displaycell () имеет и третий параметр, который является флагом, показывающим, нужно или нет кодировать значение. Это необходимо для того, чтобы функция display cell () могла вызываться для отображения закодированных ячеек, таких как заголовки, уже содержащие информацию об URL.

# - отобразить значение в ячейке таблицы,

# подставить неразрывный пробел

# в пустые ячейки так, чтобы рамки отображались

sub display cell {

my ($tag, $value, $encode) = @ ;

$value = $cgi->escapeHTML (Svalue) if Sencode; $value = inbsp; unless $value; print <Stag>$value</$tag>\n ;

Сценарием sainp browse можно воспользоваться для создания и более универсальных сценариев. Его можно видоизменить для работы с несколькими базами данных. Например, с помощью сценария можно про-сматрмвать список баз данных, имеющихся на сервере. И можно выбрать из этого списка базу данных для дальнейшего подключения и просмотра ее таблиц.



Броузер проекта Учета успеваемости

Каждый раз при вводе оценок, полученных учащимися за тесты, нам необходим упорядоченный список оценок, по которому можно будет определить кривую успеваемости. Заметим, что мы хотим только распечатать этот список. После этого по списку можно будет проставить оценку успеваемости учащегося. Нам не надо хранить буквенные оценки в базе данных, так как оценки, которые будут выставлены учащимся после заверщения аттестационного периода, основываются на цифровых, а не на буквенных оценках. Заметьте также, что, строго говоря, нам нужно сначала ввести оценки, а потом уже говорить об их выборке. Сценарий, осуществляющий ввод оценок, будет рассмотрен в следующей главе. А пока воспользуемся несколькими наборами оценок, которые остались у нас с начала аттестационного периода. Ими можно воспользоваться даже в случае отсутствия удобного метода ввода оценок.

Нащ сценарий просмотра оценок score browse имеет много общего со сценарием samp browse, но при этом предназначен для рещения более специфической задачи просмотра оценок за определенную викторину или тест. Начальная страница отображает перечень вероятных экзаменов, из которого необходимо делать выбор, и позволяет выбрать любой из них, чтобы просмотреть оценки по данному экзамену. Результаты сортируются по убыванию. Это позволяет легко построить оценочную кривую.

Сценарий scorebrowse проверяет только один параметр - event id. Он задает конкретный экзамен. Если конкретный экзамен не задан, сценарий score browse отображает строки таблицы event. Отсюда пользователь может выбирать. В противном случае он отображает результаты, связанные с выбранным экзаменом:

# параметр, задающий экзамен, оценки которого необходимо отобразить ту ($event id) = $cgi->param ( еvent id ) ;

# если переменная $event id не имеет значения,

# отобразить перечень экзаменов.

# в противном случае отобразить оценки заданного экзамена if (!$event id)

display events О

else {

display scores {$event id);

Функция display events () выбирает информацию из таблицы table и отображает ее в табличной форме, используя имена столбцов в качестве заголовков. Значение eventid ифает роль ссьики, запускающей выполнение запроса по поиску оценок, соответствующих данному экзамену. URL каждого экзамена просто является путем к сценарию score browse с присоединенным параметром, определяющим номер экзамена: /cgi-bin/score browse?event id=nMber



1 ... 125 126 127 [ 128 ] 129 130 131 ... 264

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика