REFERATUA.ORG.UA — База українських рефератів




NAME="city" VALUE="$add[$n]{'city'}">
State:
Zip:






EOF
# Ця форма додає два приховані поля, говорячи CGI, який вхід треба
#змінити.
for ($I = 0; $I <= $maxn; $I++) { print DAT $add[$I]{'line'}; }
close DAT;
system ("rm datalock");
die;

} elsif ($FORM{'a'} = "m") {
# внести зміни до необхідного запису
$n = $FORM{'n'}; # Скопіюавти запис до змінної.
# Внести зміни.
$add[$n]{'name'} = $FORM{'name'};
$add[$n]{'phone'} = $FORM{'phone'};
$add[$n]{'street'} = $FORM{'street'};
$add[$n]{'city'} = $FORM{'city'};
$add[$n]{'state'} = $FORM{'state'};
$add[$n]{'zip'} = $FORM{'zip'};
$add[$n]{'line'} =
"$n:$add[$n]{'name'}:$add[$n]{'phone'}:$add[$n]{'street'}:$add[$n]{'city'}:$add[$n]{'state'}:
В$add[$n]{'zip'}n";
for ($I = 0; $I <= $maxn; $i++) { print DAT $add[$i]{'line'}; }
close DAT;

print <Modification successful

The requested entry has been modified.


Go back to the form to make another search.

EOE
system ("rm datalock");
die;
} else { die; } # This should never be reached.

Звертання до SQL

Ми можемо використовувати ті ж сторінки форми HTML, які ми використовували, наприклад, для текстової бази даних. Перша форма розшукала існуючу базу даних. Показана відповідна програма CGI.

Пошук у базі даних SQL.

#!/bin/perl

require cgi_read;
use Msql; # завантажити модуль SQL

$dbh = Connect Msql; #під'єднатися до серверу mSQL

SelectDB $dbh "addresses"; # вибрано БД "addresses
$all = "name, phone, street, city, state, zip"; # всі поля адреси
$query = ""; # Встановити змінну для запиту.

foreach (keys %FORM) { # зібрати всі умови в один рядок
$query =. " $_ = $FORM{'$_'} AND";
}
$query =~ s/AND$//;

$sth = Query $dbh "SELECT $all FROM addresses WHERE $query"; # Відправити запит

print "Search Resultsn";

$I = 0; # немає співпадань.
while (@arr = FetchRow $sth) {
if ($I == 0) { $I = 1; } # 1 співпадання
if ($I == 1) {
print "

Your search results are listed below

";
print "
n";
};
$I++;
print <-- --

Name: $arr[0]
Phone: $arr[1]
Street: $arr[2]
City: $arr[3]
State: $arr[4]
Zip: $arr[5]

EOF
}
if ($I == 2) {
print "

";
print "Go back to the form to make another
Вsearch.
n";
print "n";
} elsif ($I == 0) {
print <Search Failed!

There are no entries which match your criteria


Go back to the form to make another search.

EOE
}

Фактично CGI-код в цьому випадку є в чотири рази менший за рівноцінний у першому прикладі. Крім того, дуже легко додати відповідність підрядку до запитання mSQL. Також помітьте відсутність номерів ID - mSQL є реляційною базою даних прямого доступу. Тобто не потрібно читати всі записи, щоб мати доступ до будь-яких з них.

Дійсна потужність сервера бази даних стає очевидною при безпосередній зміні бази даних.

!!!!!

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

Тепер ми розглядаємо CGI, який додає записи до бази даних. Ще раз - ми набуваємо викликані з бази даних замість табличних.

#!/bin/perl

require cgi_head;
use Msql;

$dbh = Connect Msql; # під'єднатися до серверу mSQL

SelectDB $dbh "addresses" #

Query $dbh "INSERT INTO addresses ( name, phone, street, city, state, zip ) VALUES
В('$FORM{'name'}, $FORM{'phone'}, $FORM{'street'}, $FORM{'city'}, $FORM{'zip'} )";

print <Addition successful
Your entry has been added to the address book.
Go back to the form to add another entry.

EOF

У випадку пласкої текстової версії, виробляється набагато гнучкіша схема доповнення. Звичайно, найбільша проблема у використанні сервера бази даних - знайти його. Є багато ситуацій, в яких ви не можете мати доступу до нього. Також, якщо текстова база даних стає недостовірною, ви завантажуєте її у ваш улюблений текстовий редактор і виправляєте її. Якщо ваша реляційній база даних стає недостовірною, та ви - не експерт з баз даних, вам краще взяти останні резервні копії.

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

Програма CGI пошуку

print "
";
print "Go back to the form to make another search.
n";
print "n";

стає такою :

print "
";
print "Go back to the form to make another search.
n";
if ($I == 1) {
print "Delete this entry.
";
print "Modify this entry.
";
}
print "n";

безпосереднє спрощення CGI:

#!/bin/perl

require cgi_head;
use Msql;
$dbh = Connect Msql;
SelectDB $dbh "addresses";
$all = "name, phone, street, city, state, zip";

if ($FORM{'a'} eq "d") {
Query $dbh "DELETE FROM addresses WHERE name=$FORM{'name'}";
print <Deletion successful

Your entry


 
Загрузка...