FROM Model inner join Firma on Model.id_Firma = Firma.id
inner join Pol on Model.id_Pol = Pol.id
inner join Kreplen on Model.id_Kreplen = Kreplen.id
inner join Mechanism on Model.id_Mechanism = Mechanism.id where ((Model.id_Firma=$firm)or($firm=0))
and ((Model.Price between $otcen and $docen) or ($otcen=0 and $docen=0))
and ((Model.Data_post between $otdata and $dodata) or ($otdata=0 and $dodata=0))");
$HTML_SITE{title} = "Выбор часов по параметрам";
$sth->execute();
$sumstr=0;
while (my $ref = $sth->fetchrow_hashref()) {
if (!($ref->{Name_Model})){$ref->{Name_Model} = "Не найдено!";}
my $hd; if ($ref->{ehide}){$hd="_h";}
$HTML_SITE{content}.=<<LINES;
<table border=1 cellpadding="3" cellspacing="3" align="center">
<td rowspan=8 align="center">
<img src="/admin/Photos/$ref->{Photo}" width="80" valign="absmiddle" align="absmiddle">
</td>
<td width=100 valign="center" align="center"><b><font color="#666666">Фирма</font></b>
</td>
<td width=150 valign="center" align="center"><b><font color="blue">$ref->{Nfirma}</font></b>
</td>
<tr>
<td width=100 valign="center" align="center"><b><font color="#666666">Модель</font></b>
</td>
<td width=150 valign="center" align="center"><b><font color="blue">$ref->{Name_Model}</font></b>
</td>
<tr>
<td width=100 valign="center" align="center"><b><font color="#666666">Пол</font></b>
</td>
<td width=150 valign="center" align="center"><b><font color="blue">$ref->{Pname}</font></b>
</td>
<tr>
<td width=100 valign="center" align="center"><b><font color="#666666">Ремешок</font></b>
</td>
<td width=150 valign="center" align="center"><b><font color="blue">$ref->{Kname}</font></b>
</td>
<tr>
<td width=100 valign="center" align="center"><b><font color="#666666">Механизм</font></b>
</td>
<td width=150 valign="center" align="center"><b><font color="blue">$ref->{Mname}</font></b>
</td>
<tr>
<td width=100 valign="center" align="center"><b><font color="#666666">Дата поставки</font></b>
</td>
<td width=150 valign="center" align="center"><b><font color="blue">$ref->{Data_post}</font></b>
</td>
<tr>
<td width=100 valign="center" align="center"><b><font color="#666666">Стоимость</font></b>
</td>
<td width=150 valign="center" align="center"><b><font color="red">$ref->{Price}</font> р.</b>
</td>
<tr>
<td width=100 valign="center" align="center"><b><font color="#666666">Добавить в корзину</font></b>
</td>
<td width=150 valign="center" align="center"><a href="javascript:addbasket($ref->{id});"><img src="/admin/images/basket.jpg" width="40" height="40" align="absmiddle" alt="Добавить в корзину"></a>
</td>
</table>
<table align="center">
<td height="10">
</td>
</table>
LINES
$sumstr=$sumstr+1;
}
if ($sumstr==0){$HTML_SITE{title2} = "Извините, но по данным параметрам ничего подобрать не получилось";}
$sth->finish();
}
1;
Basket.pl
1;
if ($action eq 'Оформить_заказ') {&zakaz;}
elsif ($action eq 'Удалить') {&del;}
#viv
if (($action eq 'Оформить_заказ') and ($kvit)){&kvitanc;}
else{&viev;}
sub viev {
$q = CGI->new();
my $cookies = $q->cookie('basket');
@ms = split(/:/,$cookies);
$sum=0;
foreach $ls (@ms){
my ($ss1,$ss2) = split(/-/,$ls);
if (($idd1 eq $ss1) and ($idd2 eq $ss2)){ #условие чтобы не выводить уже удалённую модель. Нужно, т.к. куки не успевают записаться
}else{
my (@db) = $dbh->selectrow_array("
SELECT Firma.Name_Firma as Nfirma,Model.Name_Model,Model.Price
FROM Model inner join Firma on Model.id_Firma = Firma.id WHERE Model.id='$ss1'
");
$text.=<<LINES;
<tr><td align="center"><p>$db[0]</p></td><td align="center">$db[1]</td><td align="center">$db[2]</td><td><a href="#" onclick="delbasket('$ss1-$ss2')"><img src="/admin/images/Urna.jpg" width="30" height="30" align="absmiddle" alt="title" alt="Удалить"></a></td></tr>
LINES
$sum=$sum+$db[2];
}
}
$HTML_SITE{title} = "Корзина";
$HTML_SITE{content}.=<<LINES;
<table cellpadding=5 cellspacing=5 width=50% align="center">
<tr>
<td align="center"><p><b>Фирма</b></p></td>
<td align="center"><b>Модель</b></td>
<td align="center"><b>Стоимость</b></td>
<td></td>
</tr>
$text
</table>
<HR WIDTH="50%" SIZE="3" color="red">
<table cellpadding=5 cellspacing=5 width=50% align="center">
<tdalign="center">
Общая сумма заказа равна $sum рублей
</td>
</table>
<form style="display: none" method="POST" action="" id="deletes" name="deletes"><input type="hidden" name="ids" value=""><input type="hidden" name="action" value="Удалить"></form>
<br>
<h2>Пожалуйста заполните форму</h2>
<fontcolor="red">*</font><small>Поля обязательные для заполнения</small>
<form method="POST" action="">
<br>
<div align="center"><font color="red">*</font>ФИО</div>
<div align="center"><input name="fio" value="" type="text" style="width:50%"></div>
<br>
<div align="center"><font color="red">*</font>Телефон</div>
<div align="center"><input name="tel" value="" type="text" style="width:50%"></div>
<br>
<div align="center"><font color="red">*</font>Email</div>
<div align="center"><input name="email" value="" type="text" style="width:50%"></div>
<br>
<div align="center"><input name="action" type="submit" value="Оформить_заказ"></div>
</form>
LINES
}
#######################################
sub kvitanc {
require "kvit.pm";
my $kvit = &kvit($idins);
$HTML_SITE{content}="$kvit";
}
#######################################
sub del {
my $ids = param("ids");
$q = CGI->new();
my $cookies = $q->cookie('basket');
@ms = split(/:/,$cookies);
($idd1, $idd2) = split(/-/,$ids);
foreach $ls (@ms){
my ($ss1,$ss2) = split(/-/,$ls);
if (($ss1 eq $idd1) and ($ss2 eq $idd2)){
}else{
if ($newcook){
$newcook = "$newcook:$ss1-$ss2";
}else{
$newcook = "$ss1-$ss2";
}
}
}
#Устанавливаем новые куки средствам Perl
$c = new CGI::Cookie(-name=>'basket',
-value=>"$newcook",
);
$c =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$c =~ s/<!--(.|\n)*-->//g;
print "Set-Cookie: $c\n";
}
######################################
sub zakaz {
my $fio = param('fio');
my $tel = param('tel');
my $email = param('email');
if ($fio and $tel and $email){
#Создаём номер квитанции
my $noschet = $dbh->selectrow_array("SELECT max( nom ) FROM schet");
$noschet++;
$fio = $dbh->quote( $fio );
$tel = $dbh->quote( $tel );
$email = $dbh->quote( $email );
#Записываем квитанцию в базу
my $sth = $dbh->prepare("insert into schet (nom,fio,tel,email,data) values ('$noschet',$fio,$tel,$email,'$reg_date $time_form')");
if ($sth->execute()){
$idins = $sth->{'mysql_insertid'};
$sth->finish();
#Заносим купленные билеты. т.е. отмечаем их, что они купленные
$q = CGI->new();
my $cookies = $q->cookie('basket');
@ms = split(/:/,$cookies);
foreach $ls (@ms){
my ($ss1,$ss2) = split(/-/,$ls);
$sth=$dbh->do("INSERT INTO sale (Model_id, schet_id) VALUES ('$ss1', '$idins')"); # добавляем новый
#Удаляем куки
my $c = new CGI::Cookie(-name=>'basket',
-expires => '-1y',
);
$c =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$c =~ s/<!--(.|\n)*-->//g;
print "Set-Cookie: $c\n";
$kvit=1;
}
}
}else{
$HTML_SITE{title2} = "<p style=\"color:red;\">Не заполнены обязательные поля</p>";
}
}
1;
Приложение Б
Результаты тестирования
Рисунок Б-1 — Введены неверные логин и пароль.
Рисунок Б-2 — Успешная авторизация.
Рисунок Б-3 — Добавляем новые часы.
Рисунок Б-4 — Данные добавились.
Рисунок Б-5 — Хотим редактировать верхнюю запись.
Рисунок Б-6 — Изменяем стоимость.
Рисунок Б-7 — Данные изменены.
Рисунок Б-8 — Удаляем ранее добавленный товар.
Рисунок Б-9 — Данные корректно удалены.
Рисунок Б-10 — Заполняем поля для запроса.
Рисунок Б-11 — По нашему запросу вывелись 2 модели.
Рисунок Б-12 — Добавляем товар в корзину.
Рисунок Б-13 — Проверяем корзину, товар в ней присутствует.