Разработка динамических веб-страниц гораздо сложнее, чем создание статических документов. При разработке статических страниц применяется небольшое количество технологий – XHTML, CSS и FTP. При динамической разработке, помимо них, используется множество других, в том числе, ASP, ColdFusion, PHP, базы данных, серверы, ODBC и SQL. Кроме того, при разработке динамических веб-страниц, как известно из предыдущих упражнений, требуется больше кода.
Уроки с 4 по 7 послужили введением для проведения работы по созданию сценариев, выполняемых на стороне сервера. В них говорилось о перемещении данных между страницами, об обработке данных, о применении встроенных функций, отображении динамических данных, управлении данными при помощи условных выражений, а также о проверке правильности заполнения формы и о многом другом. Это введение в четырех уроках получило логическое завершение в уроке 7, где при интенсивном кодировании вручную было создано несколько сценариев, объединенных в одном простом приложении. Такое большое количество кода использовалось в упражнениях специально, чтобы вы могли преодолеть барьер при
Этот урок является поворотной точкой в книге. С этого момента подразумевается, что вам известны и понятны принципы и приемы пересылки данных между страницами, хотя для каждого нового сценария так же, как и раньше, будут даваться объяснения, независимо от того, пишется ли он вручную или создается при помощи модели поведения Dreamweaver. В этом и нескольких последующих уроках упор делается на работу с базами данных. Вскоре здесь будет рассказано, как подключаться к базе данных, отображать извлеченные из нее данные и создавать формы для сохранения данных в базе.
В базах данных информация хранится в таблицах, которые, на первый взгляд, напоминают электронные таблицы Excel
(рис 8.1) В базах данных информация хранится в таблицах, которые, на первый взгляд, напоминают электронные таблицы ExcelМногие не осознают всю сложность и функциональность баз данных, пока не начинают с ними работать. В этом уроке в ускоренном темпе будет описана работа с базами данных, а также приведен обзор базы, которая будет использоваться в книге. Кроме этого, будут выполнены упражнения по подключению сайта к базе данных и отображению динамически извлеченного из нее текста. Следует также подчеркнуть, что в данном уроке делается упор на теорию (по аналогии с предыдущим уроком, где основное внимание фиксировалось на коде).
Что будет изучаться:
Время выполнения
На выполнение этого урока потребуется примерно 75 мин.
Файлы урока
Исходные файлы:
Lesson08/Start/newland_tours.mdb
Lesson08/Start/newland_tours.sql (только для пользователей PHP/MySql)
Lesson08/Start/newland/index.asp
Итоговые файлы:
Lesson08/Complete/newland/index.asp
При работе с книгой, целью которой является активное обучение на основе выполнения практических упражнений, требуется действовать достаточно оперативно, – поэтому длинных абстрактных рассуждений в уроке нет. Но без уверенного знания баз данных далеко в разработке динамических веб-сайтов продвинуться не получится (хотя и экспертом быть тоже не обязательно). В этом разделе описываются основные принципы и терминология баз данных. В качестве примера задействовано офисное приложение Microsoft Access. Компоновка данных в MySQL (включая и сами данные) не отличается от Access. Однако пользовательский интерфейс в Access несколько удобнее, – так что все примеры заимствованы из этой программы. Прежде чем приступить к разработке динамических веб-сайтов, настоятельно рекомендуется потратить время на приобретение ценного опыта работы с базами данных. Для начала будет достаточно этого раздела.
Хотя внешний вид MySQL заметно отличается от Access, основные принципы остаются прежними. Некоторые из указанных ниже возможностей доступны только в Access и не имеют аналогов в MySQL. Об этом будет сказано отдельно.
Проще говоря, база данных – это система для хранения данных. Но сегодня под понятием "база данных", как правило, подразумевается гораздо больше, разумеется, если речь идет о Microsoft Access, MySQL или более мощных системах промышленного уровня, таких как Microsoft SQL Server или Oracle. Каждая из них является системой управления реляционными базами данных или реляционной СУБД (Relational
Данные базы хранятся в таблицах (tables). На первый взгляд, эти таблицы подобны электронным таблицам Excel, поскольку они тоже состоят из строк и столбцов. Столбцы называются полями (fields) и содержат определенную категорию информации. Строки именуются записями (records). В одной строке хранится один набор информации, содержащий по одному элементу данных на каждое поле. Например, в таблице tbl_customers содержатся поля для имени, адреса, города, штата, почтового индекса, номера телефона и т.д. Для каждого клиента будет создана отдельная запись.
На приведенном рисунке представлена таблица из базы данных Newland Tours, открытая в программе Access. В таблице содержится основная информация о странах. В поле countryName перечислены названия стран. В остальных полях приведены другие данные для каждой страны, при этом каждое поле включает определенный тип данных. Для редактирования таблиц достаточно щелкнуть на нужной ячейке и изменить ее содержимое нужным образом, однако удобнее использовать интерфейс, например, формы в программе Access или веб-формы.

Таблицы –не единственный тип объектов, из которых состоят базы данных. Помимо таблиц, существуют формы, отчеты и запросы. Формы (forms) применяются для добавления новых данных и изменения уже существующих. Форма для создания таблицы с информацией о странах, показанной в предыдущем примере, приводится на следующем рисунке. Формы облегчают добавление и редактирование информации, а также позволяют изменять тип введенных данных, что помогает поддерживать их однородность. Внизу формы расположены кнопки навигации. Они используются для доступа к записи, в которую требуется внести изменения, или для создания новой записи с нуля.
phpmyadmin . Однако ни один из интерфейсов MySQL не сравнится по функциональности и сложности с интерфейсом Access. Скорее всего, с хранением данных и обеспечением доступа к ним MySQL справляется лучше, чем Microsoft Access, однако интерфейс MySQL в лучшем случае можно назвать минималистским.Точно так же, как формы связаны с вводом данных в таблицы, отчеты (reports) связаны с их выводом. Ознакомиться со всей информацией, хранящейся в таблице, невозможно по той причине, что текст не умещается в полях целиком. Для отображения данных в удобном для чтения виде используются отчеты. Существует возможность включать в отчет не все данные, а только некоторые, что значительно повышает удобство использования отчетов (см. рис. вверху следующей страницы).

Для вывода в отчеты определенных данных применяются запросы (queries). Использование запросов похоже на процесс поиска, – задаются конкретные критерии отбора, на основе которых база данных формирует и возвращает отчет. Например, если отправить в базу данных Newland Tours запрос на страны, начинающиеся на букву "T", будет возвращен отчет о Тайване и Таиланде –Taiwan и Thailand. Запросы записываются на языке SQL (Structured Query Language — язык структурированных запросов). Начиная с этого урока, в упражнениях, в значительно мере, будет использован язык SQL, поскольку для извлечения данных из базы и их дальнейшей передачи на веб-страницы (в том числе, для ASP, ColdFusion или PHP) применяется именно этот язык. SQL является основным средством для взаимодействия разработчиков с базами данных. Визуальный SQL-редактор содержится в Access, но в Dreamweaver его использовать нельзя. В Dreamweaver есть собственный SQL-редактор, который также позволяет кодировать SQL-запросы вручную.

Знание SQL для разработчиков динамических веб-приложений является обязательным. О многом рассказывается в этой книге, но в качестве простого и исчерпывающего введения в SQL рекомендуется книга SQL: Visual Quick Start Guide (Peachpit Press) (SQL: визуальное руководство для быстрого старта).
Фрагмент SQL-кода, приведенный на рисунке, извлекает все записи из полей countryName (Название_страны), (Численность населения), country_currency (Денежная единица_страны) и description (описание), содержащихся в таблице tbl_country.
В основе современных баз данных лежит понятие связей (relationships). Они позволяют разработчикам связывать несколько таблиц в базе посредством общих данных. При помощи взаимосвязей разработчики баз данных моделируют таблицы, отражающие взаимодействие объектов в реальности и позволяющие эффективно обновлять данные даже по прошествии длительного времени. На диске содержится готовый файл базы данных, который и будет использоваться в книге. Он тоже включает много связей между таблицами. При выполнении упражнений создавать дополнительные связи не потребуется, однако нередко придется извлекать и использовать данные сразу из нескольких таблиц. Без понимания роли связей в базах данных этого сделать невозможно.
Связи не относятся к какой-то конкретной системе управления базами данных, это обязательный компонент не только для Access и MySQL, но и для любой базы данных и, в частности используются при веб-разработке, например, Microsoft SQL Server, Oracle или PostgreSQL.
Понять принцип работы связей проще всего на примере. Для хранения информации о продажах компании применяется электронная таблица Excel. Каждая операция должна храниться в отдельной строке, поэтому электронная таблица содержит следующие столбцы:
| f_name | l_name | str_add | city | state/prov | country | postal | cred_card | | | total |
|---|
Со временем в таблице накапливаются сотни записей. Многие из них соответствуют покупкам, совершенным одними и теми же клиентами. Проблема состоит в том, что при совершении повторной покупки информация об адресе клиента снова сохраняется. Со временем некоторые клиенты переезжают. Их новые адреса вводятся в электронную таблицу, но во всех прошлых записях остается прежний адрес. Существует вероятность, что рано или поздно кто-то случайно использует для отправки товара неверный адрес. Обновление адресов становится довольно непростой задачей из-за их невероятного количества. К сожалению, в Excel нет средств, позволяющих устранить эту проблему.
При формировании базы данных логичнее отделить все записи о клиентах от записей, относящихся к совершенным ими покупкам. В этом случае в одной таблице будут отслеживаться покупки, а в другой – храниться информация о клиентах. В таблице клиентов каждому будет соответствовать только одна запись. При переезде клиента потребуется обновить только одну соответствующую ему запись, а не все записи о его покупках. В таблице, содержащей записи о покупках, вместо перечисления всей информации о покупателе будет указан уникальный идентификатор, соответствующий определенной записи в таблице клиентов. Такой тип связи между таблицами позволяет создавать базы данных.
На этот раз таблица клиентов будет выглядеть следующим образом:
| cust_ID | F_name | l_name | str_add | city | state/prov | postal | credit_card |
|---|
| transaction_ID | cust_ID | |
|---|
Обе таблицы содержат поле cust_ID. В таблице клиентов поле cust_ID включает уникальные идентификаторы, называемые также первичными ключами (primary key). У каждой записи в таблице всегда существует свой идентификатор, который не повторяется. В таблице могут оказаться два клиента с одним именем, например, Джон Смит, или два одинаковых почтовых индекса 90210. Но благодаря тому, что каждой строке присваивается первичный ключ cust_ID, в таблице обеспечен порядок, предполагающий корректное обновление, удаление и добавление данных.
В таблице покупок одно и то же значение cust_ID, напротив, может повторяться больше одного раза — в зависимости от того, сколько покупок совершил тот или иной клиент. Когда первичный ключ одной таблицы применяется в качестве поля другой, он называется внешним ключом (foreign key). При использовании внешних ключей между таблицами образуются связи (relationships). Они позволяют избавиться от избыточной (дублирующей) информации и сохранить целостность данных.
product_ID, добавленным в таблицу покупок в качестве внешнего ключа. Помимо этого, в примере подразумевается, что клиент пользуется только одной кредитной картой. Для подгонки базы данных под все эти требования добавляются новые таблицы, поля и связи.На приведенном ниже рисунке показана взаимосвязь между двумя таблицами, описанными в этом примере. Линия между таблицами обозначает существование между ними связи. Число 1, расположенное слева, означает, что в таблице tbl_customers параметр cust_ID является уникальным, а знак бесконечности, находящийся справа, указывает, что в таблице tbl_transactions одно и то же значение параметра cust_ID может повторяться сколько угодно. Это взаимосвязь относится к типу связи с отношением "один-ко-многим".

Возможности связей между таблицами не ограничены уменьшением избыточности данных. Они также позволяют создать SQL-запрос, извлекающий данные из обеих таблиц на основе определенного критерия. Например, запрос, выводящий имена и фамилии всех клиентов, совершивших покупки на сумму свыше 100 долларов. Формы, предназначенные для записи сразу в несколько таблиц, тоже функционируют на основе взаимосвязей.
После описания основных компонентов и функций баз данных пора рассказать о том, как они работают в сети.
Существует множество вариантов для применения содержимого баз данных в сети. Самый простой способ, который будет реализован к концу урока – это отображение содержимого поля на веб-странице. Но, помимо отображения простой строки текста, существуют возможности выводить несколько полей сразу, динамически заполнять меню элементами и производить аутентификацию пользователей. Кроме отображения на странице полученная информация нередко помещается на хранение в таблицы базы данных. Благодаря этому реализованы средства для регистрации пользователей, заполнения опросников, тестов и систем управления контентом.
Если сравнить веб-страницы, управляемые базами данных, с объектами баз данных в Access, речь о которых шла выше, станет понятно, что веб-страницы и веб-формы могут служить эффективной заменой отчетов и форм базы данных. Веб-страницы точно так же, как и отчеты, выводят и отображают данные, а веб-формы выполняют ту же функцию, что и формы баз данных. Достоинство такой системы заключается в том, что для обновления ее содержимого пользователям не требуется Access или MySQL (или любая другая реляционная СУБД). К тому же, пользователи могут находиться в любой точке земного шара, но при этом иметь доступ к базе благодаря Интернету. Более того, поскольку пользователи не имеют прямого доступа к базе данных, снижается вероятность утечки данных (умышленной или случайной).
С плюсами все ясно, осталось выяснить, как же все это работает. Владелец сайта имеет доступ к файлам, размещенным на жестком диске сервера. Посетители сайта не имеют прав на изменение файлов на сервере, так как это подорвало бы систему безопасности сервера. Но можно предоставить права доступа к определенным файлам на сервере конкретным приложениям.
Один из способов – это использование интерфейса ODBC (Windows), позволяющего создать имя источника данных (

Эта схема дает наглядное представление о многих процессах при работе с базами данных. Следует обратить внимание на то, как много промежуточных ступеней отделяют пользователя от реальных данных. Эта сложная последовательность позволяет пользователю получить доступ к данным, но защищает данные от прямого доступа, тем самым обеспечивая определенный уровень безопасности.
Схема состоит из четырех частей, характеризующих уровень клиента, уровень промежуточного ПО, уровень ODBC и уровень базы данных.
К уровню клиента относится статический HTML-код, обрабатываемый браузером. Изначально код страницы может быть как статическим, так и динамическим, но, как известно, к моменту передачи страницы браузеру она состоит полностью из статического HTML-кода.
В ODBC есть вся информация, необходимая для доступа к базе данных, включая сведения о драйвере базы данных и путь к базе. Эти два параметра хранятся в ODBC и вызываются при помощи
Наконец, SQL-запрос достигает самой базы данных, ищет нужные таблицы и извлекает соответствующую информацию.
Но это только первый этап. На обратном пути данные идут по тому же маршруту, что и запрос, пока не достигают уровня промежуточного ПО. В этот момент извлеченные из базы данные сохраняются в оперативной памяти сервера (RAM). Данные еще не достигли страницы, хотя уже почти у цели. Сохраненные в памяти данные, которые получены в результате запроса, называются набором записей (recordset). Для вывода набора записей (или любого его подмножества) в HTML-код применяется ASP или ColdFusion. Принцип здесь тот же, что и при выводе переменных формы. В итоге, пользователь может просмотреть извлеченные данные на странице.
Связка PHP/MySQL работает по другой схеме, главное отличие которой заключается в том, что в ней отсутствует интерфейс ODBC. Вместо этого информация, необходимая для доступа к базе данных, помещается непосредственно в код. Подробнее об этом будет рассказано позже, но основной идеей является то, что PHP содержит специальную функцию ( ), которая используется для подключения к базе данных MySQL. В случае применения этой функции указывается путь к серверу баз данных, а также имя пользователя и пароль для доступа. После этого вызывается другая функция ( ), позволяющая указать имя базы данных, к которой требуется получить доступ. В MySQL может содержаться несколько баз данных, в отличие от Access, где каждая база данных хранится в отдельном файле с расширением .mdb. Несмотря на то, что в PHP и MySQL употребляется несколько иной подход, в общих чертах процесс остается прежним.
Безопасность является главной проблемой динамических приложений, подключающихся к источникам данных. Сохранность и конфиденциальность данных жизненно важны для любой компании. В новостях нередко сообщается о том, что злоумышленники взломали базу данных той или иной организации. Но ирония заключается в том, что угроза исходит вовсе не от злоумышленников, а от сотрудников, которые с самыми благими намерениями совершают ошибки во время работы.
В книге вопросы безопасности не рассматриваются, однако ниже приведено несколько советов по обеспечению конфиденциальности информации, хранящейся в базах данных, ее защиты как от сотрудников компании, так и от конечных пользователей. Более подробные сведения приведены на бесплатном сайте Macromedia Security Development Center, содержащем десятки статей, технические руководства, советы, упражнения и многое другое. Сайт размещен по адресу: http://www.macromedia.com/devnet/security/.
Для защиты данных следует:
Следование этим советам не гарантирует полную сохранность данных, однако это уже значительный шаг в правильном направлении. Так что при разработке любого проекта одной из основных задач является создание системы безопасности для защиты данных.
Этот раздел предназначен только для тех, кто применяет локальную версию PHP как для Windows, так и для Mac OS X. При использовании ASP или ColdFusion (как локально, так и удаленно) или при использовании PHP на удаленном сервере (например, через Intranet или FTP), нужно перейти к следующему разделу "Обзор базы данных Newland Tours ".
Процесс установки MySQL для компьютеров с Windows отличается от установки на машинах с Mac OS, поэтому для каждой операционной системы написан отдельный раздел.
Самый простой способ запустить MySQL для машин с Windows – это загрузить и запустить инсталлятор MySQL. После установки программы MySQL требуется просто запустить ее и начать пользоваться.
В случае необходимости следует распаковать заархивированный файл в папку на жестком диске.
Для установки можно указать и другую папку, однако при этом придется создать конфигурационный файл, указывающий на выбранную папку. Если выбрано значение, заданное по умолчанию, конфигурационный файл создавать не требуется.

После инсталляции будет установлен интерфейс phpmyadmin. Однако он еще не запущен. Для машин с Windows MySQL запускается в качестве службы. Для активации службы применяется утилита WinMySqlAdmin.
В этой папке содержатся приложения, связанные с MySQL, в том числе и WinMySQLAdmin.

Появится окно с запросом имени пользователя и пароля.
После введения этой информации WinMySQLAdmin запустит MySQL как одну из служб Windows. На панель задач будет помещен значок с изображением светофора. Если горит зеленый свет, то это значит, что служба запущена.

Если щелкнуть на значке правой кнопкой мыши и в контекстном меню выбрать пункт Show Me (Покажите мне), появится панель управления WinMySqlAdmin, в которой есть информация о MySQL, а также различные настройки.
После установки и запуска MySQL следует создать и заполнить базу данных Newland Tours, после чего начать использовать ее для разработки сайта.
Точное расположение файла не имеет особого значения, однако вскоре потребуется ввести путь к этому файлу, поэтому лучше скопировать его в доступную папку.
Появится командная строка mysql>.
newland_tours введите в командной строке mysql> приведенный ниже код и нажмите (Enter).source C:\mysql\newland_tours.sql

Команда source применяется для запуска одной или нескольких команд SQL, хранящихся в отдельном документе. Если открыть файл newland_ tours.sql в текстовом редакторе, отобразится весь код, необходимый для того, чтобы создать базу данных и использовать ее, а также предоставить инструкции для создания всех шести таблиц и, наконец, заполнить каждую таблицу данными.
После нажатия (Enter) MySQL начнет работу. На экране появятся десятки сообщений об успешном завершении операции, которые будет перемещаться до тех пор, пока программа не завершит свою работу до конца.

База данных newland_tours установлена и запущена в MySQL. Теперь пора переходить к разделу "Обзор базы данных Newland Tours ".
Процесс установки MySQL для машин с Mac OS X гораздо проще, поскольку программы для инсталляции уже доступны. Однако для запуска базы данных потребуется ввести немного кода в командную строку окна Terminal.
Файл будет сохранен на рабочем столе и автоматически распакован.
Версия может отличаться.
Файлы устанавливаются в папку /usr/local/mysql-[версия], но при этом создается

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

До тех пор, пока для MySQL не будет установлен интерфейс, взаимодействовать с программой придется посредством командной строки.
Для запуска MySQL требуется иметь неограниченные права доступа привилегированного пользователя. Для этого шага необходимы навыки работы с реализацией системы Unix в Mac OS X.
cd /usr/local/mysql ".Если ввести команду ls, на экране отобразится список всех файлов и папок, расположенных в текущем каталоге.
Команда mysqld_safe применяется для запуска процесса (демона) MySQL в фоновом режиме. Если она не сработает, следует ввести ./bin/mysqld_safe . Если не сработает и этот вариант, следует ввести cd bin/, чтобы перейти в каталог bin, а после этого ввести mysqld_safe or ./mysqld_safe .
Если описанные выше действия производились привилегированным пользователем, MySQL запустится. MySQL отключается при выходе из системы, а также выключении или перезапуске компьютера. Чтобы запустить ее, придется снова зайти в Terminal, войти в качестве привилегированного пользователя и перейти в папку usr/local/mysql, после чего из каталога bin выполнить команду mysqld_safe .
Место на жестком диске, где сохранен файл, не имеет большого значения, однако в последующих шагах подразумевается, что файл сохранен именно на рабочем столе.
./bin/mysql -p
В результате, появится командная строка mysql>.

Параметр [имя пользователя] следует заменить конкретным именем. Также важно помнить, что система UNIX чувствительна к регистру.
Команда source применяется для запуска одной или нескольких команд SQL, хранящихся в отдельном документе. Если открыть файл newland_ tours.sql в текстовом редакторе, отобразится весь код, необходимый для того, чтобы создать базу данных, начать использование базы, предоставить инструкции для создания всех шести таблиц и, наконец, заполнить каждую таблицу данными.
После нажатия (Enter) MySQL начнет работу. На экране появятся десятки сообщений об успешном завершении операции, которые будет перемещаться до тех пор, пока программа не дойдет до конца.

База данных newland_tours установлена и запущена в MySQL. Пора переходить к разделу "Обзор базы данных Newland Tours".
К сожалению, для установки базы данных Newland Tours на удаленном сервере не существует универсального рецепта. Все зависит от особенностей сервера, поэтому за информацией о деталях установки следует обращаться к хостинг-провайдеру.
На многих серверах под управлением Linux существует возможность работать с базами данных удаленно при помощи сетевого интерфейса

Одно из преимуществ
CREATE DATABASE newland_tours; USE newland_tours;
Теперь первая строка должна начинаться с кода DROP TABLE IF EXISTS.
Поскольку база данных создается напрямую в
После подготовки файла следует установить базу данных через
В этом упражнении приведен краткий обзор базы данных newland_tours, которая и будет управлять сайтом Newland Tours. Для начала более внимательно ознакомимся с возможностями программы Microsoft Access, поскольку с помощью ее интерфейса гораздо проще понять структуру и компоненты базы данных.
Если ASP или ColdFusion применяются на локальном компьютере под управлением Windows XP, следует скопировать папку с базой данных в папку Shared Documents (Общие Документы), которая запускается через окно My Computer (Мой Компьютер). После размещения папки с базой данных в формате Access ( newland_tours.mdb ) в общие документы, ASP, ColdFusion и Dreamweaver получают доступ к базе данных.
Если ASP или ColdFusion применяется на базе сервера IIS на локальном компьютере под управлением Windows 2000, необходимо скопировать папку с базой данных в каталог C:\Inetpub\wwwroot\newland. Как известно, все, что находится в папке wwwroot, находится на локальном веб-сервере и доступно по адресу localhost.
Если ColdFusion используется в качестве автономного сервера на локальном компьютере под управлением Windows 2000, нужно поместить папку с базой данных в каталог C:\CFusionMX\wwwroot\newland.
Если ASP и ColdFusion расположены на удаленном сервере в локальной сети или на сервере хостинг-провайдера, следует поместить файл newland_tours.mdb в место для баз данных, указанное администратором сервера. В данном случае все зависит от настроек сервера.
Если приложение Access не установлено, достаточно просто прочесть текст и ознакомиться с представленными в этом уроке рисунками.
При открытии файла с базой данных отобразится окно, в левой части которого перечислено несколько категорий объектов, а в правой части расположены сами объекты. Эти категории были описаны в начале урока.

В категории Tables (Таблицы) есть шесть таблиц и столько же форм в категории Forms (Формы). Остальные категории пусты.

Некоторые таблицы включают гораздо больше данных, чем остальные. Самые объемные таблицы tbl_country и tbl_tours будут использованы для наполнения разделов "Country Profile" (содержащего данные по каждой стране) и "Find a Tour" (используемого для поиска нужных путешествий).

Таблица tbl_journal включает текст, используемый в разделе "Traveller’s Journal", расположенном на главной странице.
Таблица tbl_agents имеет непривычный вид, поскольку в ней присутствуют только числа, а не имена, как можно было предположить. Причина заключается в том, что числа, в действительности, являются внешними ключами: пользователь – это из таблицы tbl_users, а область деятельности – regionID из таблицы tbl_region.
Таблица tbl_user содержит информацию, используемую для аутентификации пользователей на сайте. После регистрации пользователя соответствующая ему информация помещается в таблицу. Следует обратить внимание, что в поле userGroup существует две категории: admin и visitor. Эти категории определяют, на какие страницы сайта имеет право заходить посетитель.
Закройте окна таблиц, чтобы вернуться к основному экрану.
Как говорилось, формы служат удобными интерфейсами, через которые данные вводятся в таблицы. На сайте Newland Tours формы применяться не будут, поскольку в сети программа Access недоступна. Вместо этого будут созданы специальные веб-формы, выполняющие те же функции. Но при создании таблиц в базе данных применялись формы Access, поэтому стоит с ними ознакомиться.

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

В каждой таблице с помощью полужирного начертания выделен ее первичный ключ. Внешние и первичные ключи соединены линиями. При tbl_agents содержались только числа. Таблица состоит из первичного ключа ( agentID ) и из двух внешних ( user и specialty ). Таблица tbl_journal не связана ни с одной таблицей. Наличие связей не является обязательным условием при формировании таблиц.

На этом знакомство с действующей базой данных и краткий курс по Access будут закончены.
Итак, теории и созерцания достаточно, – пора заняться реальным делом и подключить базу данных к страницам сайта. Для этого пригодятся все полученные ранее знания и умения. Шаги будут отличаться в зависимости от способа подключения к серверу и применяемой серверной технологии (ASP, ColdFusion или PHP).
Пользователи ASP и ColdFusion подключаются к базе данных в два этапа. Во-первых, требуется зарегистрировать на сервере имя источника данных (
В технологии PHP/MySQL не употребляются ODBC и
Варианты настройки базы данных настолько отличаются, что вместо общего набора инструкций приводятся несколько разных.
Этот раздел предназначен для всех пользователей ASP вне зависимости от способа подключения к серверу.
В представленных здесь материалах производится настройка Dreamweaver на подключение к существующему
Пользователям ASP, подключающимся к удаленному серверу, системное имя
При первом подключении не имеет значения, какая именно страница сайта открыта, так как Dreamweaver создает соединение для всего сайта. Выбор остановлен на странице index.asp, поскольку вскоре на нее будет добавлено динамическое содержимое.
Это действие откроет диалоговое окно Data Source Name (Имя источника данных), которое применяется для создания соединения сайта с базой данных.

Откроется диалоговое окно ODBC Data Source Administrator (Администратор источника данных ODBC). Это диалоговое окно относится к Windows, а не к Dreamweaver, и оно доступно также в папке Control Panel (Панель управления).

Для получения сетевого доступа к источнику данных следует добавить

Для создания

newland . Нажмите кнопку Select (Выбрать), а затем в диалоговом окне Select Database (Выбор базы данных) укажите файл newland_tours.mdb , который находится в папке C:\Documents and Settings\All Users\ Documents\database (Windows XP) или C:\Inetpub\wwwroot\newland\ database (Windows 2000).На этом шаге задается имя для

После создания
Заполнение этого диалогового окна предоставляет Dreamweaver достаточную информацию для подключения к базе данных посредством ODBC.

При закрытии диалогового окна Dreamweaver создаст на сайте папку Connections (Соединения), внутри которой будет помещен файл conn_newland.asp. Помимо этого, следует обратить внимание на панель Databases (Базы данных), в которой теперь отображается структура базы данных со всеми элементами.

Для создания набора записей и прикрепления данных на страницу следует перейти к упражнению "Извлечение наборов записей и отображение информации из базы данных".
Этот раздел предназначен для всех пользователей ColdFusion вне зависимости от способа подключения к удаленному серверу.
Пользователям ColdFusion, компьютеры которых подключены к удаленному серверу, потребуется, чтобы администратор сервера предоставил им пароль для доступа к службе
При первом подключении не имеет значения, какая именно страница сайта открыта, так как Dreamweaver создает соединение для всего сайта. Выбор предоставлен на странице index.asp, поскольку в следующем упражнении на нее будет добавлено динамическое содержимое.
Пароль дает разработчикам права доступа к серверу ColdFusion, который необходим для определения и использования источников данных.

Если на сервере ColdFusion уже существуют источники данных, к концу этого шага все они отобразятся на панели Databases (Базы данных).
Единственная проблема заключается в том, что среди них нет базы данных Newland Tours.
Вне зависимости от того, использовалась кнопка или ссылка, в браузере на странице Data Sources (Источники базы данных), откроется приложение для администрирования ColdFusion. Теперь для доступа к приложению потребуется ввести пароль.


Пользователям Windows XP следует перейти в папку C:\Documents and Settings\All Users\Documents\database\. Это путь к папке, на которую ссылается ярлык Shared Documents (Общие документы).
Пользователям Windows 2000, использующим автономную версию ColdFusion, следует перейти в папку C:\CFusionMX\wwwroot\newland\ database\.Пользователям Windows 2000, применяющим ColdFusion совместно с IIS, надо перейти в папку C:\Inetpub\wwwroot\newland\database\.
На этом шаге ColdFusion получает информацию, необходимую для подключения к базе данных.

Если на панели отображается содержимое базы данных newland_tours.mdb, это означает, что программа Dreamweaver успешно завершила соединение с базой данных. Пора создать набор записей и прикрепить к коду страницы данные из базы.
Для этого следует перейти к разделу "Извлечение наборов записей и отображение информации из базы данных".
Поскольку в PHP не используются ODBC и
Поскольку соединение будет доступно для всех страниц сайта, не имеет значения, какой файл открыт при его создании. Однако для создания соединения с MySQL должен быть открыт как минимум один файл.
Откроется диалоговое окно MySQL Connection.
Connection name: conn_newland.
MySQL server: localhost (в случае применения локального сервера) или имя, данное администратором сервера (в случае разработки на удаленном сервере).
User name и Password – имя пользователя и пароль для доступа к учетной записи MySQL.

Database: newland_tours.
В случае разработки на удаленном сервере данные доступа к MySQL может сообщить только администратор сервера. При использовании локального сервера следует просто указать информацию, заданную при установке MySQL. Если MySQL установлена на локальном компьютере, а пароль от нее утерян, следует попробовать ввести в качестве имени пользователя root, а поле для пароля оставить незаполненным.
Dreamweaver создаст на сайте папку Connections, а внутри нее — файл conn_newland.php. В нем содержится информация, необходимая страницам для доступа к MySQL. При каждом обращении сценария PHP к базе данных Dreamweaver использует этот файл.
Dreamweaver действительно получает доступ к базе данных, расположенной внутри MySQL, и предоставляет информацию о ней. Помимо этого, программа предоставляет ограниченные возможности для управления MySQL.

Соединение PHP/MySQL не будет работать до тех пор, пока папка не загрузится на сервер.
Последние изменения по усовершенствованию дизайна и структуры сайта производились довольно давно – в предыдущем уроке. После этого были представлены только материалы теоретического плана и упражнения по настройке. Но на страницы сайта никаких изменений пока не вносилось. В последнем упражнении этого урока колонка "Traveler’s Journal" будет динамически загружаться из базы данных. В браузере страница будет выглядеть так же, как раньше, но в Dreamweaver изменения будут заметны.
На освободившееся место будет помещен динамический текст.

<h3> , слева от тега <img> и выберите пункт Remove Tag (Удалить тег).Текст для колонки, содержащийся в базе данных, уже размечен HTML-тегами. Если не удалить тег <h3>, то теги разметки окажутся некорректно вложенными внутрь тега <h3>.
Поскольку сайт подключен к источнику данных, Dreamweaver может генерировать код, извлекающий данные из базы. В этом и следующем шагах создается набор записей, который, как говорилось в начале урока, представляет собой набор данных, соответствующих определенному критерию отбора и извлеченных из базы данных при помощи SQL-запроса.

Цель упражнения – отобразить конкретную запись журнала, однако требуются не все записи, а только самая последняя. По этой причине каждой записи соответствует особый идентификатор (первичный ключ). При этом значение идентификатора для каждой новой записи увеличивается. Таким образом, запись с самым высоким значением поля journalID является самой последней. Для выполнения задачи требуется отсортировать данные и извлечь содержимое последней записи.
rs_journal . В меню Connection (Соединение) выберите пункт conn_newland (или newland – в случае с ColdFusion). В меню Table (Таблица) выберите пункт tbl_journal. В разделе Columns (Столбцы) укажите вариант Selected (Выделенные) и, удерживая нажатой клавишу (Ctrl) (Windows) или (Command) (Macintosh), выделите пункты journalID и journal_entry.В этом диалоговом окне создается набор записей rs_journal. Данные для него извлекаются на основе критерия, заданного в SQL-запросе. Формирование SQL-запроса незаметно началось уже на этом шаге.
Во-первых, указано, что источнику данных соответствует соединение conn_newland (задающее tbl_journal, расположенная внутри этого источника данных. В-третьих, указано, что из таблицы требуется извлечь только поля journalID и journal_entry.

Теперь в SQL-запрос будет добавлено инструкция для сортировки записей по убыванию – в зависимости от времени ввода данных. Итак, информация, необходимая для создания набора записей, введена.

После нажатия OK набор записей отобразится на панели Bindings (Привязки) (так же, как в предыдущих уроках отображались переменные формы и переменные запроса).
Правильное размещение динамического текста относительно изображения может оказаться несколько проблематичным. В итоге, значок изображения, динамический текст и само изображение должны располагаться так же, как на приведенном примере.

Как известно, для тестирования

Если данные из базы отображаются в Dreamweaver, создание набора записей и использование функции

Если на странице отображается то же, что и на рисунке, то система полностью настроена, и с этого момента речь пойдет исключительно о коде.
В этом уроке вы узнали:
Разработка динамических веб-страниц гораздо сложнее, чем создание статических документов. При разработке статических страниц применяется небольшое количество технологий – XHTML, CSS и FTP. При динамической разработке, помимо них, используется множество других, в том числе, ASP, ColdFusion, PHP, базы данных, серверы, ODBC и SQL. Кроме того, при разработке динамических веб-страниц, как известно из предыдущих упражнений, требуется больше кода.
Уроки с 4 по 7 послужили введением для проведения работы по созданию сценариев, выполняемых на стороне сервера. В них говорилось о перемещении данных между страницами, об обработке данных, о применении встроенных функций, отображении динамических данных, управлении данными при помощи условных выражений, а также о проверке правильности заполнения формы и о многом другом. Это введение в четырех уроках получило логическое завершение в уроке 7, где при интенсивном кодировании вручную было создано несколько сценариев, объединенных в одном простом приложении. Такое большое количество кода использовалось в упражнениях специально, чтобы вы могли преодолеть барьер при
Этот урок является поворотной точкой в книге. С этого момента подразумевается, что вам известны и понятны принципы и приемы пересылки данных между страницами, хотя для каждого нового сценария так же, как и раньше, будут даваться объяснения, независимо от того, пишется ли он вручную или создается при помощи модели поведения Dreamweaver. В этом и нескольких последующих уроках упор делается на работу с базами данных. Вскоре здесь будет рассказано, как подключаться к базе данных, отображать извлеченные из нее данные и создавать формы для сохранения данных в базе.
В базах данных информация хранится в таблицах, которые, на первый взгляд, напоминают электронные таблицы Excel
(рис 8.1) В базах данных информация хранится в таблицах, которые, на первый взгляд, напоминают электронные таблицы ExcelМногие не осознают всю сложность и функциональность баз данных, пока не начинают с ними работать. В этом уроке в ускоренном темпе будет описана работа с базами данных, а также приведен обзор базы, которая будет использоваться в книге. Кроме этого, будут выполнены упражнения по подключению сайта к базе данных и отображению динамически извлеченного из нее текста. Следует также подчеркнуть, что в данном уроке делается упор на теорию (по аналогии с предыдущим уроком, где основное внимание фиксировалось на коде).
Что будет изучаться:
Время выполнения
На выполнение этого урока потребуется примерно 75 мин.
Файлы урока
Исходные файлы:
Lesson08/Start/newland_tours.mdb
Lesson08/Start/newland_tours.sql (только для пользователей PHP/MySql)
Lesson08/Start/newland/index.asp
Итоговые файлы:
Lesson08/Complete/newland/index.asp
При работе с книгой, целью которой является активное обучение на основе выполнения практических упражнений, требуется действовать достаточно оперативно, – поэтому длинных абстрактных рассуждений в уроке нет. Но без уверенного знания баз данных далеко в разработке динамических веб-сайтов продвинуться не получится (хотя и экспертом быть тоже не обязательно). В этом разделе описываются основные принципы и терминология баз данных. В качестве примера задействовано офисное приложение Microsoft Access. Компоновка данных в MySQL (включая и сами данные) не отличается от Access. Однако пользовательский интерфейс в Access несколько удобнее, – так что все примеры заимствованы из этой программы. Прежде чем приступить к разработке динамических веб-сайтов, настоятельно рекомендуется потратить время на приобретение ценного опыта работы с базами данных. Для начала будет достаточно этого раздела.
Хотя внешний вид MySQL заметно отличается от Access, основные принципы остаются прежними. Некоторые из указанных ниже возможностей доступны только в Access и не имеют аналогов в MySQL. Об этом будет сказано отдельно.
Проще говоря, база данных – это система для хранения данных. Но сегодня под понятием "база данных", как правило, подразумевается гораздо больше, разумеется, если речь идет о Microsoft Access, MySQL или более мощных системах промышленного уровня, таких как Microsoft SQL Server или Oracle. Каждая из них является системой управления реляционными базами данных или реляционной СУБД (Relational
Данные базы хранятся в таблицах (tables). На первый взгляд, эти таблицы подобны электронным таблицам Excel, поскольку они тоже состоят из строк и столбцов. Столбцы называются полями (fields) и содержат определенную категорию информации. Строки именуются записями (records). В одной строке хранится один набор информации, содержащий по одному элементу данных на каждое поле. Например, в таблице tbl_customers содержатся поля для имени, адреса, города, штата, почтового индекса, номера телефона и т.д. Для каждого клиента будет создана отдельная запись.
На приведенном рисунке представлена таблица из базы данных Newland Tours, открытая в программе Access. В таблице содержится основная информация о странах. В поле countryName перечислены названия стран. В остальных полях приведены другие данные для каждой страны, при этом каждое поле включает определенный тип данных. Для редактирования таблиц достаточно щелкнуть на нужной ячейке и изменить ее содержимое нужным образом, однако удобнее использовать интерфейс, например, формы в программе Access или веб-формы.

Таблицы –не единственный тип объектов, из которых состоят базы данных. Помимо таблиц, существуют формы, отчеты и запросы. Формы (forms) применяются для добавления новых данных и изменения уже существующих. Форма для создания таблицы с информацией о странах, показанной в предыдущем примере, приводится на следующем рисунке. Формы облегчают добавление и редактирование информации, а также позволяют изменять тип введенных данных, что помогает поддерживать их однородность. Внизу формы расположены кнопки навигации. Они используются для доступа к записи, в которую требуется внести изменения, или для создания новой записи с нуля.
phpmyadmin . Однако ни один из интерфейсов MySQL не сравнится по функциональности и сложности с интерфейсом Access. Скорее всего, с хранением данных и обеспечением доступа к ним MySQL справляется лучше, чем Microsoft Access, однако интерфейс MySQL в лучшем случае можно назвать минималистским.Точно так же, как формы связаны с вводом данных в таблицы, отчеты (reports) связаны с их выводом. Ознакомиться со всей информацией, хранящейся в таблице, невозможно по той причине, что текст не умещается в полях целиком. Для отображения данных в удобном для чтения виде используются отчеты. Существует возможность включать в отчет не все данные, а только некоторые, что значительно повышает удобство использования отчетов (см. рис. вверху следующей страницы).

Для вывода в отчеты определенных данных применяются запросы (queries). Использование запросов похоже на процесс поиска, – задаются конкретные критерии отбора, на основе которых база данных формирует и возвращает отчет. Например, если отправить в базу данных Newland Tours запрос на страны, начинающиеся на букву "T", будет возвращен отчет о Тайване и Таиланде –Taiwan и Thailand. Запросы записываются на языке SQL (Structured Query Language — язык структурированных запросов). Начиная с этого урока, в упражнениях, в значительно мере, будет использован язык SQL, поскольку для извлечения данных из базы и их дальнейшей передачи на веб-страницы (в том числе, для ASP, ColdFusion или PHP) применяется именно этот язык. SQL является основным средством для взаимодействия разработчиков с базами данных. Визуальный SQL-редактор содержится в Access, но в Dreamweaver его использовать нельзя. В Dreamweaver есть собственный SQL-редактор, который также позволяет кодировать SQL-запросы вручную.

Знание SQL для разработчиков динамических веб-приложений является обязательным. О многом рассказывается в этой книге, но в качестве простого и исчерпывающего введения в SQL рекомендуется книга SQL: Visual Quick Start Guide (Peachpit Press) (SQL: визуальное руководство для быстрого старта).
Фрагмент SQL-кода, приведенный на рисунке, извлекает все записи из полей countryName (Название_страны), (Численность населения), country_currency (Денежная единица_страны) и description (описание), содержащихся в таблице tbl_country.
В основе современных баз данных лежит понятие связей (relationships). Они позволяют разработчикам связывать несколько таблиц в базе посредством общих данных. При помощи взаимосвязей разработчики баз данных моделируют таблицы, отражающие взаимодействие объектов в реальности и позволяющие эффективно обновлять данные даже по прошествии длительного времени. На диске содержится готовый файл базы данных, который и будет использоваться в книге. Он тоже включает много связей между таблицами. При выполнении упражнений создавать дополнительные связи не потребуется, однако нередко придется извлекать и использовать данные сразу из нескольких таблиц. Без понимания роли связей в базах данных этого сделать невозможно.
Связи не относятся к какой-то конкретной системе управления базами данных, это обязательный компонент не только для Access и MySQL, но и для любой базы данных и, в частности используются при веб-разработке, например, Microsoft SQL Server, Oracle или PostgreSQL.
Понять принцип работы связей проще всего на примере. Для хранения информации о продажах компании применяется электронная таблица Excel. Каждая операция должна храниться в отдельной строке, поэтому электронная таблица содержит следующие столбцы:
| f_name | l_name | str_add | city | state/prov | country | postal | cred_card | | | total |
|---|
Со временем в таблице накапливаются сотни записей. Многие из них соответствуют покупкам, совершенным одними и теми же клиентами. Проблема состоит в том, что при совершении повторной покупки информация об адресе клиента снова сохраняется. Со временем некоторые клиенты переезжают. Их новые адреса вводятся в электронную таблицу, но во всех прошлых записях остается прежний адрес. Существует вероятность, что рано или поздно кто-то случайно использует для отправки товара неверный адрес. Обновление адресов становится довольно непростой задачей из-за их невероятного количества. К сожалению, в Excel нет средств, позволяющих устранить эту проблему.
При формировании базы данных логичнее отделить все записи о клиентах от записей, относящихся к совершенным ими покупкам. В этом случае в одной таблице будут отслеживаться покупки, а в другой – храниться информация о клиентах. В таблице клиентов каждому будет соответствовать только одна запись. При переезде клиента потребуется обновить только одну соответствующую ему запись, а не все записи о его покупках. В таблице, содержащей записи о покупках, вместо перечисления всей информации о покупателе будет указан уникальный идентификатор, соответствующий определенной записи в таблице клиентов. Такой тип связи между таблицами позволяет создавать базы данных.
На этот раз таблица клиентов будет выглядеть следующим образом:
| cust_ID | F_name | l_name | str_add | city | state/prov | postal | credit_card |
|---|
| transaction_ID | cust_ID | |
|---|
Обе таблицы содержат поле cust_ID. В таблице клиентов поле cust_ID включает уникальные идентификаторы, называемые также первичными ключами (primary key). У каждой записи в таблице всегда существует свой идентификатор, который не повторяется. В таблице могут оказаться два клиента с одним именем, например, Джон Смит, или два одинаковых почтовых индекса 90210. Но благодаря тому, что каждой строке присваивается первичный ключ cust_ID, в таблице обеспечен порядок, предполагающий корректное обновление, удаление и добавление данных.
В таблице покупок одно и то же значение cust_ID, напротив, может повторяться больше одного раза — в зависимости от того, сколько покупок совершил тот или иной клиент. Когда первичный ключ одной таблицы применяется в качестве поля другой, он называется внешним ключом (foreign key). При использовании внешних ключей между таблицами образуются связи (relationships). Они позволяют избавиться от избыточной (дублирующей) информации и сохранить целостность данных.
product_ID, добавленным в таблицу покупок в качестве внешнего ключа. Помимо этого, в примере подразумевается, что клиент пользуется только одной кредитной картой. Для подгонки базы данных под все эти требования добавляются новые таблицы, поля и связи.На приведенном ниже рисунке показана взаимосвязь между двумя таблицами, описанными в этом примере. Линия между таблицами обозначает существование между ними связи. Число 1, расположенное слева, означает, что в таблице tbl_customers параметр cust_ID является уникальным, а знак бесконечности, находящийся справа, указывает, что в таблице tbl_transactions одно и то же значение параметра cust_ID может повторяться сколько угодно. Это взаимосвязь относится к типу связи с отношением "один-ко-многим".

Возможности связей между таблицами не ограничены уменьшением избыточности данных. Они также позволяют создать SQL-запрос, извлекающий данные из обеих таблиц на основе определенного критерия. Например, запрос, выводящий имена и фамилии всех клиентов, совершивших покупки на сумму свыше 100 долларов. Формы, предназначенные для записи сразу в несколько таблиц, тоже функционируют на основе взаимосвязей.
После описания основных компонентов и функций баз данных пора рассказать о том, как они работают в сети.
Существует множество вариантов для применения содержимого баз данных в сети. Самый простой способ, который будет реализован к концу урока – это отображение содержимого поля на веб-странице. Но, помимо отображения простой строки текста, существуют возможности выводить несколько полей сразу, динамически заполнять меню элементами и производить аутентификацию пользователей. Кроме отображения на странице полученная информация нередко помещается на хранение в таблицы базы данных. Благодаря этому реализованы средства для регистрации пользователей, заполнения опросников, тестов и систем управления контентом.
Если сравнить веб-страницы, управляемые базами данных, с объектами баз данных в Access, речь о которых шла выше, станет понятно, что веб-страницы и веб-формы могут служить эффективной заменой отчетов и форм базы данных. Веб-страницы точно так же, как и отчеты, выводят и отображают данные, а веб-формы выполняют ту же функцию, что и формы баз данных. Достоинство такой системы заключается в том, что для обновления ее содержимого пользователям не требуется Access или MySQL (или любая другая реляционная СУБД). К тому же, пользователи могут находиться в любой точке земного шара, но при этом иметь доступ к базе благодаря Интернету. Более того, поскольку пользователи не имеют прямого доступа к базе данных, снижается вероятность утечки данных (умышленной или случайной).
С плюсами все ясно, осталось выяснить, как же все это работает. Владелец сайта имеет доступ к файлам, размещенным на жестком диске сервера. Посетители сайта не имеют прав на изменение файлов на сервере, так как это подорвало бы систему безопасности сервера. Но можно предоставить права доступа к определенным файлам на сервере конкретным приложениям.
Один из способов – это использование интерфейса ODBC (Windows), позволяющего создать имя источника данных (

Эта схема дает наглядное представление о многих процессах при работе с базами данных. Следует обратить внимание на то, как много промежуточных ступеней отделяют пользователя от реальных данных. Эта сложная последовательность позволяет пользователю получить доступ к данным, но защищает данные от прямого доступа, тем самым обеспечивая определенный уровень безопасности.
Схема состоит из четырех частей, характеризующих уровень клиента, уровень промежуточного ПО, уровень ODBC и уровень базы данных.
К уровню клиента относится статический HTML-код, обрабатываемый браузером. Изначально код страницы может быть как статическим, так и динамическим, но, как известно, к моменту передачи страницы браузеру она состоит полностью из статического HTML-кода.
В ODBC есть вся информация, необходимая для доступа к базе данных, включая сведения о драйвере базы данных и путь к базе. Эти два параметра хранятся в ODBC и вызываются при помощи
Наконец, SQL-запрос достигает самой базы данных, ищет нужные таблицы и извлекает соответствующую информацию.
Но это только первый этап. На обратном пути данные идут по тому же маршруту, что и запрос, пока не достигают уровня промежуточного ПО. В этот момент извлеченные из базы данные сохраняются в оперативной памяти сервера (RAM). Данные еще не достигли страницы, хотя уже почти у цели. Сохраненные в памяти данные, которые получены в результате запроса, называются набором записей (recordset). Для вывода набора записей (или любого его подмножества) в HTML-код применяется ASP или ColdFusion. Принцип здесь тот же, что и при выводе переменных формы. В итоге, пользователь может просмотреть извлеченные данные на странице.
Связка PHP/MySQL работает по другой схеме, главное отличие которой заключается в том, что в ней отсутствует интерфейс ODBC. Вместо этого информация, необходимая для доступа к базе данных, помещается непосредственно в код. Подробнее об этом будет рассказано позже, но основной идеей является то, что PHP содержит специальную функцию ( ), которая используется для подключения к базе данных MySQL. В случае применения этой функции указывается путь к серверу баз данных, а также имя пользователя и пароль для доступа. После этого вызывается другая функция ( ), позволяющая указать имя базы данных, к которой требуется получить доступ. В MySQL может содержаться несколько баз данных, в отличие от Access, где каждая база данных хранится в отдельном файле с расширением .mdb. Несмотря на то, что в PHP и MySQL употребляется несколько иной подход, в общих чертах процесс остается прежним.
Безопасность является главной проблемой динамических приложений, подключающихся к источникам данных. Сохранность и конфиденциальность данных жизненно важны для любой компании. В новостях нередко сообщается о том, что злоумышленники взломали базу данных той или иной организации. Но ирония заключается в том, что угроза исходит вовсе не от злоумышленников, а от сотрудников, которые с самыми благими намерениями совершают ошибки во время работы.
В книге вопросы безопасности не рассматриваются, однако ниже приведено несколько советов по обеспечению конфиденциальности информации, хранящейся в базах данных, ее защиты как от сотрудников компании, так и от конечных пользователей. Более подробные сведения приведены на бесплатном сайте Macromedia Security Development Center, содержащем десятки статей, технические руководства, советы, упражнения и многое другое. Сайт размещен по адресу: http://www.macromedia.com/devnet/security/.
Для защиты данных следует:
Следование этим советам не гарантирует полную сохранность данных, однако это уже значительный шаг в правильном направлении. Так что при разработке любого проекта одной из основных задач является создание системы безопасности для защиты данных.
Этот раздел предназначен только для тех, кто применяет локальную версию PHP как для Windows, так и для Mac OS X. При использовании ASP или ColdFusion (как локально, так и удаленно) или при использовании PHP на удаленном сервере (например, через Intranet или FTP), нужно перейти к следующему разделу "Обзор базы данных Newland Tours ".
Процесс установки MySQL для компьютеров с Windows отличается от установки на машинах с Mac OS, поэтому для каждой операционной системы написан отдельный раздел.
Самый простой способ запустить MySQL для машин с Windows – это загрузить и запустить инсталлятор MySQL. После установки программы MySQL требуется просто запустить ее и начать пользоваться.
В случае необходимости следует распаковать заархивированный файл в папку на жестком диске.
Для установки можно указать и другую папку, однако при этом придется создать конфигурационный файл, указывающий на выбранную папку. Если выбрано значение, заданное по умолчанию, конфигурационный файл создавать не требуется.

После инсталляции будет установлен интерфейс phpmyadmin. Однако он еще не запущен. Для машин с Windows MySQL запускается в качестве службы. Для активации службы применяется утилита WinMySqlAdmin.
В этой папке содержатся приложения, связанные с MySQL, в том числе и WinMySQLAdmin.

Появится окно с запросом имени пользователя и пароля.
После введения этой информации WinMySQLAdmin запустит MySQL как одну из служб Windows. На панель задач будет помещен значок с изображением светофора. Если горит зеленый свет, то это значит, что служба запущена.

Если щелкнуть на значке правой кнопкой мыши и в контекстном меню выбрать пункт Show Me (Покажите мне), появится панель управления WinMySqlAdmin, в которой есть информация о MySQL, а также различные настройки.
После установки и запуска MySQL следует создать и заполнить базу данных Newland Tours, после чего начать использовать ее для разработки сайта.
Точное расположение файла не имеет особого значения, однако вскоре потребуется ввести путь к этому файлу, поэтому лучше скопировать его в доступную папку.
Появится командная строка mysql>.
newland_tours введите в командной строке mysql> приведенный ниже код и нажмите (Enter).source C:\mysql\newland_tours.sql

Команда source применяется для запуска одной или нескольких команд SQL, хранящихся в отдельном документе. Если открыть файл newland_ tours.sql в текстовом редакторе, отобразится весь код, необходимый для того, чтобы создать базу данных и использовать ее, а также предоставить инструкции для создания всех шести таблиц и, наконец, заполнить каждую таблицу данными.
После нажатия (Enter) MySQL начнет работу. На экране появятся десятки сообщений об успешном завершении операции, которые будет перемещаться до тех пор, пока программа не завершит свою работу до конца.

База данных newland_tours установлена и запущена в MySQL. Теперь пора переходить к разделу "Обзор базы данных Newland Tours ".
Процесс установки MySQL для машин с Mac OS X гораздо проще, поскольку программы для инсталляции уже доступны. Однако для запуска базы данных потребуется ввести немного кода в командную строку окна Terminal.
Файл будет сохранен на рабочем столе и автоматически распакован.
Версия может отличаться.
Файлы устанавливаются в папку /usr/local/mysql-[версия], но при этом создается

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

До тех пор, пока для MySQL не будет установлен интерфейс, взаимодействовать с программой придется посредством командной строки.
Для запуска MySQL требуется иметь неограниченные права доступа привилегированного пользователя. Для этого шага необходимы навыки работы с реализацией системы Unix в Mac OS X.
cd /usr/local/mysql ".Если ввести команду ls, на экране отобразится список всех файлов и папок, расположенных в текущем каталоге.
Команда mysqld_safe применяется для запуска процесса (демона) MySQL в фоновом режиме. Если она не сработает, следует ввести ./bin/mysqld_safe . Если не сработает и этот вариант, следует ввести cd bin/, чтобы перейти в каталог bin, а после этого ввести mysqld_safe or ./mysqld_safe .
Если описанные выше действия производились привилегированным пользователем, MySQL запустится. MySQL отключается при выходе из системы, а также выключении или перезапуске компьютера. Чтобы запустить ее, придется снова зайти в Terminal, войти в качестве привилегированного пользователя и перейти в папку usr/local/mysql, после чего из каталога bin выполнить команду mysqld_safe .
Место на жестком диске, где сохранен файл, не имеет большого значения, однако в последующих шагах подразумевается, что файл сохранен именно на рабочем столе.
./bin/mysql -p
В результате, появится командная строка mysql>.

Параметр [имя пользователя] следует заменить конкретным именем. Также важно помнить, что система UNIX чувствительна к регистру.
Команда source применяется для запуска одной или нескольких команд SQL, хранящихся в отдельном документе. Если открыть файл newland_ tours.sql в текстовом редакторе, отобразится весь код, необходимый для того, чтобы создать базу данных, начать использование базы, предоставить инструкции для создания всех шести таблиц и, наконец, заполнить каждую таблицу данными.
После нажатия (Enter) MySQL начнет работу. На экране появятся десятки сообщений об успешном завершении операции, которые будет перемещаться до тех пор, пока программа не дойдет до конца.

База данных newland_tours установлена и запущена в MySQL. Пора переходить к разделу "Обзор базы данных Newland Tours".
К сожалению, для установки базы данных Newland Tours на удаленном сервере не существует универсального рецепта. Все зависит от особенностей сервера, поэтому за информацией о деталях установки следует обращаться к хостинг-провайдеру.
На многих серверах под управлением Linux существует возможность работать с базами данных удаленно при помощи сетевого интерфейса

Одно из преимуществ
CREATE DATABASE newland_tours; USE newland_tours;
Теперь первая строка должна начинаться с кода DROP TABLE IF EXISTS.
Поскольку база данных создается напрямую в
После подготовки файла следует установить базу данных через
В этом упражнении приведен краткий обзор базы данных newland_tours, которая и будет управлять сайтом Newland Tours. Для начала более внимательно ознакомимся с возможностями программы Microsoft Access, поскольку с помощью ее интерфейса гораздо проще понять структуру и компоненты базы данных.
Если ASP или ColdFusion применяются на локальном компьютере под управлением Windows XP, следует скопировать папку с базой данных в папку Shared Documents (Общие Документы), которая запускается через окно My Computer (Мой Компьютер). После размещения папки с базой данных в формате Access ( newland_tours.mdb ) в общие документы, ASP, ColdFusion и Dreamweaver получают доступ к базе данных.
Если ASP или ColdFusion применяется на базе сервера IIS на локальном компьютере под управлением Windows 2000, необходимо скопировать папку с базой данных в каталог C:\Inetpub\wwwroot\newland. Как известно, все, что находится в папке wwwroot, находится на локальном веб-сервере и доступно по адресу localhost.
Если ColdFusion используется в качестве автономного сервера на локальном компьютере под управлением Windows 2000, нужно поместить папку с базой данных в каталог C:\CFusionMX\wwwroot\newland.
Если ASP и ColdFusion расположены на удаленном сервере в локальной сети или на сервере хостинг-провайдера, следует поместить файл newland_tours.mdb в место для баз данных, указанное администратором сервера. В данном случае все зависит от настроек сервера.
Если приложение Access не установлено, достаточно просто прочесть текст и ознакомиться с представленными в этом уроке рисунками.
При открытии файла с базой данных отобразится окно, в левой части которого перечислено несколько категорий объектов, а в правой части расположены сами объекты. Эти категории были описаны в начале урока.

В категории Tables (Таблицы) есть шесть таблиц и столько же форм в категории Forms (Формы). Остальные категории пусты.

Некоторые таблицы включают гораздо больше данных, чем остальные. Самые объемные таблицы tbl_country и tbl_tours будут использованы для наполнения разделов "Country Profile" (содержащего данные по каждой стране) и "Find a Tour" (используемого для поиска нужных путешествий).

Таблица tbl_journal включает текст, используемый в разделе "Traveller’s Journal", расположенном на главной странице.
Таблица tbl_agents имеет непривычный вид, поскольку в ней присутствуют только числа, а не имена, как можно было предположить. Причина заключается в том, что числа, в действительности, являются внешними ключами: пользователь – это из таблицы tbl_users, а область деятельности – regionID из таблицы tbl_region.
Таблица tbl_user содержит информацию, используемую для аутентификации пользователей на сайте. После регистрации пользователя соответствующая ему информация помещается в таблицу. Следует обратить внимание, что в поле userGroup существует две категории: admin и visitor. Эти категории определяют, на какие страницы сайта имеет право заходить посетитель.
Закройте окна таблиц, чтобы вернуться к основному экрану.
Как говорилось, формы служат удобными интерфейсами, через которые данные вводятся в таблицы. На сайте Newland Tours формы применяться не будут, поскольку в сети программа Access недоступна. Вместо этого будут созданы специальные веб-формы, выполняющие те же функции. Но при создании таблиц в базе данных применялись формы Access, поэтому стоит с ними ознакомиться.

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

В каждой таблице с помощью полужирного начертания выделен ее первичный ключ. Внешние и первичные ключи соединены линиями. При tbl_agents содержались только числа. Таблица состоит из первичного ключа ( agentID ) и из двух внешних ( user и specialty ). Таблица tbl_journal не связана ни с одной таблицей. Наличие связей не является обязательным условием при формировании таблиц.

На этом знакомство с действующей базой данных и краткий курс по Access будут закончены.
Итак, теории и созерцания достаточно, – пора заняться реальным делом и подключить базу данных к страницам сайта. Для этого пригодятся все полученные ранее знания и умения. Шаги будут отличаться в зависимости от способа подключения к серверу и применяемой серверной технологии (ASP, ColdFusion или PHP).
Пользователи ASP и ColdFusion подключаются к базе данных в два этапа. Во-первых, требуется зарегистрировать на сервере имя источника данных (
В технологии PHP/MySQL не употребляются ODBC и
Варианты настройки базы данных настолько отличаются, что вместо общего набора инструкций приводятся несколько разных.
Этот раздел предназначен для всех пользователей ASP вне зависимости от способа подключения к серверу.
В представленных здесь материалах производится настройка Dreamweaver на подключение к существующему
Пользователям ASP, подключающимся к удаленному серверу, системное имя
При первом подключении не имеет значения, какая именно страница сайта открыта, так как Dreamweaver создает соединение для всего сайта. Выбор остановлен на странице index.asp, поскольку вскоре на нее будет добавлено динамическое содержимое.
Это действие откроет диалоговое окно Data Source Name (Имя источника данных), которое применяется для создания соединения сайта с базой данных.

Откроется диалоговое окно ODBC Data Source Administrator (Администратор источника данных ODBC). Это диалоговое окно относится к Windows, а не к Dreamweaver, и оно доступно также в папке Control Panel (Панель управления).

Для получения сетевого доступа к источнику данных следует добавить

Для создания

newland . Нажмите кнопку Select (Выбрать), а затем в диалоговом окне Select Database (Выбор базы данных) укажите файл newland_tours.mdb , который находится в папке C:\Documents and Settings\All Users\ Documents\database (Windows XP) или C:\Inetpub\wwwroot\newland\ database (Windows 2000).На этом шаге задается имя для

После создания
Заполнение этого диалогового окна предоставляет Dreamweaver достаточную информацию для подключения к базе данных посредством ODBC.

При закрытии диалогового окна Dreamweaver создаст на сайте папку Connections (Соединения), внутри которой будет помещен файл conn_newland.asp. Помимо этого, следует обратить внимание на панель Databases (Базы данных), в которой теперь отображается структура базы данных со всеми элементами.

Для создания набора записей и прикрепления данных на страницу следует перейти к упражнению "Извлечение наборов записей и отображение информации из базы данных".
Этот раздел предназначен для всех пользователей ColdFusion вне зависимости от способа подключения к удаленному серверу.
Пользователям ColdFusion, компьютеры которых подключены к удаленному серверу, потребуется, чтобы администратор сервера предоставил им пароль для доступа к службе
При первом подключении не имеет значения, какая именно страница сайта открыта, так как Dreamweaver создает соединение для всего сайта. Выбор предоставлен на странице index.asp, поскольку в следующем упражнении на нее будет добавлено динамическое содержимое.
Пароль дает разработчикам права доступа к серверу ColdFusion, который необходим для определения и использования источников данных.

Если на сервере ColdFusion уже существуют источники данных, к концу этого шага все они отобразятся на панели Databases (Базы данных).
Единственная проблема заключается в том, что среди них нет базы данных Newland Tours.
Вне зависимости от того, использовалась кнопка или ссылка, в браузере на странице Data Sources (Источники базы данных), откроется приложение для администрирования ColdFusion. Теперь для доступа к приложению потребуется ввести пароль.


Пользователям Windows XP следует перейти в папку C:\Documents and Settings\All Users\Documents\database\. Это путь к папке, на которую ссылается ярлык Shared Documents (Общие документы).
Пользователям Windows 2000, использующим автономную версию ColdFusion, следует перейти в папку C:\CFusionMX\wwwroot\newland\ database\.Пользователям Windows 2000, применяющим ColdFusion совместно с IIS, надо перейти в папку C:\Inetpub\wwwroot\newland\database\.
На этом шаге ColdFusion получает информацию, необходимую для подключения к базе данных.

Если на панели отображается содержимое базы данных newland_tours.mdb, это означает, что программа Dreamweaver успешно завершила соединение с базой данных. Пора создать набор записей и прикрепить к коду страницы данные из базы.
Для этого следует перейти к разделу "Извлечение наборов записей и отображение информации из базы данных".
Поскольку в PHP не используются ODBC и
Поскольку соединение будет доступно для всех страниц сайта, не имеет значения, какой файл открыт при его создании. Однако для создания соединения с MySQL должен быть открыт как минимум один файл.
Откроется диалоговое окно MySQL Connection.
Connection name: conn_newland.
MySQL server: localhost (в случае применения локального сервера) или имя, данное администратором сервера (в случае разработки на удаленном сервере).
User name и Password – имя пользователя и пароль для доступа к учетной записи MySQL.

Database: newland_tours.
В случае разработки на удаленном сервере данные доступа к MySQL может сообщить только администратор сервера. При использовании локального сервера следует просто указать информацию, заданную при установке MySQL. Если MySQL установлена на локальном компьютере, а пароль от нее утерян, следует попробовать ввести в качестве имени пользователя root, а поле для пароля оставить незаполненным.
Dreamweaver создаст на сайте папку Connections, а внутри нее — файл conn_newland.php. В нем содержится информация, необходимая страницам для доступа к MySQL. При каждом обращении сценария PHP к базе данных Dreamweaver использует этот файл.
Dreamweaver действительно получает доступ к базе данных, расположенной внутри MySQL, и предоставляет информацию о ней. Помимо этого, программа предоставляет ограниченные возможности для управления MySQL.

Соединение PHP/MySQL не будет работать до тех пор, пока папка не загрузится на сервер.
Последние изменения по усовершенствованию дизайна и структуры сайта производились довольно давно – в предыдущем уроке. После этого были представлены только материалы теоретического плана и упражнения по настройке. Но на страницы сайта никаких изменений пока не вносилось. В последнем упражнении этого урока колонка "Traveler’s Journal" будет динамически загружаться из базы данных. В браузере страница будет выглядеть так же, как раньше, но в Dreamweaver изменения будут заметны.
На освободившееся место будет помещен динамический текст.

<h3> , слева от тега <img> и выберите пункт Remove Tag (Удалить тег).Текст для колонки, содержащийся в базе данных, уже размечен HTML-тегами. Если не удалить тег <h3>, то теги разметки окажутся некорректно вложенными внутрь тега <h3>.
Поскольку сайт подключен к источнику данных, Dreamweaver может генерировать код, извлекающий данные из базы. В этом и следующем шагах создается набор записей, который, как говорилось в начале урока, представляет собой набор данных, соответствующих определенному критерию отбора и извлеченных из базы данных при помощи SQL-запроса.

Цель упражнения – отобразить конкретную запись журнала, однако требуются не все записи, а только самая последняя. По этой причине каждой записи соответствует особый идентификатор (первичный ключ). При этом значение идентификатора для каждой новой записи увеличивается. Таким образом, запись с самым высоким значением поля journalID является самой последней. Для выполнения задачи требуется отсортировать данные и извлечь содержимое последней записи.
rs_journal . В меню Connection (Соединение) выберите пункт conn_newland (или newland – в случае с ColdFusion). В меню Table (Таблица) выберите пункт tbl_journal. В разделе Columns (Столбцы) укажите вариант Selected (Выделенные) и, удерживая нажатой клавишу (Ctrl) (Windows) или (Command) (Macintosh), выделите пункты journalID и journal_entry.В этом диалоговом окне создается набор записей rs_journal. Данные для него извлекаются на основе критерия, заданного в SQL-запросе. Формирование SQL-запроса незаметно началось уже на этом шаге.
Во-первых, указано, что источнику данных соответствует соединение conn_newland (задающее tbl_journal, расположенная внутри этого источника данных. В-третьих, указано, что из таблицы требуется извлечь только поля journalID и journal_entry.

Теперь в SQL-запрос будет добавлено инструкция для сортировки записей по убыванию – в зависимости от времени ввода данных. Итак, информация, необходимая для создания набора записей, введена.

После нажатия OK набор записей отобразится на панели Bindings (Привязки) (так же, как в предыдущих уроках отображались переменные формы и переменные запроса).
Правильное размещение динамического текста относительно изображения может оказаться несколько проблематичным. В итоге, значок изображения, динамический текст и само изображение должны располагаться так же, как на приведенном примере.

Как известно, для тестирования

Если данные из базы отображаются в Dreamweaver, создание набора записей и использование функции

Если на странице отображается то же, что и на рисунке, то система полностью настроена, и с этого момента речь пойдет исключительно о коде.
В этом уроке вы узнали:
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.