免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 7934 | 回复: 20
打印 上一主题 下一主题

perl cgi 分页显示功能 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-06 15:46 |只看该作者 |倒序浏览
10可用积分
如题,谁有PERL+CGI 分页显示方面的代码,贴出来看看。

越简单截越好。THANKS。

论坛徽章:
0
2 [报告]
发表于 2009-12-06 16:34 |只看该作者
原帖由 HF.SKY000 于 2009-12-6 15:46 发表
如题,谁有PERL+CGI 分页显示方面的代码,贴出来看看。

越简单截越好。THANKS。

这个很简单呀~都是数据库的一些功能。
select ... limit xx,yy
xx表示查询起始位置,yy表示记录个数,你自己在程序里构造好这2个数就可以了。

论坛徽章:
0
3 [报告]
发表于 2009-12-06 17:32 |只看该作者
用 orm 做就很方便了,

简单的比如  Class::DBI::Pageset 之类的,用不着自己去写代码实现

论坛徽章:
0
4 [报告]
发表于 2009-12-06 18:46 |只看该作者

回复 #2 兰花仙子 的帖子

首先谢谢你的回答。这个我估计还是把握不好,能否给出一个示例。
要有:第一页|下一页|上一页。

论坛徽章:
0
5 [报告]
发表于 2009-12-06 18:51 |只看该作者

回复 #3 cobrawgl 的帖子

perl 中有Class:BI:ageset 这个包吗?怎么网上也没有找到呢?

论坛徽章:
0
6 [报告]
发表于 2009-12-06 18:58 |只看该作者
ls 你真的找过?

论坛徽章:
0
7 [报告]
发表于 2009-12-06 19:01 |只看该作者
随手写了下,当前页的:

  1. my $num = xx; # xx items per page
  2. my $page = yy;  # which page

  3. my $count = dbi_method("select count(*) from table");

  4. my $total;  # total page
  5. if ($count % $num ) {
  6.     $total = int ($count/$num) +1;
  7. } else {
  8.     $total = $count/$num;
  9. }

  10. my $offset = $num * ($page -1);  # start item
  11. my $records = dbi_method("select * from table limit $offset,$num"); # fetch the records
复制代码



前一页和后一页的:

  1. my $prevpage = ($page -1) || 1;  # prevpage
  2. my $nextpage = ($page +1 > $total) ? $total : $page +1;  # next page
复制代码



Cheers~

论坛徽章:
0
8 [报告]
发表于 2009-12-06 19:01 |只看该作者

回复 #1 HF.SKY000 的帖子

和别的语言分页一样...可以看php..等一些语言的分页实现就行。

论坛徽章:
0
9 [报告]
发表于 2009-12-06 19:02 |只看该作者
package TcmDict::Search;

use strict;
use warnings;

use base 'TcmDict';

use URI::Escape;


#

# Runmodes -----------------------

#

sub default : StartRunmode {
    my $self = shift;
    
    my %tables = (
        '中药' => 'zhongyao',
        '方剂' => 'fj_info_gb2312',
        '西药' => 'xiyao',
        '辞典' => 'fangji', # maybe, later it wiil be 'cidian'

    );
    my $q        = $self->query->param('q'); # if $q is null, it should be redirected to an error page...

    my $meta    = $self->query->param('meta');
    
    my $query = '%' . $q . '%';
    
    my $dict    = $self->{'__cdbi__loader__'}->find_class($tables{"$meta"});


    my $pager    = $dict->pager({
        entries_per_page => 20,
        current_page     => $self->query->param('page') || 1,
        pages_per_set    => 5,
    });

    
    my $results = $pager->search_like(mingcheng => $query);
    
    $self->template->fill('search.tt',
        { results => $results,
          pager => $pager,
          q => uri_escape($q),
          meta => uri_escape($meta),
          lib => uri_escape($meta),}
    );        

}


=head    
sub node : Runmode {
    my $self = shift;
    
}

=cut


sub error : ErrorRunmode {}


1;



这是用 CGI::Application 作的一个小玩意,其中的 查询部分,这个就可以实现分页了,当然,还有其他部分没发,还有 template 的

论坛徽章:
0
10 [报告]
发表于 2009-12-06 19:06 |只看该作者
cpan 有那么多好模块,不用可惜了啊

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP