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

1 ... 135 136 137 [ 138 ] 139 140 141 ... 264


Создание многоцелевых Web-страниц в главе 7, Программный интерфейс Perl API .

Ввод оценок учащихся

Обратимся к проекту Учет успеваемости . URL этой области на нашем Web-узле будет иметь вид http: pit-viper.snake.net/gp/, и мы напишем небольшую Web-страницу index.php. Такая таблица вполне подойдет нам. Она содержит ссылку на сценарий scorebrowser, который был написан в главе 7, Программный интерфейс Perl API , так как этот сценарий имеет отношение к этому проекту.

<?php

include ( samp db.mc );

$title = Проект Учет успеваемости ; html begin ($titl6, $title);

?> <p>

<A HREF= /cgi-bin/score browse >View</A> Оценки за викторины и тесты <?php

html end (); ?>

Посмотрим теперь, каким образом можно разработать и реализовать сценарий scoreentry.php, который позволит нам ввести новый набор оценок за тесты или викторины или редактировать уже существующие оценки. Последняя возможность необходима для обработки результатов учащихся, которые прошли тест или викторину позже остальных учащихся класса из-за болезни или по какой-то другой причине (или, о ужас, для исправления ошибки, допущенной при вводе оценки). Общий вид этого сценария будет таким.

1. Начальная страница представляет список известных зачетных экзаменов и позволяет вам произвести выбор одного из них или создать запись о новом экзамене.

2. Если выбрано создание нового экзамена, сценарий перейдет на страницу, позволяющую указать дату и тип экзамена. После того как запись будет создана, сценарий повторно отобразит страницу, содержащую перечень экзаменов, но уже содержащий новый экзамен.

3. Выбор определенного экзамена вызовет на экран страницу ввода результатов. Информация об экзамене хранится в верхней части этой страницы (идентификатор экзамена, дата и тип экзамена). За этой информацией следует построчное отображение оценок учащихся. По одной строке на каждого. Для новых экзаменов записи будут пустыми. Для уже существующих экзаменов записи будут



содержать оценку каждого учащегося. Щелкнув на кнопке Submit, введем оценки в таблицу score.

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

http: pit -viper, snake, net /gp/score entry.php?action= value

Если сценарий scoreentry .php запускается таким образом, пара-меф action можно рассмафивать как переменную $action, доступ к которой может осуществляться напрямую. Предположим, что форма содержит поля с именами паше и address. Когда клиент подтверждает форму, Web-сервер вызывает этот сценарий для обработки содержимого формы. Сценарий проверяет, какие значения были введены, проверив значения переменных $паше и $address. Очевидно, что при наличии множества полей в форме присваивать уникальное имя каждому будет неудобно. Язык РНР позволяет передавать переменные из/в формы. Поля, имеющие имена х[0], х[1] и т.д., язык РНР передаст как элементы массива $х. Доступ к элементам осуществляется как к$х[0], $х[1] и т.д.

Информацию будем передавать от одного запуска сценария scoreentry .php другому запуску того же сценария с помощью пара-мефа action на сфаницах и проверять их значения с помощью переменной $action в сценарии. Каркас этого сценария будет иметь следующий вид. <?php

# score entry.php - Сценарий ввода результатов для проекта

# учета успеваемости

include { samp db.inc );

# объявление констант операций define {INITIAL PAGE, 0); define (SOLICIT EVENT, 1); define (ADD EVENT, 2); define (DISPLAY SCORES, 3); define (ENTER SCORES, 4);

/* ... здесь место для функций ... */

$title = Проект Учет успеваемости - ввод оценок ; html begin (Stitle, Stitle);

samp db connect()

or die ( Невозможно подключиться к серверу );

if (empty (Saction))



$action = INITIAL PAGE;

switch ($action) # что делать?

case INiriAL PAGE: # отобразить первоначальную страницу display events (); break;

case SOLICir EVENr: # запросить информацию о новом экзамене solicit event info (); break;

case ADD EVENr: # добавить новый экзамен в базу данных

add new event {); display events О; break;

case DISPLAy SCORES: # отобразить результаты о выбранном экзамене display scores (); break;

case ENTER SCORES: # ввести новые или отредактированные результаты

enter scores () ;

display events ();

break; default:

die ( Неизвестный код действия ($action) );

html end ( ); ?>

Переменная $ act ion может принимать несколько значений, которые обрабатываются оператором switch (). (Для того чтобы избежать программирования с применением литеральных констант в сценарии, для объявления констант воспользуемся конструкцией define ().) Оператор switch () языка РНР во всем аналогичен своему собрату из языка С. В сценарии scoreentry .php он применяется для определения операции, которую необходимо предпринять в зависимости от передаваемого параметра.

Посмотрим, какие функции применяются для выполнения этих действий. Первая из них, display events (), выбирает и отображает строки из таблицы event. В строках дается перечисление идентификатора, даты и типа экзамена (тест или викторина), при этом идентификатор экзамена является ссылкой, на которую нужно щелкнуть, чтобы выбрать результаты этого экзамена:

function display cvents () (

global $PHP SELF;

print { Выберите экзамен, щелкнув на его номере, \п ); print ( или выберите New Event для создания записи о

новом экзамене:<BR><BR>\n ); $query = SELECT event id, date, type . FROM event . ORDER ВУ event id ; Sresult = mysql query (Squery)

or die ( Невозможно выполнить запрос ); print ( <rABLE BORDER>\n );



1 ... 135 136 137 [ 138 ] 139 140 141 ... 264

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