Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РЭУБД_лекции.doc
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
1.05 Mб
Скачать
  1. Занесение новой информации во все таблицы базы данных

Часть 1

#!d:/actiperl/bin/perl.exe

# add new wine to database - 1-st stage -- create html form

use DBI;

# declarations

my $dbh ; #database handler

my $sth ; #database statement handler

%countries = (); #declared countries

%typus = (); #declared types of wines

$base = 'wineyard'; #database name

$comp = 'localhost'; #IP-address of host computer

$dbport = '3306'; #standard MySQL port

print "Content-type: text/html\n\n";

print <<EOH;

<HTML>

<HEAD>

<META NAME="Author" CONTENT="Alexandre Lazarev">

<style type="text/css">

.norm {padding-left: 20; padding-right: 10; padding-top: 10; }

a {text-decoration: none; }

</style>

<TITLE>Wineyard DB_connection</TITLE>

</HEAD>

<BODY BGCOLOR="#F0F0F0" TEXT="#000000" LINK="#0000EE" VLINK="#CC0080" ALINK="#CC66CC">

<h1 align="center"><font color="#0602B0" size="+4">Wineyard</font></h1>

<p class="norm" align="center"><font size="+1">Интерфейс к базе данных по винам

на основе <b>MySQL</b></font></p>

<hr align="center" noshade size="2" width="90%">

EOH

# process database index files

$dbh = DBI->connect("DBI:mysql:database=$base;host=$comp;port=$dbport", '', '');

if (not $dbh) {

print <<ERRDB;

<p class="norm">Не удалось открыть связь с базой <b>$base</b> по порту $dbport.<br>

Причина ошибки – <b>$DBI::errstr</b></p>

<hr align="center" noshade size="2" width="90%">

<p class="norm" align="left"><font size="+1"><a href="/wineyard/index.html">Вернуться

к главной странице</a></font></p>

</body></html>

ERRDB

exit;

};

$sth = $dbh->prepare('select ctry, id from country where id > 0');

$sth->execute;

while(($ky, $val)=$sth->fetchrow_array) { #country name is the key

$countries{$ky} = $val;

};

$sth->finish;

$sth = $dbh->prepare('select typ, id from type where id > 0');

$sth->execute;

while(($ky, $val)=$sth->fetchrow_array) { #type of wines is the key

$typus{$ky} = $val;

};

$sth->finish;

$dbh->disconnect;

print <<SOF;

<form name="add_db" action="/cgi-bin/addb.pl" method="post">

<p class="norm" align="left">Добавляется новый напиток</p>

<p class="norm">

<table align="center" border="0" width="90%" cellpadding="2">

<tr><td>Наименование:</td><td><input type="text" size="50" maxlength="100" name="nm"></td></tr>

<tr><td>Страна-производитель:</td>

<td>Выберите из списка <select name="ctid">

SOF

foreach $ky (sort keys %countries) {

$val = $countries{$ky};

print "<option value=$val>$ky\n";

};

print <<MID;

</select></td><tr>

<tr><td>Тип напитка:</td>

<td>Выберите из списка <select name="tpid">

MID

foreach $ky (sort keys %typus) {

$val = $typus{$ky};

print "<option value=$val>$ky\n";

};

print <<EOFR;

</select></td><tr>

<tr><td>Количество:<br>(можно не указывать)</td><td><input type="text" size="8" name="qty"></td></tr>

<tr><td>Номер склада:<br>(можно не указывать)</td><td><input type="text" size="8" name="skl"></td></tr>

<tr><td><input type="submit" value="Отправить в базу"></td>

<td><input type="reset" value="Очистить поля формы"></td></tr>

</table>

</p>

</form>

<hr align="center" noshade size="2" width="90%">

<p class="norm" align="left"><font size="+1"><a href="/wineyard/index.html">Вернуться

к главной странице</a></font></p>

<hr align="center" noshade size="2" width="90%">

</BODY>

</HTML>

EOFR

exit;