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)