|
|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Sergey Nepsha 2:5083/82 30 Dec 2002 21:25:20 To : All Subject : SQL запрос - продолжение --------------------------------------------------------------------------------
sub searchform {
print header('text/html; charset=koi8-r'),
start_html(-title => "Поиск анкет в службе знакомств на 68.net",
-bgcolor => "white");
print a({-href => 'fm.pl'}, "Вернуться на главную"),hr;
print start_form(-action => url(),
-method => "post");
print p(h1({ -align => "center"}, "Введите критерии по которым вы хотите начать
поиск"));
print table({-bgcolor => "#9599fc", -width => '80%', -align => 'center',
-border => 1},
Tr({-align => 'center'},
th({-bgcolor => "#000066", -colspan => 2}, font{-color => 'white'},"Заполните
критерии поиска")),
Tr(
td(b("Я:")), td(popup_menu(-name => "isex", -values => ['male','female'],
-labels => {'male' => 'Мужчина', 'female' => 'Женщина'}))),
Tr(
td(b("Ищу:")), td(popup_menu(-name => "fsex", -values => ['male','female'],
-labels => {'male' => 'Мужчину', 'female' => 'Женщину'}, -default =>
"female"))),
Tr(
td(b("В возрасте:")), td("От:" . popup_menu(-name => "sage", -values =>
\@age) . "До:" . popup_menu(-name => "eage", -values => \@age, -default =>
'15'))),
Tr(
td(b("В городе:")), td(textfield(-name => "fcity"))),
Tr(
td(b("С фото:")), td(checkbox(-name => "fphoto", -value => "1", -label =>
"Да"))),
Tr(
td(b("C ICQ:")), td(checkbox(-name => "ficq", -value => "y", -label =>
"Да"))),
Tr(
td(b("C домашними страницами:")), td(checkbox(-name => "fwww", -value => "1",
-label => "Да"))),
Tr(
td(b("Сортировать по:")), td(radio_group(-name => "sorting", -value =>
["date","name"], -labels => {'date' => 'Дате заполнения анкеты', 'name' =>
'Имени участника'}))));
print table({-align => 'center', -border => 0},
Tr(
td(submit(-name => "action", -value => "Hачать поиск")), td(" ",
reset("Сброс"))));
end_form();
} # эта функция выводит форму поиска !
sub process_search { # эта функция обрабатывает запрос по параметрам из 1ой
функции !!!
my $iam = param("isex");
my $partner = param("fsex");
my $strtage = param("sage");
my $endage = param("eage");
my $fcity = param("fcity");
my $fphoto = param("fphoto");
my $ficq = param("ficq");
my $fwww = param("fwww");
my $sorting = param("sorting");
my $tbl_info;
my $val;
my @condition;
my @placeholder;
my ($sth, $stmt, $col_list, $where);
my $count;
my $te = "sex = ?";
if(param("fsex") ne "") {
push (@condition, $te);
push (@placeholder, $partner);
}
if(param("sage") ne "") {
push (@condition, "age >= ?");
push (@placeholder, $strtage);
}
if(param("eage") ne "") {
push (@condition, "age <= ?");
push (@placeholder, $endage);
}
if(param("fcity") ne "") {
push (@condition, "city = ?");
push (@placeholder, $fcity);
}
if(param("fphoto") ne "") {
push (@condition, "photo = ?");
push (@placeholder, $fphoto);
}
if(param("ficq") ne "") {
push (@condition, "icq != ?");
push (@placeholder, $ficq);
}
if(param("fwww") ne "") {
push (@condition, "www != ?");
push (@placeholder, $fwww);
}
if(defined ($sorting) && $sorting eq 'name') { $sorting = "fname"; }
else { $sorting = "date"; }
}
$col_list = "date, login, sex, age, city, photo, icq, www";
$where = join (" AND ", @condition);
#$where = "" unless $where;
my $dbh = DBI->connect
("DBI:mysql:host=$host;database=$dbname",
"$dbuser", "$dbpass",
{PrintError => 0, RaiseError => 1});
$stmt = "SELECT $col_list " . "FROM love_reg " . "WHERE " . $where . "ORDER BY
" . $sorting;
$sth = $dbh->prepare($stmt);
--------------
print $stmt; # вот тут вывожу stmt и в запросе оказывается WHERE пустой
(@condition пустой) !!!
--------------
$sth->execute(@placeholder);
$count = 0;
[skip]
}
почем так получается? что то не могу понять.
--
XMMS: M-Factor - Mother (Are You Ready To Fly)
--- tin/pre-1.4-19990216 ("Styrofoam") (UNIX) (Linux/2.4.18-3custom (i686))
* Origin: 68.net InterNetNews site (2:5083/82)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/12166e72ff2df.html, оценка из 5, голосов 10
|