#!/usr/bin/perl -w ################################################################################# print "Content-type: text/html\n\n"; use strict; use TRequire; my %cs = &econst; $|=1; ################################################################################# # прием входных данных - стандартная конструкция my $buf1 = ''; my $buf2 = ''; if (defined $ENV{'CONTENT_LENGTH'}){ while (($ENV{'CONTENT_LENGTH'} > 0)&&(length($buf1) < $ENV{'CONTENT_LENGTH'})){ my $bufT = ''; sysread(STDIN,$bufT,$ENV{'CONTENT_LENGTH'}); $buf1 .= $bufT;} } $buf2=$ENV{'QUERY_STRING'}; my %forms = &forms_cod($buf1,$buf2); if (!defined $forms{selpage}) {$forms{selpage} = 1;} my $TextError = ''; &Proverka(); sub Proverka(){ # print "Proverka
\n"; &Spisok(); } ############################################################## печать списка sub Spisok(){ # print "Spisok
\n"; my $SHuser_spisok = &egetshablon('user_spisok.htm'); my $SHuser_spisok1 = ''; my $SHuser_spisok2 = ''; my $SHuser_spisok_poz = ''; $SHuser_spisok =~ /(.+)T-spisokstart-T/s; $SHuser_spisok1 = $1; $SHuser_spisok =~ /T-spisokstart-T(.+)T-spisokend-T/s; $SHuser_spisok_poz = $1; $SHuser_spisok =~ /T-spisokend-T(.+)/s; $SHuser_spisok2 = $1; my @all = &zapros("SELECT eb_id,eb_text,eb_fulltext,eb_datetime FROM eboard WHERE eb_text!='' AND eb_fulltext!='' ",$cs{sql_base},$cs{sql_login},$cs{sql_password}); @all = &sortir(['-4'],\@all); $SHuser_spisok1 =~ s/T-Tselpage-T/$forms{selpage}/; $SHuser_spisok1 =~ s/T-Tzagl-T/Board/; my $str = &str_page(\@all,$forms{selpage},$cs{col_page},$cs{col_str}); $SHuser_spisok1 =~ s/T-Tstr-T/$str/g; $SHuser_spisok2 =~ s/T-Tstr-T/$str/g; print $SHuser_spisok1; foreach (@all){ $_->[1] = $_->[1] || '-'; $_->[2] = $_->[2] || '-'; my $tex1 = $_->[1]; my $tex2 = $_->[2]; if (length($tex1) > 100) {$_->[1] = '' . substr($_->[1],0,96) . " ...";} if (length($tex2) > 1000) {$_->[2] = '' . substr($_->[2],0,996) . " ...";} my $SHuser_spisok_p = $SHuser_spisok_poz; $SHuser_spisok_p =~ s/T-Tid-T/$_->[0]/g; $SHuser_spisok_p =~ s/T-Ttext-T/$_->[1]/g; $SHuser_spisok_p =~ s/T-Tfulltext-T/$_->[2]/g; $_->[3] = substr($_->[3],0,10); $SHuser_spisok_p =~ s/T-Tdata-T/$_->[3]/g; print $SHuser_spisok_p; } print $SHuser_spisok2; } sub str_page(){ # my $str = &str_page(\@all,$page,$col_page,$col_str); use POSIX qw(floor ceil); my $TPageTableRef = shift; my $TPageSelPage = shift; my $TPage_col_page = 10; my $TPage_col_str = 10; $TPage_col_page = shift; $TPage_col_str = shift; my $TPageTableStr = @$TPageTableRef; my $TPage_col_page_all = ceil( $TPageTableStr / $TPage_col_str ); my $TPage_up_page = 0; if ($TPageSelPage > $TPage_col_page){ my $tex = 0; if( $TPageSelPage % $TPage_col_page ){ $tex = floor( $TPageSelPage / $TPage_col_page ); }else{ $tex = floor( ( $TPageSelPage - 1 ) / $TPage_col_page ); } $TPage_up_page = $tex * $TPage_col_page; } my $TPage_down_page = $TPage_up_page + $TPage_col_page + 1; if ($TPageTableStr <= $TPage_col_str){ return ''; } my $TPageStr = ''; # $TPageStr .= $TPage_col_page_all . ' ' . TPageSub1($TPage_col_page_all) . ' (' . $TPageTableStr . ' поз.): '; $TPageStr .= '' . $TPageTableStr . ' pos. (' . $TPage_col_page_all . ' pag.): '; if ($TPageSelPage > $TPage_col_page){ $TPageStr .= "<<  "; } my $TPageX = 0; if ( ($TPage_col_page_all - $TPage_up_page) >= $TPage_col_page ){ $TPageX = $TPage_col_page; } else{ $TPageX = $TPage_col_page_all - $TPage_up_page; } for (my $TPageY = 1; $TPageY <= $TPageX; $TPageY++){ if (($TPageY + $TPage_up_page) == $TPageSelPage){ $TPageStr .= ' ' . $TPageSelPage . ' '; } else{ $TPageStr .= " " . ($TPageY + $TPage_up_page) . " "; } } if ($TPage_col_page_all > ($TPage_down_page - 1)){ if (($TPage_col_page_all - $TPage_down_page + 1) >= $TPage_col_page){ $TPageX = $TPage_col_page; } else{ $TPageX = $TPage_col_page_all - $TPage_down_page + 1; } $TPageStr .= " >>  "; } if(scalar(@$TPageTableRef) > ($TPageSelPage * $TPage_col_str) ){ splice(@$TPageTableRef,($TPageSelPage * $TPage_col_str)); } splice(@$TPageTableRef,0,($TPageSelPage * $TPage_col_str) - $TPage_col_str); return $TPageStr; } exit 1;