Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Занесение новой информации во все таблицы базы данных⇐ ПредыдущаяСтр 37 из 37
Часть 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; Нарушение авторских прав |