--- db/prgsrc/db.cgi 2010/09/24 09:05:48 1.161 +++ db/prgsrc/db.cgi 2010/09/24 09:46:44 1.162 @@ -11,6 +11,8 @@ use URI::Escape; my $proxyredirect=1; use POSIX qw(locale_h); use locale; +my $maxQuestions = 3000; + use vars qw($opt_z); use Getopt::Std; #my ($dbuser,$dbname,$dbpass,$dbhost); @@ -779,7 +781,7 @@ sub Search { my $query; $query="SELECT QuestionId FROM Questions - WHERE ($f LIKE $sstr) AND (".&makewhere.") ORDER BY QuestionId"; + WHERE ($f LIKE $sstr) AND (".&makewhere.") ORDER BY QuestionId LIMIT $maxQuestions"; $sth = $dbh->prepare($query) @@ -853,10 +855,10 @@ sub PrintList { else {$nav.=' 'x15;} my ($fprint,$lprint); - my $llprint=$fkvo- ($fkvo)%$outputkvo+1; # + my $llprint=$fkvo- ($fkvo-1)%$outputkvo; # if ($fkvo<=$outputkvo*7) { $fprint=1; - $lprint=$llprint; + $lprint=$llprint+($fkvo)%$outputkvo; } elsif ($first>$outputkvo*3 && $fkvo-$first>$outputkvo*3) { @@ -869,8 +871,8 @@ sub PrintList { } else { - $lprint=$llprint; - $fprint=$lprint-$outputkvo*6 + $lprint=$fkvo; + $fprint=$lprint-($lprint-1)%$outputkvo-$outputkvo*6; } # my $fprint=($first>$outputkvo*3) ? $first-$outputkvo*3 : 1; @@ -882,7 +884,6 @@ sub PrintList { # } - for($f=$fprint; $f<=$lprint; $f+=$outputkvo) { # next if $first-$f>$outputkvo*3; @@ -894,10 +895,13 @@ sub PrintList { } if ($lprint+$outputkvo<$fkvo) { + my $reminder = ($llprint-1)%$outputkvo; + my $newlprint = $llprint-$reminder; +# $newlprint +=$outputkvo if $reminder!=$outputkvo-1; $nav.= (" "x4). a({href=>($url."?".$qs."\&first=".($first+$outputkvo))},">").(" "x4). - a({href=>$url."?".$qs."\&first=$llprint"},">>").(" "x4) + a({href=>$url."?".$qs."\&first=$newlprint"},">>").(" "x4) } $Output.= "$nav".br."\n"; my @q; @@ -1012,6 +1016,8 @@ sub PrintSearch { $suffix = 'я'; } + $hits = 'очень много' if ($hits==$maxQuestions); + $Output.= p({align=>"center"}, "Результаты поиска на " . strong($sstr) . " : $hits попадани$suffix.");