I have a CGI page with a table which is populated by fetching the data from database, in a word its like a DATAGRID.
And just at the bottom right end of tha Grid I need a link like "First << 1 2 >> Last"
or like" |< < > >| "on clicking which I can navigate to and fro the records. And I am intend to have "10" records per page.
While surfing I got a piece of code which I am going to paste in the code field. But problem is that it displays the paging link something like this "1 2 3 4 5 ..and so on". But I am not willing to have this paging format because the number of records increases the length of the link also goes on increasing. So can this code be modified to the format which I am intending to have?
And just at the bottom right end of tha Grid I need a link like "First << 1 2 >> Last"
or like" |< < > >| "on clicking which I can navigate to and fro the records. And I am intend to have "10" records per page.
While surfing I got a piece of code which I am going to paste in the code field. But problem is that it displays the paging link something like this "1 2 3 4 5 ..and so on". But I am not willing to have this paging format because the number of records increases the length of the link also goes on increasing. So can this code be modified to the format which I am intending to have?
Code:
#!C:\perl\bin\perl.exe
use CGI::Carp qw(fatalsToBrowser);
use DBI;
use CGI qw/:standard/;
use CGI;
use POSIX;
print "Content-Type: text/html\n\n";
$|++;
my $env=$ENV{QUERY_STRING};
my@env=split(/=/, $env);
my $page= $env[1];
my ($results_per_page);
if (!$limit) {
$limit = 0;
}
my $dbh = DBI->connect(
"dbi:SQLite:COMPANY.db",
"", "",
{
RaiseError => 1,
AutoCommit => 1
}
);
my $query =$dbh->selectall_arrayref('SELECT *
FROM Employees');
my $count=@$query ;
$results_per_page = 3;
my $pagesrequired = ceil($count /
$results_per_page);
[... PIECE OF CODE : 1 WHICH I WANT TO GET
REPLACED BY CODE:2 MENTIONED BELOW
THIS CODE ,
for (my $i = 0; $i <= $pagesrequired -1; $i++) {
if ($i == 0) {
if ($limit == 0) {
print "<a href=\"Employees.cgi?&limit=0
\">";
print $i + 1;
print "</a>";
}
else {
print $i + 1;
}
}
if ($i > 0) {
if ($limit != ($i * $results_per_page)) {
print " | <a href=\"Employees.cgi?&limit=";
print ($i * $results_per_page);
print "\">\n";
print $i + 1,"</a>";
}
else {
print " | ", $i + 1;
}
}
} ...]
THIS CODE ENCLOSED BETWEEN [.. ..]GIVES THE
PAGINATION FORMAT AS "1 2 3 4.SO ON".
BUT I NEED TO GET THE FORMAT OF |< < > >| AS
THIS CODE BELOW GENERATES...I AM
NOT ABLE TO REPLACE THIS CODE WITH THAT OF THE
ABOVE ONE, PLEASE HELP ME OUT.
[...CODE :2
WHERE DECLARATONS FOR BELOW ARE AS
FOLLOWS...
my $pageNum =$query->param('pageNum');
unless($pageNum) {
$pageNum=1;
}
my $offset=$query->param('offset');
unless($offset) {
$offset=3;
}
AND
my $dbh = DBI->connect
("dbi:SQLite:DEVICE.db","", "",
{
RaiseError => 1,
AutoCommit => 1
}
);
my $query =$dbh->selectall_arrayref
('SELECT * FROM UsersList');
my $numOfRec=@$query ;
my $numofPages = ceil($numOfRec /
$offset);
/*HERE'S THE CODE WHICH I WANT TO
REPLACE IN PLACE OF CODE:1*/
if ( $pageNum > 0 ) {
print q[<td><a href="Employees.cgi?pageNum=1
">|<</a></td>];
$pageN = $pageNum - 1;
print qq[<td><a href="Employees.cgi?
pageNum=$pageN"><</a></td>];
}
else {
print q[<td><span
class="currentpage">|<</span></td>];
print q[<td><span
class="currentpage"><</span></td>];
}
if ( $pageNum < ( $numofPages - 1 )) {
$pageN = $pageNum + 1;
print qq[<td><a href="Employees.cgi?
pageNum=$pageN">></a></td>];
print qq[<td><a href="Employees.cgi?
pageNum=$numofPages">>|</a></td>];
}
else {
print q[<td><span
class="currentpage">></span></td>];
print q[<td><span
class="currentpage">>|</span></td>];
} ...] THE END...
/*REST OF THE CODE AND AN ERROR WHICH I
GONA MENTION BELOW AT THAT PARTICULAR
LINE */
my $sth = $dbh->prepare("SELECT
EmployeeId,EmployeeName,Address,Company,Role,
Branch FROM Employees
limit ?,? ");
$sth->bind_param(1, undef,SQL_NUMERIC);
$sth->bind_param(2, undef,SQL_NUMERIC);
Line:64 $sth->execute
($page,$results_per_page);
/* ERROR:DBD::SQLite::st execute
failed: datatype mismatch at C:/Program
Files/Apache SoftwareFoundation/Apache2.2
/cgi-bin/Employee.cgi line 64.*/
print start_html('Employee LIST'),
table({-border=>'1',width=>'100%'}),
Tr({-align=>'CENTER', -valign=>'TOP'},
[
th(["EmployeeId"
,"EmployeeName","Address","Company","Role
","Branch "] )
]);
while (my ($EmployeeId
,$EmployeeName,$Address,$Company,$Role,$Branch ) =
$sth->fetchrow_array()) {
if ($UserName eq "") {
$UserName="UNDEF";
}
print Tr ({-align=>'CENTER',},
[
td([$EmployeeId
,$EmployeeName,$Address,$Company,$Role,
$Branch ]),
]);
}
Comment