Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабораторная работа5-укр.doc
Скачиваний:
1
Добавлен:
10.11.2019
Размер:
2.48 Mб
Скачать

133

Лабораторна робота №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] Ім'я_Таблиці [(ім'я_поля,...)]