Смекни!
smekni.com

Учебник Macromedia Dreamweaver (стр. 127 из 135)

В раскрывающемся списке Recordset выберите набор данных, из которого будут извлекаться записи.

Если вы хотите, чтобы на странице отображались все записи набора данных, включите переключатель All Records группы Show. Это стоит делать тогда, когда вы уверены, что записей в вашем наборе не очень много, или если содержимое их невелико по размеру. В противном случае лучше всего показывать содержимое набора данных по частям; для этого включите верхний переключатель группы Show и введите количество одновременно отображаемых записей в поле ввода Records at a Time.

Давайте сделаем нашу страничку как можно меньше. Для этого зададим количество одновременно отображаемых записей, равное трем. Это позволит нам не вводить слишком много отладочных записей в таблицу Guestbook базы данных Guestbook.mdb.

Введя все данные, нажмите кнопку ОК. Если вы передумали создавать повторяющуюся область, нажмите кнопку Cancel.

Если теперь включить режим показа "живых" данных Dreamweaver, мы увидим следующее — см. рис. 17.8. Как видите, она "выдала" нам содержимое всех трех записей, что есть в таблице Guestbook.

Рис. 17.8. Повторяющаяся область серверной страницы при включенном режиме показа "живых" данных

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

Если хотите, вы можете создать также строку статуса для набора данных. Здесь вам понадобятся оба системных поля, отображающих количество показываемых на странице записей: [first record index] И [last record index]. Как вы помните, первое из них показывает номер первой записи, присутствующей на странице, а вторая — номер последней из показываемых записей.

Осталось сказать о параметрах повторяющейся области. Чтобы задать их, выделите нужную повторяющуюся область и посмотрите на редактор свойств.

Единственный элемент управления, который стоит здесь рассмотреть, — это поле ввода Repeat Region. В нем задается имя повторяющейся области. Остальные элементы управления знакомы вам по диалоговому окну Repeat Region.

Привязка элементов управления к данным

А сейчас мы рассмотрим еще одну очень интересную возможность — привязку элементов управления к данным. Это значит, что вы можете, скажем, заполнять списки значениями, взятыми из записей набора данных, или заимствовать оттуда же начальные значения для полей ввода. Первое, во всяком случае, очень часто бывает нужно.

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

Откроем базу данных Guestbook.mdb в Access и добавим в таблицу Guestbook еще одно поле sign. Зададим для него числовой тип. После этого создадим еще одну таблицу под названием signs, содержащую два поля: счетчик ID и текстовое Desc. В поле ID будет помещаться уникальный номер каждой записи, а в поле Desc — описание соответствующей оценки. Сделаем поле ID ключевым. После этого привяжем поле sign таблицы Guestbook к полю ID таблицы Signs.

Далее откроем таблицу signs и создадим в ней три записи: "Положительно", "Нейтрально" и "Отрицательно". Access автоматически проставит в полях ID уникальные номера этих записей. Теперь осталось открыть таблицу Guestbook и проставить в поле sign для всех записей какое-либо значение, неважно, какое. На этом подготовительные действия можно считать законченными. Закройте Access и вернитесь в Dreamweaver.

Откройте страницу AddRecord.asp. Поместите в форму новый элемент управления — раскрывающийся список sign. Вставьте его между полем ввода content и кнопкой отправки данных. И сохраните страницу.

Откуда будут браться значения для заполнения нашего списка? Правильно, из набора данных. Страница AddRecord.asp не содержит никаких наборов данных, поэтому нам нужно его создать.

Выберите в меню кнопки со знаком "плюс" панели Bindings пункт Recordset (Query). В диалоговом окне Recordset, которое появится на экране после этого, задайте имя создаваемого набора данных signs, выберите базу данных Guestbook и таблицу signs. После нажатия кнопки ОК набор данных будет создан.

Теперь выделите только что созданный нами раскрывающийся список signs и нажмите кнопку Dynamic, которая появится в редакторе свойств (рис. 17.9). На экране появится диалоговое окно Dynamic List/Menu, показанное на рис. 17.10.

Рис. 17.9. Кнопка Dynamic редактора свойств

Рис. 17.10. Диалоговое окно Dynamic List/Menu

В раскрывающемся списке Menu выбирается нужный список. Но, поскольку мы его уже выделили на форме, этот список недоступен.

В раскрывающемся списке Options From Recordset выбирается набор данных, из которого будут браться значения для заполнения выделенного списка. Пункт None позволит вам "отвязать" список от наборов данных, т. е. создать обычный список с фиксированным набором пунктов. Поле набора данных, из которого будут браться значения для создания пунктов, выбирается в раскрывающемся списке Labels, а поле, из которого будут браться значения этих пунктов, — в списке Values.

Выберите в списке Options From Recordset набор данных signs, в списке Labels — поле Desc, а в списке Values — поле ID. И продолжим разговор об окне Dynamic List/Menu.

Если вы хотите, чтобы при открытии страницы какой-то пункт списка отображался изначально выбранным, воспользуйтесь полем ввода Select Value Equal To. В него вводится значение пункта, который должен быть изначально выбранным. В нашем случае это число 1 — значение поля ID первой записи таблицы signs.

Если вы хотите поместить в список свои собственные пункты, не взятые из набора данных (статические), воспользуйтесь списком Static Options. Этот список состоит из двух колонок: Value (значение пункта) и Label (название пункта). Чтобы ввести в этот список новый пункт, нажмите кнопку со знаком "плюс", и пункт будет добавлен. Поочередно щелкните по значениям, находящимся в обеих колонках, введите нужный текст и не забудьте нажать клавишу <Enter>. Точно так же вы можете изменить необходимое значение в колонке любого уже созданного пункта.

Если вы хотите удалить ненужный пункт из этого списка, выберите его и нажмите кнопку со знаком "минус". А кнопки вверх и вниз, позволят вам переместить выбранный пункт соответственно выше или ниже на одну позицию.

Введя все данные, нажмите кнопку ОК. Вот и все.

Точнее, не все. Нам еще нужно изменить параметры поведения insert Record так, чтобы значение выбранного в списке sign пункта помещалось в поле sign таблицы Guestbook. Для этого откройте панель Server Behaviors и дважды щелкните по пункту Insert Record (from "AddRecord"), после чего на экране появится уже знакомое вам диалоговое окно Insert Record. Выберите в описке Form Elements пункт Sign <ignore>, после чего выберите в раскрывающемся списке Column пункт Sign, а в раскрывающемся списке Submit As — пункт Numeric (впрочем, сам Dreamweaver автоматически выберет этот пункт). И, конечно, нажмите кнопку ОК.

Вот теперь действительно все. Можете проверить страницу в действии.

Создание сложных наборов данных

Осталось изменить страницу Guestbook_table.asp так, чтобы она отображала не только содержимое поля content, но и содержимое поля sign. Давайте сделаем это и попутно изучим построение сложных SQL-запросов и создание сложных наборов данных.

На первый взгляд, задача, стоящая перед нами, очень проста. В самом деле, мы уже знаем, как создать динамический текст и привязать его к полю набора данных. Мы уже, собственно, выполнили это, когда делали страницы Guestbook.asp и Guestbook_table.asp. Теперь же нам ничего не стоит добавить в повторяющуюся область последней страницы новый динамический текст, привязанный к полю Sign.

Давайте так и сделаем. И что получится в результате? А вот что.

Когда мы откроем доработанную страницу Guestbook_table.asp в Web-обозревателе, то увидим, что вместо слов "Положительно", "Отрицательно" или "Нейтрально" стоят цифры от 1 до 3. Почему? Да потому, что созданное нами поле sign имеет числовой тип, и именно число, находящееся в нем, отображается на странице. Но мы-то хотим увидеть слова, а не цифры! Что делать?

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

Откройте страницу Guestbook_table.asp и переключитесь на панель Bindings. Дважды щелкните по пункту Recordset (Guestbook), представляющему созданный нами ранее простой набор данных. (Простым набором данных называется тот, который извлекает данные из одной таблицы.) На экране появится диалоговое окно Recordset. Щелкните по кнопке Advanced — и это окно изменит свой вид (рис. 17.11).

Рис. 17.11. Диалоговое окно Recordset (расширенное)

В этом диалоговом окне нам понадобятся поле ввода SQL, список Database Items и кнопки SELECT, WHERE и ORDER BY. Многоколоночный список Variables и все относящиеся к нему кнопки мы пока трогать не будем.

В поле ввода SQL, как вы поняли, вводится текст SQL-запроса. В настоящее время он таков:

SELECT * FROM Guestbook

Выше мы уже рассмотрели этот запрос по частям, поэтому не будем здесь повторяться. Напомним только, что этот запрос извлекает все поля всех записей из таблицы Guestbook.