У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент



Реферат - Бази даних у Internet
28
рядок
}
$maxn = $n;

close DAT;

open (DAT, ">database.txt"); # відкрити БД для запису.
if ($FORM{'a'} eq "d") {              Якщо треба знищити запис,
   ($I = 0; $I <= $maxn; $I++) {  видати всі записи,
       ($I == $FORM{'n'}) { # крім того, який треба зтерти.
            print DAT $add[$I]{'line'};
        }
    }
   видати повідомлення та вийти.
   <<EOP;
<HTML><HEAD><TITLE>Request successful</title></head>
<BODY>
<H3>The selected entry has been deleted.</h3>
<A HREF="addrbk.html">Go</a> back to make another search.
</body></html>
EOP

   DAT;
   ("rm datalock");
   ;
} elsif ($FORM{'a'} eq "c") {


# Якщо користувач хоче змінити вхід, все стає трохи хитрішим.
Ми повинні спершу надрукувати зовні форму, подібні до первинної форми, щоб дозволити
користувачеві змінити значення запису.
           

змінна.
   <<EOF;
<HTML><HEAD><TITLE>Entry Modification</title></head>
<BODY>
<h4>Make the desired changes in the form below.</h4>
<FORM ACTION="change.cgi" METHOD="POST">
<INPUT TYPE=HIDDEN NAME="a" VALUE="m">
<INPUT TYPE=HIDDEN NAME="n" VALUE="$n">
Name: <INPUT SIZE=45 NAME="name" VALUE="$add[$n]{'name'}"><br>
Phone: <INPUT SIZE=45 NAME="phone" VALUE="$add[$n]{'phone'}"><br>
Street: <INPUT SIZE=45 NAME="street" VALUE="$add[$n]{'street'}"><br>
City: <INPUT SIZE=20 NAME="city" VALUE="$add[$n]{'city'}">
State: <INPUT SIZE=3 NAME="state" VALUE="$add[$n]{'state'}">
Zip: <INPUT SIZE=6 NAME="zip" VALUE="$add[$n]{'zip'}">
<br><br>
<INPUT TYPE=SUBMIT VALUE=" Entry 
<INPUT TYPE=RESET VALUE=" Form 
</form></body></html>
EOF
   Ця форма додає два приховані поля, говорячи CGI, який вхід треба
   змінити.
for ($I = 0; $I <= $maxn; $I++) { print DAT $add[$I]{'line'}; }
   DAT;
   ("rm datalock");
   ;

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

   <<EOE;
<HTML><HEAD><TITLE>Modification successful</title></head>
<BODY>
<H4>The requested entry has been modified.</H4>
<A HREF="addrbk.html">Go</a> back to the form to make another search.
</body><//html>
EOE
   ("rm datalock");
   ;
} 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) {       зібрати всі умови в один рядок
   =. " $_ = $FORM{'$_'} AND";  
}
$query =~ s/AND$//;

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

print "<HTML><HEAD><TITLE>Search Results</title></head><BODY>\n";

$I = 0; # немає співпадань.
while (@arr = FetchRow $sth) {
   ($I == 0) { $I = 1; } # 1 співпадання
   ($I == 1) {
       "<H4>Your search results are listed below</h4>";
       "<PRE>\n";
    };
   ;
   <<EOF;
-- --

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

EOF
}
if ($I == 2) {
   "</pre><br>";
    print "<A HREF=\"addrbk.html\">Go</a> back to the form to make another
Вsearch.<br>\n";
   "</body></html>\n";
} elsif ($I == 0) {
   <<EOE;
<HTML><HEAD><TITLE>Search Failed!</title></head><BODY>
<h4>There are no entries which match your criteria</h4>
<A HREF="addrbk.html">Go</a> back to the form to make another search.
</body></html>
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 <<EOF;
<HTML><HEAD><TITLE>Addition successful</title><head><BODY>
Your entry has been added to the address book.
<A HREF="add.html">Go</a> back to the form to add another entry.
</body></html>
EOF  

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

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


Сторінки: 1 2 3 4 5 6