Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 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> </td><td> </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> </td><td> </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: 317; Нарушение авторских прав |