Смекни!
smekni.com

Web-приложение Сайт системы научных конференций (стр. 6 из 6)

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>&nbspр.</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/<!--(.|&bsol;n)*-->//g;

print "Set-Cookie: $c&bsol;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/<!--(.|&bsol;n)*-->//g;

print "Set-Cookie: $c&bsol;n";

$kvit=1;

}

}

}else{

$HTML_SITE{title2} = "<p style=&bsol;"color:red;&bsol;">Не заполнены обязательные поля</p>";

}

}

1;

Приложение Б

Результаты тестирования

Рисунок Б-1 — Введены неверные логин и пароль.

Рисунок Б-2 — Успешная авторизация.

Рисунок Б-3 — Добавляем новые часы.

Рисунок Б-4 — Данные добавились.

Рисунок Б-5 — Хотим редактировать верхнюю запись.

Рисунок Б-6 — Изменяем стоимость.

Рисунок Б-7 — Данные изменены.

Рисунок Б-8 — Удаляем ранее добавленный товар.

Рисунок Б-9 — Данные корректно удалены.

Рисунок Б-10 — Заполняем поля для запроса.

Рисунок Б-11 — По нашему запросу вывелись 2 модели.

Рисунок Б-12 — Добавляем товар в корзину.

Рисунок Б-13 — Проверяем корзину, товар в ней присутствует.