Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

 
liveinternet.ru: показано количество просмотров и посетителей

Библиотека :: Компьютеры и Программирование :: Начинаем изучать MySQL
<<-[Весь Текст]
Страница: из 157
 <<-
 
* Добавлять в базу данных новый предмет.
* Изменять параметры предмета в базе данных.
Используя мощь Perl и mSQL, можно без труда объединить все эти функции в одном 
файле, subject.cgi. Для каждой из операций мы создадим свою функцию. 
Центральной частью программы будет своего рода коммутатор, распределяющий 
поступающие запросы по соответствующим функциям. Сами операции мы опишем 
позднее.
#Выбор нужной части сценария осуществляется в зависимости
# от параметра 'action'.
# Если 'action' не задан, вызывается функция defaultQ.
&default if not param('action');
# Этот прием из Camel 2 имитирует переключатель 'switch' в языке С. 
foreach[A04] (param('action')) {
/view/ and do { Sview; last; };
/add$/ and do { &add; last; }; 
/add2/ and do { Sadd2; last; }; 
/add3/ and do { &add3; last; }; 
/add4/ and do { &add4; last; }; 
/schange$/ and do { &schange; last; }; 
/schange2/ and do { &schange2; last; }; 
/lchange$/ and do { &lchange; last; };
/Ichange2/ and do { &lchange2; last; };
/IchangeS/ and do { &lchange3; last; }; 
/delete/ and do { Sdelete; last; };
&default; }
Пункты «add», «schange» и «Ichange» должны иметь завершающий «$», чтобы не быть 
спутанными со сходными. Если бы не было «$», то «add» соответствовал бы также 
add2, add3 и add4. Альтернативный прием - поместить «add», «schange» и 
«Ichange» после всех остальных функций, чтобы вызываться при отсутствии 
совпадений с предыдущими пунктами. Однако если впоследствии добавятся другие 
пункты, могут возникнуть ошибки. Третий способ - полностью устранить 
неоднозначность, используя /^view$/, /*add$/ и т. д. При этом придется ввести 
несколько больше символов, но возможность ошибки будет полностью устранена.
Остается лишь проработать детали, реализовав каждую функцию.
Функция default выводит исходную форму, которую видит пользователь, позволяющую 
ему выбрать тип операции. Эта функция вызывается, если CGI-программа вызывается 
без параметров, например, как http://www.myserver.com/teach/subject.cgi, или 
если параметр ACTION не соответствует ни одной из существующих функций. Можно 
было бы также создать функцию, выводящую сообщение об ошибке, если параметр 
ACTION неизвестен.
sub default {
print header, start_html('title'=>'Subjects', 'BGCOLOR'=>'white'):
print «END_OF_HTML; 

Предметы

<р>Выберите операцию и предмет (если это допустимо).

END_OF_HTML # См. ниже 'sub print_subjects'. &print_subjects; print «END_OF_HTML;

HTML } Основных операций пять: «view» (просмотр), «add» (добавление), «schange» (изменение данных о предмете), «Ichange» (изменить список классов по предмету) и «delete» (удалить). Например, мы подробно рассмотрим операцию «add». Она разбита на четыре отдельные функции, потому что диалог с пользователем приходится проводить до четырех раз. Для передачи данных от одной формы к другой используются скрытые переменные, пока, в конце концов, не будет создан класс. Первая функция порождает форму для ввода начальных сведений о классе, в том числе его названия, имени учителя и количества учащихся. sub add { my (%fields); foreach ('name','size','teacher') { if (param($_)) { $fields{$_} = param($_); } else { $fields{$_} = ""; } } print header, start_html('title'=>'Add a Subject','BGCOLOR'=>'white'); print «END_OF_HTML;

Add a Subject

Название предмета:

 
<<-[Весь Текст]
Страница: из 157
 <<-