Лабораторна робота №5 “Робота з ASP”
Ціль Cтворення WEB сайта з використанням команд ASP. Динамічне відновлення даних з додатком Microsoft Access. Додавання даних у базу даних із броузера.
Для початку давайте все-таки розберемося, що ж від нас потрібно. По суті, необхідно створити базу даних усіх статей, підготувати кілька HTML-форм для завантаження статей на сервер, їхнього пошуку, сортування, видалення і, нарешті, відображення результату.
1. Створення і підготовка бази даних
Насамперед створимо базу даних статей, для чого:
запустимо додаток Microsoft Access;
кожним з відомих способів створимо нову базу даних. Назвемо її «Komp»;
у створеній базі даних створимо таблицю з ім'ям, наприклад, «Komp»;
р ис. 5.1
Рис. 5.1. Структура таблиці.
заповнимо таблицю декількома статтями відповідно до створених полів (рис. 5.2);
Р ис. 5.З. зміст таблиці.
збережемо базу даних у файлі «KompDB.mdb».
Далі необхідно прописати нашу базу даних у відповідному розділі джерел дані системи, для цього:
запустимо программу-конфігуратор джерел даних (Data Sources ODBC) – Start->Settings->Control Panel->Administrative Tools->Data Sources ODBC;
перейдемо у вкладку «System DSN» і створимо нове джерело даних, натиснувши на «Add...»;
у списку драйверів, що з'явився, виберемо драйвер баз даних Microsoft Access - «Microsoft Access Driver (*.mdb)» і натиснемо на «Finish»;
у рядку «Data Source Name» задамо ім'я нашої бази даних, наприклад, «Komp» (це те ім'я, по якому ми надалі будемо звертатися до неї);
н атиснемо на «Select…», виберемо підготовлений нами файл «KompDB.mdb» і натиснемо «OK».
Рис.5.3. Data Sourse.
У результаті в списку джерел даних у вашій системі з'явиться рядок, представлений на рис.5.3.
2. Оформляємо головну сторінку (index.Asp)
З ASP працювати дуже просто. Для цього треба усього лише вставити текст скрипта ASP в парі тегів <% %>. В іншому ASP-файл нічим не відрізняється від HTML-файлу (за винятком, мабуть, розширення). Коментарі в HTML, як відомо, вставляються в парі тегів <!-- текст коментарю -->, у ASP же закоментувати рядок можна за допомогою символу ‘ (апостроф) у її початку./2/
<html>
<head>
<title>Комп'ютерний сайт в інтернету</title>
</head>
<body>
<center>
<! -і Визначимо основні линки -і>
<a href="http:// localhost /UploadForm.asp" class="antiLine"> Завантаження інформації</a><br>
<%
Set db = Server.CreateObject("ADODB.Connection") 'Створюємо перемінну Active Data Object 'для з'єднання з базою даних
db.Open "Komp" 'відкриваємо нашу базу даних
sSQL = "SELECT * FROM Komp" 'Формуємо SQL запит
Set rs = db.Execute(sSQL) 'і виконуємо його, а результат заносимо 'у перемінну rs
Response.Write Link & "<br>" 'Відображаємо перемінну Link
Response.Write "<i>By " & 'Відображаємо вміст поля
rs.Fields("User").value ‘User
& "</i><br>"
ANN = rs.Fields("Annotation").value
If ANN <> "NA" Then 'Відображаємо вміст поля
Response.Write ANN 'Annotation, якщо воно не порожнє
End If
db.Close 'Закриваємо базу даних
Set db = Nothing 'і обнуляєм перемінну - покажчик
%>
</center>
</body>
</html>
По-перше, як ви напевно помітили, ASP-код легко сполучається з HTML-тегами; у цьому його достоїнство. Так, приміром, рядок Response.Write Link & "<br>" відображає на екрані броузера клієнта підготовлене сервером значення перемінної Link і HTML-тег <br>, тобто переклад рядка. Особливий інтерес викликає перемінна rs.
Таким чином, вираження rs.Fields ("Konfiguration ").value означає значення поля " Konfiguration " поточного значення покажчика на елемент бази даних (у нашому випадку статей) і містить текст запису, що відповідає поточній позиції покажчика на всі статті. Перехід до наступного елементу бази (зсув покажчика) виконується за допомогою інструкції Rs.MoveNext. У приведеному вище прикладі це не робиться, а попросту формується посилання на текст статті у виді її назви і відображається коментар найпершої статті, що відповідає результату запиту. Давайте спробуємо відобразити всі статті нашої бази даних на головній сторінці у виді HTML.
Далі відкривається база даних, з якої читається стаття (запис), що відповідає ідентифікатору, переданому з головного скрипта (index.asp).
<html>
<head>
<title>Kомп’ютерний сайт</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
<center>
<p><font size="3" color="#000000"><b>Головна сторінка</b>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="640" >
<! -і Створимо таблицю шириною 640 пиксел -і>
<tr>
<td WIDTH="640" BGCOLOR="#FFCC99" valign = top>
Список усіх записів нашої бази даних:
</td>
</tr>
<! -і Наша таблиця буде містити всього один стовпчик, напишемо в ній поки заголовок -і>
<%
Set db = Server.CreateObject("ADODB.Connection")
db.Open "Komp"
sSQL = "SELECT * FROM Komp"
Set rs = db.Execute(sSQL)
Cnt = 0 'Заводимо лічильник статей
Do While NOT Rs.EOF 'Поки в базі є статті (початок циклу)
%>
<tr> <!-іНовий ряд у таблиці -і >
<td> <!-іНовий осередок -і >
<%
If rs.Fields ("Konfiguration ").value <> "No Text" Then
Link = "<a href= http://localhost/ArtTempl.asp?id=" &
rs.Fields("ID").value & ">" &
rs.Fields("Title").value & "</a>"
End If
Response.Write Link & "<br>"
Response.Write "<i>By " & rs.Fields("User").value & "</i><br>"
ANN = rs.Fields("Annotation").value
If ANN <> "NA" Then
Response.Write ANN
End If
%>
</td> <!-іКінець осередку -і >
</tr> <!-і Кінець ряду -і >
<%
Rs.MoveNext 'Перехід до наступного запису в базі статей
Cnt = Cnt + 1 ' Збільшення лічильника статей
Loop ' Кінець циклу
db.Close
Set db = Nothing
%>
<p><font size="3" color="#000000"><i>
<%
Response.Write " Усього - " & Cnt & "записів"
%>
</i></font>
</font></p>
</table>
</center>
</body>
</html>
Створюємо головну сторінку
M B Asus +P III 800 |
1 |
Норма |
Сашко |
Працювати буде |
P III |
22 червня 01 |
K7 VA + DURON 850 |
2 |
Круто |
Дмитрик |
Прекрасний комп'ютер |
AMD |
4 березня 01 |
K6 VA + Athlon 600 |
3 |
Погано |
Світла |
Слабенько буде |
AMD |
4 січня 00 |
Рис.5.4. Головна сторінка.
У такий спосіб у таблицю в циклі будуть додаватися ряди з посиланнями на статті із анотаціями, поки не будуть відображені всі статті з бази даних. Мова структурованих запитів — SQL
Настала настав час розібратися з тим, що таїться за рядками:
sSQL = "SELECT * FROM Komp"
Set rs = db.Execute(sSQL)
По суті, саме за цими двома рядками криється робота з нашою базою даних: перша являє собою текстовий рядок із запитом до бази даних (текстові рядки в ASP записуються в подвійних лапках); друга — містить директиву виконання цього запиту з одночасним присвоєнням результату перемінної (покажчику на записі в базі даних). Для повноцінної роботи нам необхідно познайомитися з чотирма операторами цієї могутньої мови, призначеного спеціально для роботи з базами даних.
DELETE [LOW_PRIORITY] FROM «Ім'я Таблиці»
[WHERE Визначення]
DELETE видаляє ті ряди з «Ім'я Таблиці», що задовольняють умові, визначеному в «Визначенні», і повертає число вилучених рядів. Якщо виконати команду DELETE без умови WHERE, то всі ряди зазначеної таблиці будуть вилучені. У цьому випадку DELETE поверне 0. Ключове слово LOW_PRIORITY відкладає виконання операції DELETE до завершення роботи читання з таблиці інших клієнтів.
Приклад:
DELETE FROM Komp WHERE ID = 1
<!-іВидалити всі ті статті (запису), чиї параметри ID рівні 1-->
SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [DISTINCT | ALL]
Вираження_Select,...
[INTO OUTFILE ім'я_файлу' опції_експорту]
[FROM посилання_на_таблиці
[WHERE where_визначення]
[GROUP BY ім'я_стовпця,...]
[HAVING where_визначення]
[ORDER BY {беззнакове_ціле | ім'я_стовпця } [ASC | DESC] ,...]
[LIMIT [зсув,] ряди]
[PROCEDURE ім'я_процедури] ]
SELECT використовується для витягу рядів (записів) з однієї чи більш таблиць. Вираження_Select визначає стовпці таблиці, значення яких необхідно витягти. Усі ключові поля повинні бути задані в строгій послідовності. Приміром, вираження HAVING повинне випливати за будь-яким вираженням GROUP BY і до будь-якого вираження ORDER BY.
Вираження_Select можна замінити псевдонімом (alias) за допомогою ключового слова AS. Псевдонім використовується як ідентифікатор імені стовпця і може бути використаний поряд із ключовими словами ORDER BY чи HAVING.
INSERT використовується для додавання нових записів в існуючу таблицю. Припустимо дві форми використання INSERT.
Форма 1:
INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
[INTO] Ім'я_Таблиці [(ім'я_стовпця,...)]
VALUES (вираження,...),(...),...
Форма 2:
INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
[INTO] Ім'я_Таблиці [(ім'я_стовпця,...)]
SELECT ...
Перша форма – INSERT ... VALUES — вставляє ряди на підставі заданих значень. Друга форма – INSERT ... SELECT — вставляє ряди, обрані з іншої таблиці.
Приклади:
INSERT INTO Ім'я_Таблиці (Поле1,Поле2) VALUES(15,Поле1*2);
Ключове слово LOW_PRIORITY відкладає виконання операції до завершення роботи читання з таблиці інших клієнтів. Ключове слово IGNORE у команді INSERT дозволяє уникати вставки повторюваних рядків (використовується в сполученні з ключовими словами PRIMARY чи UNIQUE). Для другої форми INSERT INTO ... SELECT операція не може містити вираження ORDER BY. Таблиця, у яку виробляється додавання записів, не може бути присутнім у вираженні FROM частини SELECT запиту тому, що заборонено робити виділення з тієї ж самої таблиці, у яку виробляється вставка.
REPLACE служить для редагування вмісту таблиці і працює в точності як INSERT, за винятком того, що якщо старий запис у таблиці має те ж значення, що і записувана, те старий запис віддаляється перш, ніж додається нова.
Форма 1:
REPLACE [LOW_PRIORITY | DELAYED]
[INTO] Ім'я_Таблиці [(ім'я_поля,...)]