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

Values (вираження,...)

Форма 2:

REPLACE [LOW_PRIORITY | DELAYED]

[INTO] Ім'я_Таблиці [(ім'я_поля,...)]

SELECT ...

Форма 3:

REPLACE [LOW_PRIORITY | DELAYED]

[INTO] Ім'я_Таблиці

SET ім'я_поля = вираження, ім'я_поля = вираження,...

UPDATE [LOW_PRIORITY] Ім'я_Таблиці SET ім'я_поля1=вир1,ім'я_поля2=вир2,...

[WHERE визначення_where]

UPDATE обновляє поля існуючої таблиці новими значеннями. Вираження SET показує, які поля (стовпці) повинні бути змінені, і значення, що повинні бути їм привласнені. Вираження WHERE, якщо воно є, указує, які ряди повинні бути обновлені. У противному випадку операція застосовується до всіх рядів таблиці. Ключове слово LOW_PRIORITY відкладає виконання операції до завершення роботи читання з таблиці інших клієнтів. Вираження UPDATE виконуються ліворуч праворуч.

3. Global.Asa

Global.asa дозволяє виконувати визначені скрипти на початку роботи клієнтської сесії чи при ініціалізації IIS. Прикладом тому може служити найпростіший лічильник числа відвідувань сайта. Більш того, припустимо використовувати множинні файли Global.asa. Однак варто пам'ятати, що ASP-скрипт шукає найближчий (розташований у тім же каталозі) файл Global.asa і використовує саме його.

По суті, цей файл може містити чотири скрипта: перший буде виконуватися при ініціалізації служби IIS/PWS (Application_OnStart), другий — при зупинці служби IIS/PWS (Application_OnEnd) (звичайно ці перші два скрипта відпрацьовують у процесі перезавантаження комп'ютера), і ще два скрипта виконуються додатково при ініціалізації сесії користувача (Session_OnStart) і по її закінченні (Session_OnEnd). Дана схема дуже сильно нагадує пари «конструктор-деструктор». Неспроста всяка перемінна, котра повинна бути використана (наприклад, у поточній сесії), може бути ініціалізована в Session_OnStart для того, щоб бути використаною в процесі роботи сесії, вона ж знищується (обнуляється) у Session_OnEnd.

Global.asa не може містити теги HTML. Неприпустиме використання JavaScript. Не рекомендується писати файл Global.asa за допомогою яких-небудь HTML-редакторів, для цього набагато краще використовувати NotePad. І ще одна рада: перш ніж вставляти скрипт у файл Global.asa, спробуйте його в роботі в звичайному ASP-файлі.

<OBJECT RUNAT=Server

SCOPE=Session

ID=Tool1

PROGID="MSWC.Tools">

</OBJECT>

<SCRIPT LANGUAGE = "VBScript" RUNAT="Server">

Sub Session_OnStart

Dim strUserLogon

Dim StrUserSecurity

' Ці перемінні сесії будуть тримати

' значення імені користувача ( logon) і права його доступу

strUserLogon = Request.ServerVariables("USER_LOGON" )

strUserSecurity = "PUBLIC"

End Sub

Sub Session_OnEnd

' Цей код знищує компонент Tools для поточної сесії.

Set Tool1 = Nothing

'А цей обнуляє перемінні сесії.

strUserLogon = ""

strUserSecurity = ""

' Увага!: Даний код застосовувати в цьому змісті зовсім не обов'язково

' тому що об'єкти будуть вигружені з пам'яті web сервером

' автоматично по закритті поточної сесії.

End Sub

</SCRIPT>

Приклад файлу Global.asa

4. Додаємо новий запис (UploadForm.Asp і Upload2dbs.Asp)

Тепер, коли ми розібралися з SQL, можна приступати до додавання нової статті, причому робити ми це будемо прямо із сайта, а якщо бути точніше — безпосередньо з HTML-форми. Для цього спочатку створимо файл із самою формою і визначимо скрипт-реакцію на підтвердження (кнопку «Publish the article!»).

Насамперед слід уточнити задачу на цьому етапі. Отже, очевидно наступне:

  • на завантаження запису сайта повинний мати право не кожний (отже, бажано передбачити пароль для доступу до цієї функції);

  • у кожного запису є визначена тема (рубрика), причому вона не може бути довільною, а повинна вибиратися зі списку;

  • список можна зберігати безпосередньо в HTML-файлі і, щораз змінюючи його, змінювати сам файл. Це найпростіший і швидкий спосіб;

  • однак для того, щоб дозволити динамічно змінювати і поповнювати цей список, рекомендується тримати його в базі даних. Це дозволить користувачам довільним образом змінювати його вміст і не зажадає переробки форми.

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

<title>Завантаження запису</title>

</head>

<body bgcolor=gray>

<FORM NAME="mainform" METHOD="GET" ENCTYPE="multipart/form-data" ACTION="http://localhost/Upload2DBS.asp">

<b>Користувач: </b><br>

<input type=TEXT size=56 name="User"><br> <! -і Поле імені користувача -і >

<b>Оцінка</b><br>

<input type="text" name="Title" size="56"><br> <! - Поле заголовка запису -і >

<b>Анотація:</b><br>

<textarea name="Annotation" cols="56"></textarea><br> <! - Поле анотації до запису -і >

<b>Конфігурація:</b><br>

<textarea cols="56" name="Konfiguration" rows="15"></textarea><br> <! - Поле конфігурації-і >

<b>Система </b><br> <! - Поле системи -і >

<select name="Система">

<option>Other</option>

<option>Pentium I</option>

<option>Pentium II</option>

<option>Pentium III</option>

<option>Pentium IV</option>

<option>AMD DURON</option>

<option>AMD ATHLON</option>

</select>

<p>

<b>Пароль бази</b><br>

<input type="password" name="Password">

<input type=SUBMIT value="Занести в базу" name="SUBMIT">

<input type="reset" name="Reset" value="Очистити ">

< /FORM>

</body>

</html>

Рис.5.5. Заповнення бази.

Перш ніж приступити до виконання нашої задачі, варто сказати ще про одну невелику проблему: коли ми будемо вставляти в осередок бази даних текст, його форматування (навіть найпростішому) не збережеться, і надалі його неможливо буде коректно відобразити на HTML-сторінці, оскільки поле Memo зберігає неформатирований рядок тексту. Щоб уникнути цього, варто написати функцію, що дозволить робити примітивне HTML-форматування введеного тексту статті, перед тим як записати його в базу даних. Іншими словами, у самому примітивному випадку (хоча б для того, щоб зберегти вихідну розбивку на рядки) функція повинна вставляти символи кінця рядка там, де у вхідному потоці маються символи переносу рядків.

Приклад Upload2DBS.asp

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

</head>

<body>

<%

Set db = Server.CreateObject("ADODB.Connection")

db.Open "DSN=Komp;UID=sa;PWD=;"

SQLQuery = "Select * From WAPassword Where ID = 1"

Set rs = db.Execute(SQLQuery)

DBP = rs.Fields("Password").value

db.Close

Set db = Nothing

Function FormatStr(InString)

on Error resume next

InString = Replace(InString, CHR(13) & CHR(10), "<br>")

InString = Replace(InString, CHR(10) & CHR(10), "</P><P>")

InString = Replace(InString, CHR(10), "<BR>")

InString = Replace(InString, "'", "`")

InString = Replace(InString, CHR(34), "/")

FormatStr = InString

End Function

ErrA = 0

ErrT = 0

ErrP = 0

ErrC = 0

AUT = Request.QueryString ("User")

If AUT = "" Then ErrA = 1 End If

AUT = FormatStr(AUT)

TIT = Request.QueryString ("Title")

If TIT = "" Then ErrT = 1 End If

TIT = FormatStr(TIT)

ART = Request.QueryString ("Konfiguration")

If ART = "" Then

ART = "No Text"

If File1 = "No" Then

ErrC = 1

End If

End If

ART = FormatStr(ART)

SBJ = Request.QueryString ("System")

IsTopNew = Upload.Form("IsTopNewSelector")

ANN = Request.QueryString ("Annotation")

ANN = FormatStr(ANN)

If ANN = "" Then

ANN = "NA"

End If

Password = Request.QueryString ("Password")

If Password = DBP Then

If ErrA = 0 and ErrT = 0 Then

Set db = Server.CreateObject("ADODB.Connection")

db.Open "DSN=Komp;UID=sa;PWD=;"

sSQL =

"insert into Komp (User,Title,Konfiguration,System,Date,Annotation)