J'ai une page CGI avec une table qui est peuplée en récupérant les données de la base de données, dans un mot c'est comme un DATAGRID.Comment puis-je faire la pagination dans mon script Perl CGI?
Et juste à la fin en bas à droite de la grille tha je besoin d'un lien comme « First < < 1 2 >> Dernière » ou comme « | < <>> | » en cliquant que je peux naviguer çà et là la enregistrements. Et j'ai l'intention d'avoir "10" enregistrements par page.
En surfant j'ai eu un morceau de code que je vais coller dans le champ de code. Mais le problème est qu'il affiche le lien de pagination quelque chose comme ceci "1 2 3 4 5 ..et ainsi de suite". Mais je ne suis pas prêt à avoir ce format de pagination, car le nombre d'enregistrements augmente la longueur du lien continue également d'augmenter. Donc, ce code peut-il être modifié au format que j'ai l'intention d'avoir?
#!C:\perl\bin\perl.exe -wT
use CGI;
use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
use strict;
use warnings;
use DBI;
my $query = new CGI;
my $bornum;
my $itemnum;
my $i;
my @overduedata;
my $pageNum =$query->param('pageNum');
print "Content-Type: text/html\n\n";
unless($pageNum) {
$pageNum=0;
}
my $offset=$query->param('offset');
unless($offset) {
$offset=10;
}
$i=0;
my $numOfRec = 100;
while ($i < $numOfRec){
$bornum = "bornum" . $i;
$itemnum = "itmnum" . $i;
push (@overduedata, { bornum => $bornum, itemnum => $itemnum });
$i = $i + 1;
}
print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">";
print "\n<form>";
print "\nNo: of records per page : <input type=text name=offset>";
print "\n<input type=submit value=submit>";
print "\n</form>";
print "\n<br> No: of rec per page = " . $offset . " -- pageNum = " . $pageNum ;
print "<table border=1>";
my $startDisplay = ($pageNum) * $offset;
my $endDisplay = ($pageNum + 1) * $offset;
$i = $startDisplay;
while ($i < $endDisplay){
print "<tr><td>" . $i . "</td><td>" . $overduedata[$i]->{'bornum'} . "</td><td>" .
$overduedata[$i]->{'itemnum'} . "</td></tr>";
$i = $i + 1;
}
print "</table>";
my $numofPages = $numOfRec/$offset;
$i = 0;
print "<table border=1><tr>";
while ($i < $numofPages){
print "<td> <a href = ?pageNum=" . $i . "&offset=" . $offset . ">" .
$i . "</a></td>";
$i = $i + 1;
}
print "<tr></table>";
---------------------------------------------------------------------------------------
conseils généraux: CGI a des fonctions pour générer HTML. Utilise les. Ils vous aideront à générer du code HTML et à rendre votre code plus lisible. – reinierpost
duplicata possible de [Comment puis-je faire pagination et de tri dans un programme CGI Perl?] (Http://stackoverflow.com/questions/3707646/how-can-i-do-paging-and-sorting-in-a- perl-cgi-program) –
Nous avons répondu à cette question hier: [Comment faire du pagination et du tri dans un programme Perl CGI?] (http: // stackoverflow.com/questions/3707646/how-can-i-do-pagination-et-tri-dans-un-perl-cgi-programme) –