Анимация
JavaScript
|
Главная Библионтека 105: 106: 107! 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: Ope(5F, •»$surveyfile") 11 die "Сйибка щи ощыеии айпа Ssurveyfile; $1"; foreach my $answer {survey answers) { if } (defiiBd param ($an5wer) print SF Sanswer, "=", ) { param($ansver), "\n close(SF); release lock(); IF Чтобы несолсо участников мо1и одвреи t зашшть иЕсрощю в айп базы данных, t кнбудем его блонфовать в мшет записи. * t Функция блоквк дает неограниченно долго) sub get lock { open(SEM, ">$Beinaphore file") II die "Сиибка присоздании семафсра: $!; flock(SEH, liOCK EX) II die "Блокировка не выполнена: $г I Функция снятия блоквки sub release lock { close(SEM); • Строка 96. Данная функция вызывается для вывода сло рности за участие в опросе. Это всегда стоит делать, особеппо если анкета занимает несколько страниц. Для сохранения данных в файл вызывается функция save() • Строка 103. Функция save() - это практически двойник функции save(), описанной на 18-м занятии, "Основы обработки форм". Она блокирует файл базы данных с помощью функции get lock(), записывает в него ответы пользователя с помощью фрагмента, аналогичного используемому в функции а затем снимает блокировку с файла путем вызова функции release lock{) Описанную выше программу сбора информации вы можете изменять своему усмотрению. Ее дизайн достаточно гибок, что позволяет выполнить адаптацию программы для самых разных целей. Резюме На этом занятии вы узнали, как выполняется обработка данных многостраничных Web-форм, а также о проблемах, которые приходится при этом решать. Самая серьезная из них - запоминание на каждой последующей странице данных, собранных на предыдущих страницах. Здесь вы узнали, что для запоминания на Web-страницах информации, которую не в состоянии запомнить сервер,, используются скрытые поля. Вопросы и ответы Почему формы, рассмотренные на этом занятии, эстетически некрасивы? Формы, приведенные в этой книге, довольно просты, иногда схематичны, но кому-то они могут показаться неэстетичными. Цель книги - научить читателя программированию на Реп и созданию CGI-программ, а не искусству ПТМЬ-дизайна. Действительно, большинство приведенных здесь HTML-фрагментов не отвечают обшепринятым стандартам и не доведены до конца. Во многих из них отсутствуют дескрипторы <№Ш>, <HTML>, заголовки и т.п. Надеюсь, вы внесете соответствующие коррективы в соответствии с вашими потребностями. Как упоминалось выше, если хотите внести изюминку в свои формы - исследуйте просторы Web и найдите на них те формы, которые отвечают вашим вкусам. Просмотрев исходный код понравившейся формы, можно понять идею ее построения, а затем воспользоваться ею для создания собственных форм. Что означает такое сообщение об ошибке: Cant find string terminator "XXXX" anywhere before at Эта ошибка вызвана присутствием в вашей программе открывающих кавычек и отсутствием закрывающих. При использовании встроенных документов это сообщение означает, что не найдено слово, использованное в качестве признака конца документа. Формат встроенных документов имеет следующий вид: print «MARK; текст текст текст HARK Начальное и конечное слово встроенного документа - в данном случае это слово МЖ - должно быть одним и тем же. Причем завершающему слову не должно ничего ни предшествовать, ни следовать за ним - оно должно быть единственным на строке. Текстовые редакторы MS-DOS и Windows иногда не помещают символ конца строки после последней строки программы. Если у вас завершение встроенного документа совпадает с концом файла, попробуйте после этого документа поместить пустую строку. Семинар Контрольные вопросы 1. Чтобы ваша программа помнила длинные многостраничные Web-транзакции, необходимо использовать: а) базы данных и файлы cookie; б) скрытые поля HTML-формы; в) определенную комбинацию скрытых полей HTML-формы, файлов cookie и базы данных. 2. Использование дескриптора HTML без атрибута action: а) не будет работать; б) заставит сервер использовать для обработки данных формы COI-программу, которая первоначально сгенерировала эту страницу; в) заставит сервер перезагрузить текущую страницу. 3 Представленная на этом занятии COI-программа сбора информации содержит небольшую ошибку. В чем она Заключается? а) оператор prin ОР; в листинге 19.2 имеет неверный синтаксис; б) HTML-код не завершен, поскольку в нем отсутствует дескриптор <HEAD>; в) программа сбора информации не выводит никаких результатов. Ответы 1 Правильным вариантом будет либо б), либо в). Можно использовать только скрытые поля или только файлы cookie. Использование только базы данных не даст нужного результата. 2. Правильный ответ - вариант б). При перезагрузке текущей страницы булуг очищены все поля текущей формы. Если в дескрипторе отсутствует ат- рибуг action, для обработки данных формы сервер использует URL текущей страницы, т.е. UR шенария, который вывел первую страницу формы. 3 Правильный ответ - вариант б). Оператор print «EOP; имеет вполне допустимый синтаксис и определяет начало встроенного документа. Вариант в) не подходит, поскольку в программе это и не предусмотрено (см. раздел "Упражнения"). Упражнения Напишите короткую для отображения результатов работы программы сбора данных. Возможно, следует построить таблицу, отображающую результаты следующим образом.
Для усложнения задачи напищите CGI-программу, в которой подводятся итоги по результатам опроса и выводятся, например, в. таком виде: Любители кошек/собак: кошек 40% собак 45% ни то ни другое 15% Имеют животное дома: Сова? кошек 20% да 35% собак нет 40% рыбок 30% никого 35% 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 [ 94 ] 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |