Теория и практика построения баз данных (1088289), страница 127
Текст из файла (страница 127)
Мочейехт 1оорЖ> </ТВООУ> <ТГООТ></ТГООТ> </ТАВСЕ> </ВОВУ> <(НТМЕ> Первая часть серверного сценария имеет ту же самую функцию, что и в листинге 15.1. Единственное различие состоит в том, что обращение происходит к источнику данных Огас!е. Переменная чаг5т)! задается с помощью переменной чагтаЫейапте. Амперсанд (е ) — оператор, соединяющий две строки. Результатом этого выражения является следующая строка: 5ЕЕЕСТ * ГЙОМ С05ТОМЕЙ Примеры использования АОО 587 586 Глава 15. ООВС, ОСЕ ОВ, АОО и АВР Заметьте также, что имя таблицы включено в заголовок НТМ(.-таблицы с помощью кода САРТ10й «В %=чагТаЫейапге% /В ГСАРТ10й>. Код между символами % приведет к тому, что в заголовок НТМТ;таблицы будет вставлено значение переменной чагТаЫенапге.
Следующий фрагмент серверного сценария обрабатывает коллекцию аейз. Переменной чагг1цпгС011 присваивается значение свойства Сорос коллекции Р!е(бз, и затем элементы коллекции перебираются в цикле. Обратите внилгангге, каким образом НТМЕ разбросан в серверном коде (илп серверный код разбросан в НТМ(. — как вам больше нравится).
Ранее в переменную чагКеу1тапге бьио записано имя суррогатного ключа, н цикл проверяет, не совпадает ли имя текущего столбца с именем суррогатного ключа. Если нет, генерируется НТМ1.-код, создающий заголовок таблицы. Аналогичный цикл используется на следующей странице для заполнения таблицы значениями из набора записей. Преимущество этой страницы заключается в том, что она может обрабатывать любую таблицу, а не только какую-то конкретную. Фактически, если использовать введенную ранее терминологию, мы можем сказать, что страница в листинге 15.2 является абстракцией страницы из листинга 15.1. Результаты обработки этой страницы показаны на рпс, 15.10.
Столбец С05ТОМЕл10 не показан, как мы и ожидали. Рис. 1б.10. Результат обработки АЗР-страницы Сцз!огпегОгасГе.авр Пример 3 — чтение любой таблицы На рис. 15.11, а показана форма для ввода данных, куда клиент может ввести имя таблицы, которую следчет отобразить. (Более удачным было бы решение, нрп котором клиенту выдавался бы раскрывающийся список с возможными вариантамн выбора, но зто уводит нас от обсуждения АОО.) Пользователь ввел в форму имя агг1 зт.
Предположим теперь, что когда пользователь щелкает мышью на кнопке 5ггоиг ТаЫе (Показать таблицу), форма должна запустить сценарий на сервере, который отобразит содержимое таблицы АйТ15Т в том же сеансе браузера. Допус- тим также, что суррогатный ключ отображать не нужно. Желаемые результаты показаны на рнс. 15.11, б. 4 1Й: У *;Ф;: ~",'ф:ф; 0("',,фтттка гГВгйттсггтг)гг;ЬЗ1гаРЫнг У:...,г, ) *арте вп нгрчл ь ьм кири* рьгл 'кир г и. р !тра~',,:'!.)снег",'11 б Рис.
15.11. Отображение содержимого произвольной таблицы: в — форма для ввода имени таблицы; б — вид таблицы 888 Глава 15. 00ВС, ОСЕ 0В, А00 и АЯР Примеры использования А00 889 Для выполнения этой задачи требуются две АВР-страницьс. Первая, показанная в листинге 15.3, представляет собой НТМ[.-страницу, содержащую тег ГОРМ: <ГОРМ МЕТНОО="розЫ АСТ!ОИ-пВепега1таЫ е.азр"> Этот тег определяет на странице раздел формы; данный раздел будет содержать вводимые данные. В данной форме вводится только. один элемент данных— имя таблицы. Метод ровс — это НТМ[.-процесс, посредством которого данные из формы [в нашем случае имя таблицы агС(вс) передаются АВР-серверу и помещаются в объект под названием Гога). Альтернативным методом является Вес, при котором значения данных передаются в качестве параметров.
Это различие здесь для нас не слишком важно. Вторым параметром тета ЕОРМ является АСТ10М, значение которого — строка «белеса!ТаЫе.авр». Этот параметр предписывает ПЯ по получении отклика от формы передать файл Оепега!ТаЫе.азр на обработку АВР- процессору. Значения из формы будут помещены в объект Гопп. Листинг 15.3.
Код, выводящий содержимое произвольной таблицы 1/)еисГ))с)ОеТаЫез.аэр <НТМ[> <НЕАО> <метА нттР-е001ч="соптепс-туре" сОмтемт-"техт/ьса);сьагзеь-и1поонз-1252"> <Т!Т[Е>таЫе 01вр1ау Гога</Т1Т[Е> </НЕАО> <ВООУ> <ГОРМ МЕТНОО="резь" АСТ10Ис "Велега1ТаЫе. азр" > <Р><5ТКОИБ ГОНТ со1сг=рцгр)е Гасе-"" з)зе-5>впбзр: амбар; ТаЫе 01зр)ау 5е!ест(оп Еога</ЕОМТ /5ТРОИВ> <Р></Р> <Р>йпбзр;</Р> <Р><ГОНТ зту)е="ВАСКВРООИО-СОСОК: ()т/ГГГГ' ГОНТ со)ог-Гогезтсгееп Гасе-"" зту)е="ВАСКВКООИО-СОСОК: ()ТТТГГГ'>Еп1ег таЫейаае: /ЕОМт апьзр;апь р;апьвр,апьзр дпьзр, /ЕОИт /Р <Р></Р> <Р><ГОМт зьу) е-"ВАСКОРООИО-СОСОК ()ТТГГГТГГ'></ГОНТ>дпбзр; <1МРОТ 1с)=сехс1 паае=сех(1></Р> <Р><ГОИТ вту1е="ВАСКВРООИО-СОСОК: ))ттгт/Г'> <1ИРОТ 10-зцЫпзс) паае-зоба)т) суре=алба












