Macromedia Dreamweaver

как создать свой сайт

17. Серверные приложения

Получение данных от другой Web-страницы

Мы выяснили, как передать данные, введенные в форму, в таблицу, создав, таким образом, новую запись. Но не всегда данные, переданные с другой страницы, нужно сохранять в базе. Иногда их необходимо обработать на другой странице, нигде не сохраняя.

Давайте сделаем следующее. Создадим небольшую статичную Web-страничку с тремя гиперссылками, направляющими посетителя па страницу Guestbook_table.asp и заставляющими последнюю показать только записи, удовлетворяющие определенному условию. Пусть первая из них будет показывать записи, значения поля sign которых равно 1, вторая — записи с полем sign, равным 2, третья — 3. Назовем эту страницу Selector.htm.

Интернет-адрес первой гиперссылки страницы Selector.htm будет таков:

Guestbook_table.asp?sign=1

Здесь мы передаем методом GET странице Guestbook_table.asp параметр sign, равный 1. (Вспомните главу 15, где описывались оба метода передачи данных.) Соответственно, адреса других гиперссылок будут отличаться от этого только значением параметра sign.

А для того чтобы отобрать нужные записи из набора данных Guestbook страницы Guestbook_table.asp, мы используем фильтр, сравнивающий значение поля sign со значением параметра sign, переданного нам от страницы Selector.htm. Как видите, все очень просто и довольно наглядно.

Нет смысла подробно описывать, как создается страница Selector.htm — это вы уже знаете. Вместо этого сосредоточимся на странице Guestbook_table.asp и фильтре, отбирающем записи из таблиц в набор. Откройте данную страницу, если вы ее уже закрыли. И переключитесь в панель Bindings.

Для того чтобы получить данные от другой Web-страницы, нам нужно создать параметр гиперссылки. Этот параметр впоследствии примет значение, переданное от другой страницы методом GET. А уж принятое им значение мы сможем использовать где угодно.

Чтобы создать параметр гиперссылки, выберите в меню кнопки "плюс" панели Bindings пункт Request Variable. После этого на экране появится диалоговое окно Request Variable.

В раскрывающемся списке Туре выберите пункт Request.QueryString, а в поле ввода Name введите имя создаваемого параметра (в нашем случае -sign). Затем нажмите кнопку ОК. После этого в списке панели Bindings появится новая ветвь Request с единственным пунктом QueryString.sign.

Внимание!

Вы не сможете изменить созданный вами параметр гиперссылки, так что вводите данные внимательно. Если вы все же ошиблись, удалите неверно заданный параметр и создайте его заново.

Если же вы передаете данные методом POST, вам будет нужно создать параметр формы. Для этого выберите в меню кнопки "плюс" все тот же пункт Request Variable, но в раскрывающемся списке Туре диалогового окна Request Variable выберите пункт Request.Form.

Создание фильтров

А теперь можно приступить к созданию фильтра, отбирающего записи из таблицы в набор.

Помните, как мы создали сложный набор данных? Если не помните, рассмотрим код SQL-запроса, созданного нами:

SELECT Content, Desc, Color FROM Guestbook, Signs WHERE Sign=ID

Ключевое слово WHERE языка SQL задает условие, согласно которому из таблицы будут извлекаться записи. В приведенном выше примере мы уже фактически создали условие, отбирающее только те записи таблицы Guestbook, для которых в таблице signs имеется "пара". Причем "пары" мы отбирали по значениям поля sign таблицы Guestbook и поля ID таблицы signs. Такие условия называются условиями связи таблиц.

Фильтром же называется условие отбора записей. Это условие используется не для связи таблиц, а для отбора записей из таблицы. Например, в приве денном ниже SQL-запросе используется именно условие отбора записей, иначе говоря, фильтр:

SELECT Content FROM Guestbook WHERE Sign=2

Этот запрос создаст набор данных, включающий только те записи таблицы Guestbook, поля sign которых содержат значение 2 ("Нейтрально").

Чтобы создать фильтр, нам придется добавить условие отбора записей к уже существующему условию связи таблиц. Это совсем просто. Вызовите диалоговое окно Recordset для нашего набора данных Guestbook. Если оно отобразилось в обычном виде, щелкните кнопку Advanced, чтобы переключить его в расширенный вид. И посмотрите на содержимое поля ввода SQL.

Итак, нам нужно добавить в SQL-запрос Новое условие. Мы будем сравнивать значение поля sign и...

Но с чем мы его будем сравнивать?

Ах, да, с параметром sign, переданным страницей Selector.htm. Но как его сюда ввести?

Очень просто. Для этого нам понадобится создать переменную SQL-запроса, представляющую некий параметр, полученный от другой Web-страницы или в результате каких-то вычислений. И в этом нам поможет список Variables диалогового окна Recordset и относящиеся к нему элементы управления.

Нажмите кнопку со знаком "плюс". В списке появится новая строка. Щелкните по этой строке в районе колонки Name (имя создаваемой переменной) и введите это имя, в нашем случае — sign. После этого щелкните в районе колонки Default Value (значение переменной по умолчанию, присваиваемое ей изначально) и введите, скажем, 2 (т. е. по умолчанию будут выводиться только "нейтральные" записи). Теперь останется лишь ввести в колонку Run-time Value выражение, задающее истинное значение этой переменной. В нашем случае это будет следующий код:

Request.QueryString("sign")

Он извлекает из строки запроса, переданной методом GET, параметр sign. Если же вы передаете параметры методом POST, код будет несколько иным:

Request.Form("sign")

Вот и все. Мы создали переменную SQL-запроса и теперь можем ее использовать.

Откройте в списке Database Items ветви Tables и Guestbook и выберите пункт Sign. Поставьте текстовый курсор в поле ввода SQL после текста

"WHERE Sign=ID" и нажмите кнопку WHERE. Содержимое поля ввода SQL станет таким:

SELECT Content, Desc, Color FROM Guestbook, Signs WHERE Sign= ID AND Sign

Поставьте текстовый курсор после текста "AND Sign" и введите вручную текст =sign. Таким образом, окончательный SQL-запрос будет выглядеть так:

SELECT Content, Desc, Color FROM Guestbook, Signs WHERE Sign=ID AND Sign=sign

Все, наш новый запрос создан. Можете нажать кнопку ОК. Перед этим, однако, лучше нажать кнопку Test, чтобы проверить правильность задания запроса. Так, на всякий случай.

Теперь сохраните страницу Guestbook_table.asp и опубликуйте ее на Web-сервере вместе со страницей Selector.htm. После этого откройте в Web-обозревателе страницу Selector.htm, набрав в строке адреса следующее:

http://localhost/HTMLs/Selector.htm

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

Необязательные области серверной страницы

Кроме повторяющихся областей, Dreamweaver поддерживает создание также областей необязательных. Вы, конечно, помните, что говорилось о необязательных областях в главе 9, но на всякий случай давайте повторим это. Необязательная область создается на серверной странице и может присутствовать или не присутствовать в зависимости от выполнения или невыполнения какого-либо условия. Все же вам стоит прочитать еще раз главу 9, где о необязательных областях говорилось более подробно.

Чтобы создать необязательную область, сначала выделите элементы ртрани-цы, которые должны стать ее содержимым. После этого выберите в подменю Show Region меню кнопки "плюс" панели Server Behaviors один из пунктов. Всего этих пунктов шесть:

Давайте поместим повторяющуюся область, навигатор и строку статуса набора данных, т. е. все содержимое страницы, в необязательную область, отображаемую, если набор данных содержит записи. Для этого выделим все, что находится на странице, и выберем пункт Show Region If Recordset Is Not Empty. После этого на экране появится диалоговое окно Show Region If Recordset Is Not Empty.

Единственное, что вам нужно сделать, — это выбрать в раскрывающемся списке Recordset нужный набор данных. И нажать кнопку ОК.

Теперь можете проверить измененную страницу Guestbook_table.asp. Переключитесь в режим показа "живых" данных или откройте ее в Web-обозревателе. Поскольку набор данных Guestbook содержит данные, содержимое страницы (оно же — содержимое необязательной области) будет отображено.

Теперь давайте создадим еще одну необязательную область, но отображаемую, если набор данных не имеет записей. Поместим в эту область текст "Гостевая книга не содержит записей". Это обычная практика в Web-дизайне: предупредить посетителя о том, что какой-то набор данных пуст.

Поместим текстовый курсор после созданной ранее необязательной области и нажмем клавишу <Enter>. В новом текстовом абзаце наберем текст "Гос тевая книга не содержит записей и выделим его целиком, для чего щелкнем по соответствующей кнопке секции тегов.

Далее выберем в подменю Show Region меню кнопки "плюс" панели Server Behaviors пункт Show Region If Recordset Is Empty. На экране появится диалоговое окно Show Region If Recordset Is Empty, аналогичное уже знакомому вам окну Show Region If Recordset Is Not Empty. Выберем в раскрывающемся списке Recordset нужный набор данных и нажмем кнопку ОК.

Также можно поместить гиперссылки, составляющие навигатор, в необязательные области, отображаемые и скрываемые в зависимости от того, является ли текущая запись первой или последней. Сделайте это сами — это будет хорошей практикой.

На этом рассказ о создании простейших серверных страниц можно считать почти законченным. Почти потому, что нам нужно рассмотреть еще одну возможность, предлагаемую Dreamweaver, — быстрое создание серверных страниц.

Быстрое создание серверных страниц

Очень часто бывает просто необходимо быстренько сляпать какую-либо серверную страницу: поместить в нее форму для ввода данных, навигатор, строку статуса и т. п. Специально для таких "пожарных" случаев Dreamweaver предлагает возможность быстрого создания серверных страниц. Воспользовавшись пунктами подменю Application Objects меню Insert или соответствующими им кнопками вкладки Application панели объектов и введя нужные данные в появившихся на экране диалоговых окнах, вы можете быстро создать различные элементы, присущие серверным страницам. Согласитесь — это неплохой выход для малоопытных программистов и торопыг.

Вы спросите, почему автор описал эту замечательную возможность в паре абзацев, да вдобавок в самом конце книги? Дело в том, что задача автора: научить вас серверному программированию в среде Dreamweaver. А для этого вам нужно самим "почувствовать" в руках если не сам программный код, то хотя бы поведения Dreamweaver и элементы страниц, к которым они привязаны. Вы должны сами знать, как что работает. Кроме того, настоящий творец все делает своими руками. (Можете считать это шуткой, но это правда.)

Хотя не в силах автора запретить вам пользоваться возможностями быстрого создания серверных страниц. Но только если действительно нет времени (или желания) творить.

Что дальше?

А дальше продолжим занятия серверным программированием.

В этой главе мы научились создавать простейшие серверные страницы. А в следующей — и последней — главе настоящей книги мы узнаем, как создаются простейшие интерактивные сайты. Мы узнаем, как объединить вместе серверные страницы, обрабатывающие данные из базы. А также изучим некоторые основные понятия, не затронутые в этой главе.

Ну, так что? Вперед, к интерактивности!

Далее >>

Учебник Dreamweaver

к полному содержанию...
Создание сайтов Работа с Dreamweaver Текст Графика, звуки Таблицы Работа с сайтом
Фреймы Табличный дизайн Шаблоны Каскадные таблицы стилей Слои Анимация
Сценарии Метатеги Серверное программирование Формы Серверные приложения
Создание приложений Соединение с базой данных Источник данных ODBC Регистрация базы данных Простые серверные страницы Сложные серверные страницы Создание набора данных Отображение данных Создание навигатора Строка статуса набора данных Просмотр нескольких записей Привязка элементов к данным Сложные наборы данных Динамические атрибуты Данные с другой Web-страницы Создание фильтров Области серверной страницы Быстрое создание серверных страниц
Интерактивные сайты

Справочник HTML-тегов

к полному содержанию...
документ текст гиперссылки скрипты списки
объекты таблицы формы графика,звук фреймы форматирование
Заработай на своем сайте
на главную