Этот учебник был изначально написан в 2001 году и может быть устаревшим. С тех пор мы опубликовали другие учебные пособия по ColdFusion, которые более актуальны. Вот несколько новых руководств, которые вы можете попробовать:
- Пять звезд! Добавьте виджет рейтинга в приложение ColdFusion
- Коротышка: обрезай жир с ColdFusion
- ColdFusion 9 к вашим услугам: обработка изображений с помощью AIR
- Что нового в ColdFusion 9?
Вступление:
Придет время, когда вам нужно будет работать с базой данных для веб-сайта. Использование базы данных значительно расширяет ваши возможности по добавлению и удалению контента, и в целом для настройки требуется меньше усилий.
Возьмите этот сайт для примера. С его многочисленными статьями без использования базы данных должна быть сделана отдельная веб-страница для каждой статьи. Конечно, вы можете автоматизировать вещи с помощью SSI, но вам все равно придется создавать отдельную страницу для каждой статьи.
С базой данных все по-другому, вы можете просто сделать одну страницу, чтобы просмотреть все ваши статьи. Вы просто передаете переменную в ссылке, такую как ID = 2, и это говорит базе данных об обслуживании статьи № 2. Как это сделать, будет объяснено в этой статье.
Для доступа к базам данных используются 3 основных языка программирования. PHP, который обычно встречается на платформах unix / linux, ASP, созданный Microsoft и находящийся в основном на платформах NT, и ColdFusion (CF), который также можно найти на платформах NT.
Эта статья покажет вам, как использовать ColdFusion для доступа к базе данных с веб-сайта и использовать ее для отображения информации.
О ColdFusion
ColdFusion был создан как коммерческий продукт корпорацией Allaire. Как коммерческий продукт, он имеет некоторые особенности, отличные от других языков сценариев на стороне сервера. Первое существенное отличие состоит в том, что сценарии ColdFusion не должны отображать свой исходный код, как любой другой язык сценариев, возможно запускать зашифрованные версии сценариев. Это позволяет людям продавать свои собственные сценарии, не опасаясь пиратства, однако побочным эффектом этого является ограничение потока бесплатных сценариев CF с открытым исходным кодом для использования обучающимся веб-мастером. Второе основное отличие заключается в том, что ColdFusion стоит денег. Серверный язык сценариев работает с переводчиком. В зависимости от расширения имени файла, который нужно обслужить, .php .asp или .cfm, сервер сначала отправит файл интерпретатору, который динамически генерирует вашу страницу. Поэтому для использования этих языков вам необходимо установить их на свой сервер. PHP бесплатный, ASP бесплатный, но CF стоит денег, и это может быть причиной того, что он растет медленно. Однако большинство пакетов NT-хостинга уже включают в себя ColdFusion, поэтому для тех, кто не владеет собственным сервером, эта разница в цене не окажет большого влияния.
Что касается самого языка, я раньше работал с ASP и PHP, и я считаю, что ColdFusion легче всего изучать и использовать.
О базах данных
База данных является бэкэндом любого веб-сайта CF. Для целей данного руководства мы будем использовать Microsoft Access. Microsoft Access — это реляционная база данных, которая означает, что вы можете связать таблицы друг с другом. Теперь в этой статье предполагается, что вы знаете, как работать с базой данных, и знакомы с основными терминами, такими как Field, Row и Table.
При доступе к реляционной базе данных с веб-сайта независимо от того, является ли он Oracle, Microsoft или MySQL, и независимо от того, используете ли вы CF, PHP или ASP, вы будете использовать язык, называемый SQL. SQL — это мост между внешним интерфейсом вашего сайта и внутренним сервером. В этой статье вы узнаете, как создавать и использовать базовые операторы SQL, которые можно применять к любому языку сценариев на стороне сервера, а не только к CF.
Чтобы разрешить CF доступ к базе данных, вам нужно настроить DSN на сервере. Для этого сначала загрузите файл базы данных, а затем скажите администратору сервера, что вам нужно настроить DSN с именем XXXX с помощью драйверов Microsoft Access, и сообщите им местоположение файла базы данных.
Основной ColdFusion
Для начала назовите все ваши CF-файлы с расширением .cfm. ColdFusion очень похож на HTML в том смысле, что он использует теги для определения многих функций, это может облегчить изучение. Посмотрите на следующий пример:
Рисунок 1. Form.html
<form method = "post" action = "name.cfm">
<input type = "text" size = "20" name = "name">
<input type = "submit" value = "Submit">
</form>
Рисунок 2. Name.cfm
<CFOUTPUT>
Hello, #name#, Welcome to my website!
</CFOUTPUT>
Теперь давайте рассмотрим это. В name.cfm первый тег, который вы видите, является тегом <CFOUTPUT>. Этот тег может быть помещен в любое место на веб-странице, он может быть помещен в середине тега HTML, не имеет значения, что он делает, если сообщает интерпретатору CF, что вы собираетесь отображать переменную. Сама переменная заключена в #, как CF отмечает свои переменные. Это вызывает проблему в некоторых случаях, когда вы используете # на своем сайте, например, при объявлении цветов. Это очень просто исправить, вы можете просто переместить теги <CFOUTPUT> прямо по сторонам переменной, как в следующем примере.
Рисунок 3. Name.cfm
Hello, <CFOUTPUT #name#</CFOUTPUT>, Welcome to my website!
Или вы можете просто поставить двойной ##, когда вам нужно использовать знак фунта для другой цели. Наконец, мы видим тег </ CFOUTPUT>, и, как и HTML, вам нужен конечный тег для большинства тегов CF.
Базовый SQL
Теперь, когда вы знаете базовый CF, вам нужно изучить базовый SQL. SQL — это очень простой язык. Посмотрите на следующее утверждение:
Рисунок 4. Базовый SQL
SELECT Name Height Weight Sex
FROM Friends
Теперь давайте рассмотрим это. Предположим, у вас есть база данных всех ваших друзей, вы бы назвали таблицу Friends и назвали поля формы Имя, Рост, Вес и Пол. Это заявление SQL будет возвращать список ваших друзей вместе с их ростом, весом и полом. Теперь посмотрим на следующее утверждение:
Рисунок 5. Где заявление
SELECT Name Height Weight
FROM Friends
WHERE Sex LIKE 'Male'
Теперь давайте рассмотрим это. То, что сделало бы это утверждение, вернет всех ваших друзей-мужчин. Обратите внимание на строку, начинающуюся с WHERE, это называется выражением критерия. Слово LIKE является поисковым предложением. См. Таблицу 1 для других условий поиска.
Таблица 1. Условия поиска
= Равно Фамилия = ‘Смит’
<> Не равно FirstName
<> «Ким» <Меньше возраста <’20’
<= Меньше или равно возрасту <= ’20’
> Больше чем возраст> ’20’
> = Больше или равно возрасту> = ’20’
Между тестами включительно Возраст между «20» и «30»
Exists Тест на существование FavMovie Exists
В тестах для списка значений LastName IN («Смит», «Джонс»)
Пустые тесты на нулевое значение FavMovie IS NULL
Is Not Null Тесты для значения FavMovie NOT NULL
Лайк- тесты для паттерна FavMovie типа «Храброе сердце»
Кроме того, вы можете включить подстановочный знак для этих критериев выражений. Например, если вы хотите, чтобы все ваши друзья имели имя, начинающееся с буквы «А», вы бы использовали следующий пример:
Рисунок 6. Подстановочный знак
SELECT FirstName, LastName
FROM Friends
WHERE FirstName LIKE 'A%'
Базовая настройка базы данных
При создании вашей базы данных есть некоторые вещи, которые вы должны знать. Прежде всего, никогда не включайте пробелы в имена ваших полей. Это вызовет проблемы позже. Во-вторых, никогда не называйте имя поля с помощью зарезервированного ключевого слова, такого как «текст» или «дата», это также вызовет проблемы. Наконец, вы должны правильно указать поле типа данных. Ниже приведен список типов данных и того, что обычно используется для ввода в них.
Таблица 2. Типы данных
Текст 255 символов — Радио, Выбрать, Текст, Пароль
Только номер — Радио, Выбрать, Текст, Пароль
Дата / Время Дата или Время (мм / дд / гг) — Радио, Выбрать, Текст
Да / Нет Верное или Ложное значение — Флажок
AutoNumber автоматически нумерует строки — нет
Форматы валют для валюты — Радио, Выбрать, Текст
Текст примечания без ограничений — Textarea
На приведенной выше таблице есть некоторые примечания. Прежде всего, тип данных autonumber идеально подходит для нумерации статей. Каждый раз, когда добавляется новая статья, она просто генерирует для нее идентификатор, который можно использовать для различных целей, поскольку каждая статья будет иметь уникальный идентификатор. Второе замечание: у типа данных memo есть ограничение, однако оно настолько велико, что вы, вероятно, никогда его не достигнете.
Интеграция с базой данных ColdFusion
Теперь, когда вы знаете основы того, что вам нужно для создания веб-сайта, интегрированного с базой данных, пришло время собрать все воедино.
Создайте базу данных с именем Friends и таблицу в ней с именем Friends. Создайте следующие поля и типы данных:
FirstName — Текст
LastName — Текст
Возраст — число
FriendID — AutoNumber
Секс — Текст
FavMovie — Текст
FavColor — Текст
Автомобиль — Текст
Комментарии — Памятка
Затем заполните соответствующие значения для нескольких человек. Загрузите его на свой сервер и попросите администратора сервера создать для него DSN с именем «Friends», используя драйверы Microsoft Access.
Теперь у нас есть база данных, давайте сделаем сайт для нее. Сначала давайте создадим страницу, которая позволит людям искать в базе данных.
Рисунок 7. Search.htm
<form method = "post" action = "results.cfm">
<h1>Search For Friends</h1>
<select name = "Sex">
<option value = "male">Male
<option value = "female">Female
</select>
<input type = "Submit" value = "Submit">
</form>
У нас есть страница простого поиска, теперь нам нужна страница результатов:
Рисунок 8. Results.cfm
<CFQUERY DATASOURCE = "Friends" NAME = "MAIN">
SELECT FirstName, LastName, Age, FriendID
FROM Friends
Where Sex LIKE '#sex#'
</CFQUERY>
<div align = «center»>
<b> Вы нашли следующих друзей </ b> <br>
<table border = «1»>
<TR>
<TD>
Имя
</ TD>
<TD>
Фамилия
</ TD>
<TD>
Возраст
</ TD>
<TD>
Больше информации
</ TD>
</ TR>
<CFOUTPUT QUERY = «MAIN»>
<TR>
<TD>
#Имя#
</ TD>
<TD>
#Фамилия#
</ TD>
<TD>
#Возраст#
</ TD>
<TD>
<a href = «info.cfm?ID=#FriendID#> Нажмите здесь! </a>
</ TD>
</ TR>
</ CFOUTPUT>
</ Table>
</ DIV>
Теперь давайте рассмотрим выше. Как вы видите, выполняя ColdFusion Query, вы просто заполняете теги CFQUERY оператором SQL, и все готово. Любая часть оператора SQL может быть заменена переменной, переданной с предыдущей страницы, как я сделал с переменной пола. Затем обратите внимание, что у тегов CFOUTPUT есть аргумент запроса, это говорит о том, что он извлекает информацию из запроса, а также иногда вы будете использовать несколько запросов на одной странице, сообщая, какой запрос использовать.
Затем вы заметите, что мне нужно было включить только одну строку таблицы между тегами CFOUTPUT, потому что ColdFusion будет дублировать все, что есть в тегах CFOUTPUT, один раз для каждой строки, возвращаемой запросом.
Наконец обратите внимание на то, что находится в столбце «Подробнее». Это ссылка на другую страницу, которая также передает FriendID в качестве аргумента. Давайте посмотрим на эту страницу сейчас.
Рисунок 9. info.cfm
<CFQUERY DATASOURCE = "Friends" NAME = "INFO">
SELECT *
FROM Friends
WHERE FriendID = '#ID#'
</CFQUERY>
<div align = «center»>
<CFOUTPUT QUERY = «INFO»>
<h1> Информация о друге для # FirstName # #LastName # </ h1>
<P>
<b> Пол: #sex # </ b> <br>
<b> Возраст: #age # </ b> <br>
<b> Любимый фильм: #FavMovie # </ b> <br>
<b> Любимый цвет: #FavColor # </ b> <br>
<b> Автомобиль: #car # </ b> <br>
Комментарии: <br>
#ParagraphFormat (Комментарии) #
</ Cfoutput>
</ DIV>
Теперь давайте рассмотрим выше. В операторе Select я использую *, потому что я хочу выбрать все поля. Затем в операторе where я использую переменную ID, которую я передал в URL. На этот раз для вывода я не помещаю его в таблицу, поскольку каждый идентификатор уникален, и я знаю, что будет возвращена только одна строка. Затем я перечисляю переменные, как и прежде, с одним исключением. Для переменной комментария я включаю функцию ParagraphFormat. Эта функция распознает две пустые строки между абзацами и вставляет туда тег <p>, чтобы он правильно отображался на странице.
Вывод
Теперь вы сможете создать полностью интегрированный с базой данных сайт ColdFusion. Следите за моей следующей статьей, которая будет охватывать передовые методы промежуточного кодирования и более продвинутый SQL