Смекни!
smekni.com

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

Вы спросите, а как же разграничение доступа? Где страница входа на сайт? Это успеется. Сначала сделаем основные страницы, отображающие и изменяющие информацию, хранящуюся в нашей базе, а потом займемся безопасностью. На данном этапе ей можно пренебречь.

Откроем Access и создадим базу данных под названием Library.mdb. В ней создадим таблицу categories с полями ID (счетчик) и Name (текстовое, 30 знаков). Первое поле послужит нам ключевым, а во втором, как вы уже поняли, будут храниться имена категорий. После этого введем в эту таблицу три записи: "Умные", "Нейтральные" и "Глупые".

Далее создадим таблицу, где будут храниться наши высказывания. Эта таблица будет содержать следующие поля:

· ID — счетчик;

· Content — текст высказывания (Memo-поле);

· category — категория высказывания (длинное целое, связанное с полем ID таблицы Categories).

Назовем эту таблицу sentences. Введем какую-нибудь запись для отладочных целей, не обязательно осмысленную. И закроем Access — больше он нам не понадобится.

Вы уже знаете, как создается источник данных ODBC. Если не знаете, обратитесь к главе 17, где это подробно описано. Наш новый источник данных будет называться Library и предоставлять доступ к базе данных Library.mdb.

После этого создадим новую папку Sample4. В ней будут находиться файлы нашего нового сайта Sample site 4. В папке Sample4 создадим вложенную папку Admin, в которой будут храниться административные страницы сайта. Зарегистрируем наш новый сайт в Dreamweaver, задав те же данные, что и для сайта Sample site 1 в главе 17. Зарегистрируем базу данных Library.mdb в Dreamweaver, воспользовавшись только что созданным источником Library. На этом подготовительные действия закончились.

Создав таблицу, приступим к созданию серверной страницы. Назовем ее так же, как таблицу, — Sentences.asp. Введем какой-нибудь пояснительный текст, если вдруг у нас появится такое желание. И сохраним ее в папке Admin, вложенной в корневую папку нашего сайта.

После этого создадим набор записей sentences, извлекающий данные из только что созданной таблицы. Причем этот набор будет сложным: он свяжет вместе таблицы sentences и Categories, "заимствуя" из первой таблицы поля ID и Content, а из второй — поле Name. Связь будет осуществляться по полю Category таблицы Sentences И ПОЛЮ ID табЛИЦЫ Categories. Создайте этот набор записей, а в случае затруднений справьтесь в главе 17. Не задавайте для этого набора ни фильтра, ни сортировки. Текст SQL-запроса должен быть таким:

SELECT Sentences.ID, Content, Name FROM Sentences, Categories WHERE Sentences.Category=Categories.ID

Запись вида "Sentences.ID" означает, что мы выбираем значения поля ID таблицы Sentences.

Поскольку мы будем отображать одновременно два значения, будет лучше создать для этого таблицу. Эта таблица должна содержать две строки и четыре столбца. В первой строке будет находиться "шапка", а во второй -собственно содержимое. (Как вы поняли, вторую строку придется поместить в повторяющуюся область.) В первом столбце таблицы будет отображаться содержание высказывания, а во втором — категория (в смысле, название категории), а последние два столбца мы пока оставим пустыми. Создайте такую таблицу и отформатируйте, как хотите.

Теперь поместите в первую ячейку второй строки этой таблицы динамический текст, привязанный к полю Content набора записей, а во вторую ячейку — динамический текст, привязанный к полю Name. Далее выделите всю вторую строку, щелкнув по соответствующей кнопке секции тегов, и создайте "вокруг" нее повторяющуюся область, связанную с набором данных sentences. Задайте количество одновременно отображаемых записей равным двадцати.

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

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

Вот и все. Наша страница готова. Можете проверить ее, переключив Dreamweaver в режим показа "живых" данных или загрузив страницу в Web-обозревателе.

К несчастью, в таблице Sentences находится только одна запись. Но мы сейчас это исправим.

Страница добавления записи

Давайте подумаем, что нам нужно сделать теперь, когда страница списка высказываний готова и работает?

Таблица sentences, как вы уже заметили, девственно-пуста. (Отладочная запись, введенная нами в Access, не считается.) Нужно заполнить ее данными. А для этого нам необходимо создать страницу добавления записи.

Создайте новую серверную страницу, введите в нее поясняющий текст и сохраните опять же в папке Admin под именем AddSentence.asp. Создайте в этой странице форму и назовите ее sentence. Внутри формы создайте область редактирования и назовите ее content, не забудьте также о кнопке отправки данных.

Что-то мы забыли... Ах, да! Нужно еще поместить в форму раскрывающийся список category и привязать его к набору записей categories. Но перед этим необходимо создать сам набор записей Categories, из которого будут взяты пункты списка Category. Задайте выборку всех записей таблицы categories. После этого задайте сортировку записей по полю Name, для чего выберите это поле в раскрывающемся списке Sort диалогового окна Recordset (см. рис. 17.15). А раскрывающийся список, расположенный правее, позволит вам задать порядок сортировки записей: по возрастанию (пункт Ascending) или по убыванию (пункт Descending). Задав параметры набора данных, нажмите кнопку ОК.

Теперь можно создать поведение insert Record. (Как это делается, было описано в главе 17.) Привяжите область редактирования content к полю

Content таблицы Sentences,а списокCategory — к полю Category. В качестве страницы, на которую будет осуществлен переход после добавления записи, задайте Sentences.asp.

Сохраните готовую страницу AddSentence.asp. После этого откройте страницу Sentences.asp и поместите в нее гиперссылку, указывающую на страницу AddSentence.asp. Вот и все.

Теперь можете проверить созданную нами страницу добавления записи. Опубликуйте сайт на Web-сервере, откройте страницу Sentences.asp в Web-обозревателе и щелкните по гиперссылке "Добавить". Внесите в таблицу sentences несколько записей. Они нам пригодятся для отладки.

Страница изменения записи

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

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

Сейчас мы добавим на страницу Sentences.asp гиперссылку, ведущую на страницу изменения записи. Откройте страницу, поместите текстовый курсор в третью ячейку второй строки таблицы (теперь вы поняли, зачем она нужна?) и наберите в ней слово "Изменить". Далее выделите это слово и наберите в поле ввода интернет-адреса редактора свойств такой текст:

EditSentence.asp?ID=

Далее переключитесь в режим отображения кода и перетащите из панели Bindings в место, находящееся точно после знака "=", поле ID набора записей. Интернет-адрес гиперссылки примет такой вид:

EditSentence.asp?ID=<%=(Sentences.Fields.Item("ID").Value)%>

Давайте выясним, что это значит. Код

Sentences.Fields.Item("ID").Value

извлекает значение поля ID данной записи набора. Далее это значение помещается в гиперссылку, которая принимает вид:

EditSentence.аsр?ID=<значение поля ID">

и передается странице EditSentences.asp в качестве значения параметра гиперссылки ID. Поскольку значение поля ID уникально для каждой записи набора (поле ID — счетчик записей, как вы помните), страница EditSentences.asp может однозначно идентифицировать запись, которую вы хотите изменить, и заполнить значениями ее полей элементы управления формы, т. е. подготовить запись к правке.

Теперь сохраните страницу Sentences.asp и откройте только что созданную нами страницу EditSentence.asp. Пора заняться ей.

Для того чтобы отредактировать запись, нам понадобится форма. Создайте ее по аналогии со страницей AddSentence.asp. Никаких особенностей она иметь не будет, поэтому вы можете просто скопировать уже готовую форму со страницы добавления новой записи и вставить ее в страницу EditSentence.asp. Но перед этим создайте на этой странице набор данных categories, также по аналогии со страницей AddSentence.asp.

Следующий шаг — создание набора записей, из которого будет взята запись для заполнения элементов управления созданной нами формы. Этот набор должен содержать одну-единственную запись, поэтому нам придется задать фильтр, отбирающий нужную запись. Она будет выбрана по значению поля счетчика ID таблицы Sentences, которое должно равняться значению параметра гиперссылки ID, переданному от страницы Sentences.asp (см. выше).

Чтобы создать фильтр, выберите название поля ID в раскрывающемся списке Filter диалогового окна Recordset, а в раскрывающемся списке, расположенном правее, — пункт = (равенство значений поля и фильтра). Далее в списке, расположенном ниже, выберите пункт URL Parameter (параметр, переданный методом GET), а в поле ввода, расположенном ниже и правее, введите имя этого параметра — ID.

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

Сначала выделите область редактирования и найдите в редакторе свойств кнопку с изображением молнии — она находится правее области редактирования Init Val. Щелкните по этой кнопке. На экране появится диалоговое окно Dynamic Data; выберите в иерархическом списке Field пункт Content, соответствующий одноименному полю, и нажмите кнопку ОК. Все, теперь область редактирования получит значение из поля Content набора записей.