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


Полезное:

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


Категории:

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






Добавление информации в базу (на примере винного погреба





-добавление страны)

Часть 1

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

# add new country to database - 1-st stage -- check existing countries

use DBI;

# declarations

my $dbh; #database handler

my $sth; #database statement handler

my @countries = (); #declared countries

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;

};

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

$sth->execute;

while(($ky, $val)=$sth->fetchrow_array) { #country list will be ordered

push(@countries, $ky);

};

$sth->finish;

print <<SOF;

<p class="norm" align="center"><font color=navy size="+1">В настоящее время в базе

зарегистрированы следующие страны:</font></p>

<table cellpadding="5" align="center">

SOF

#creating neat table

$lines = int(scalar(@countries)/5); # 5-column table

if ((scalar(@countries) % 5)!= 0) {

$lines++;

};

for ($i=0; $i < $lines; $i++) {

print "<tr>";

foreach $j (0..4) {

print "<td width=10>$countries[$i+$j*$lines]</td>";

};

print "</tr>";

};

# table isn't closed yet

print <<EOFR;

</table>

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

<form name="add_cn" action="apache/Apache/cgi-bin/addcnt.pl" method="post">

<p class="norm">

<table align="center" cellpadding="5"><tr><td>

Введите новую страну:</td><td><input type="text" size="20" name="ncnt"</td></tr>

<tr><td>&nbsp;</td><td>&nbsp;</td></tr>

<tr><td width="10%"><input type="submit" value="Занести в базу"></td>

<td width="10%"><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 country to database - 2-nd stage -- updating countries data

 

use DBI;

use CGI qw(:standard);

 

# declarations

my $dbh; #database handler

my $sth; #database statement handler

my $base = 'wineyard'; #database name

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

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

my ($ky, $val);

my @countries = ();

 

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;

};

 

# here database is connected

# process input parameters

 

$ncnt = param('ncnt');

if ($ncnt eq "") { # a very looong block of input error processing

print <<EOR;

<p class="norm" align="left"><b>Не указано наименование страны-производитедя</b> – обязательное поле</p>

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

EOR

 

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

$sth->execute;

while(($ky, $val)=$sth->fetchrow_array) { #country list will be ordered

push(@countries, $ky);

};

$sth->finish;

$dbh->disconnect;

 

print <<SOF;

<p class="norm" align="center"><font color=navy size="+1">В настоящее время в базе

зарегистрированы следующие страны:</font></p>

<table cellpadding="5" align="center">

SOF

#creating neat table

$lines = int(scalar(@countries)/5); # 5-column table

if ((scalar(@countries) % 5)!= 0) {

$lines++;

};

for ($i=0; $i < $lines; $i++) {

print "<tr>";

foreach $j (0..4) {

print "<td width=10>$countries[$i+$j*$lines]</td>";

};

print "</tr>";

};

# table isn't closed yet

print <<EOFR;

</table>

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

<form action="apache/Apache/cgi-bin/addcnt.pl" method="post">

<p class="norm">

<table align="center" cellpadding="5"><tr><td>

Введите новую страну:</td><td><input type="text" size="20" name="ncnt"</td></tr>

<tr><td>&nbsp;</td><td>&nbsp;</td></tr>

<tr><td width="10%"><input type="submit" value="Занести в базу"></td>

<td width="10%"><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; # when country wasn't entered

};

 

#everything is Ok with parameters

# create record in country table

 

$qry = "INSERT INTO country (id, ctry) VALUES (NULL, "

. $dbh->quote($ncnt). ")";

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

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

$dbh->disconnect;

 

if ($rows < 1) {

print qq[<p class="norm">Ошибка базы данных – страна <b>$ncnt</b> не внесена в базу данных];

print "<br>Причина ошибки – <b>$DBI::errstr</b></p>\n";

} else {

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

print "<font color=navy><b>$ncnt</b></font></p>";

};

 

print <<EODT;

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

<p class="norm" align="left"><font size="+1"><a href="/cgi-bin/addcn.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: 283; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



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