Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Занесение новой информации во все таблицы базы данных





Часть 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;

Часть 2

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

# add new wine to database - 2-st stage -- check params & insert data

 

use DBI;

use CGI qw(:standard escapeHTML);

 

# declarations

my $dbh; #database handler

my $sth; #database statement handler

my %countries = (); #declared countries

my %typus = (); #declared types of wines

my %tmphash = ();

my $base = 'wineyard'; #database name

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

my $dbport = '3306'; #standard MySQL port

my ($ky, $val);

 

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;

};

################# rebuild?

$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;

 

# process input parameters

 

$nm = param('nm');

$ctid = param('ctid');

$tpid = param('tpid');

$qty = param('qty');

$skl = param('skl');

 

my $er = 0;

 

if ($nm eq "") {


$er += 1;

print qq[<p class="norm" align="left"><b>Не указано наименование напитка</b> – обязательное поле</p>\n];

};

if (!(($qty eq "") || ($qty =~ /^\d+$/))) {

$er += 1;

print qq[<p class="norm" align="left"><b>Неверно указано количество контейнеров</b></p>\n];

};

if (!(($skl eq "") || ($skl =~ /^\d+$/))) {

$er += 1;

print qq[<p class="norm" align="left"><b>Неверно указан номер склада</b></p>\n];

};

 

if ($er > 0) { #a very long operator block begin here

 

print <<SOF;

<p class="norm" align="center"><font size="+1" color="#A00000"><b>Проверьте все поля

и исправьте ошибки</b></font><br>

<font color="#A00000">или откажитесь от занесения данных в базу и вернитесь к главной странице</font></p>

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

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

<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" Value="$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" Value="$qty"></td></tr>

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

 

}; # end of the very long block

 

#here - everything is Ok

 

# create record in main wine table

$qry = "INSERT INTO wine (id, name, t_id, c_id, quant, store) VALUES (NULL, "

. $dbh->quote($nm). ", $tpid, $ctid, ";

if ($qty eq "") {$qry.= "NULL, "} else {$qry.= "$qty, "};

if ($skl eq "") {$qry.= "NULL)"} else {$qry.= "$skl)"};

$rows = $dbh->do($qry);

$rows = $dbh->{'mysql_indertid'};

$dbh->do('FLUSH TABLES, STATUS');

$dbh->disconnect;

 

print qq[<p class="norm" align="left">Новая запись внесена в таблицу вин:</p>];

if ($qty eq "") {$qty = "Не установлено"};

if ($skl eq "") {$skl = "Не установлен"};

%tmphash = reverse %countries;

$ncnt = $tmphash{$ctid};

%tmphash = ();

%tmphash = reverse %typus;

$ntyp = $tmphash{$tpid};

 

print <<EODT;

<p class="norm">

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

<tr><td>Наименование вина:</td><td><font color=navy><b>$nm</b></font></td></tr>

<tr><td>Страна-производитель:</td><td><font color=navy><b>$ncnt</b></font></td></tr>

<tr><td>Тип напитка:</td><td><font color=navy><b>$ntyp</b></font></td></tr>

<tr><td>Количество:</td><td><font color=navy><b>$qty</b></font></td></tr>

<tr><td>Номер склада:</td><td><font color=navy><b>$skl</b></font></td></tr>

</table>

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

<p class="norm" align="left"><font size="+1"><a href="/cgi-bin/add.pl">Добавить еще

одну запись в базу</a></font></p>

<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>

EODT

 

exit;







Date: 2016-07-25; view: 349; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.041 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию