TL::Pager - ページング処理

# NAME

TL::Pager - ページング処理

# SYNOPSIS

      my $pager = $TL->newPager('DB');
      $pager->setCurrentPage($CGI->get('pageid'));

      my $t = $TL->newTemplate('template.html');
      if($pager->paging($t->node('paging'), 'SELECT * FROM foo WHERE a = ?', 999)) {
        $t->node('paging')->add;
      } else {
        $t->node('nodata')->add;
      }

# DESCRIPTION

ページング処理を行う。

決められた形式のTL::Templateノードに展開する。

## テンプレート形式

      <!begin:paging>
        <!begin:PrevLink><a href="<&PREVLINK>">←前ページ</a><!end:PrevLink>
        <!begin:NoPrevLink>←前ページ<!end:NoPrevLink>
        <!begin:PageNumLinks>
          <!begin:ThisPage><&PAGENUM><!end:ThisPage>
          <!begin:OtherPage>
            <a href="<&PAGELINK>"><&PAGENUM></a>
          <!end:OtherPage>
        <!end:PageNumLinks>
        <!begin:NextLink><a href="<&NEXTLINK>">次ページ→</a><!end:NextLink>
        <!begin:NoNextLink>次ページ→<!end:NoNextLink>
        ...
        <!begin:MaxRows>全<&MAXROWS>件<!end:MaxRows>
        <!begin:FirstRow><&FIRSTROW>件目から<!end:FirstRow>
        <!begin:LastRow><&LASTROW>件目までを表示中<!end:LastRow>
        <!begin:MaxPages>全<&MAXPAGES>ページ<!end:MaxPages>
        <!begin:CurPage>現在<&CURPAGE>ページ目<!end:CurPage>
        ...
        <!begin:Row>
          <!-- 行データを展開する <&XXX> タグを記述する -->
        <!end:Row>
        ...
      <!end:paging>
      <!-- 以下は Pager クラスの処理とは関係ないため、無くても良い -->
      <!begin:nodata>
        一件もありません
      <!end:nodata>

必須でないノードは次の通り:

      MaxRows, FirstRow, LastRow, MaxPages,CurPage

これらのノードが存在しない場合は、単に無視される。

## METHODS

$TL->newPager

        $pager = $TL->newPager
        $pager = $TL->newPager($db_group)

  Pagerオブジェクトを作成。 2番目の形式では、 デフォルト の DBセット が使われる。デフォルトが設定されていなければ paging開始の時点でエラーとなる。

setDbGroup

        $pager->setDbGroup($db_group)

  使用するDBのグループ名を指定する。

setPageSize

        $pager->setPageSize($line)

  1ページに表示する行数を指定する。デフォルトは30。

setCurrentPage

        $pager->setCurrentPage($nowpage)

  現在のページ番号を指定する。デフォルトは1。

setMaxLinks

        $pager->setMaxLinks($maxlinks)

  各ページへのリンクを最大幾つ表示するかを指定する。デフォルトは10。

setFormKey

        $pager->setFormKey('PAGE')

  ページ移動リンクに挿入される、ページ番号キーを指定する。デフォルトは"pageid"。

setFormParam

        $pager->setFormParam($CGI)

  ページ移動リンクに追加されるフォームを指定する。デフォルトでは何も追加されない。

setPagingType

        $pager->setPagingType($type)

  ページングの種類を選ぶ。

  0の場合、最終ページを超えたページを指定した場合、undefが返る。 1の場合、最終ページを超えたページを指定した場合、最終ページが返る。

  設定しなかった場合は0が設定される。

  但し、1を選択した場合で、最終ページを超えるページを指定した場合、SQLを再度発行するため、通常より遅くなる。

getPagingInfo

        my $info = $pager->getPagingInfo

  各種パラメータを返す。パラメータの内容は以下の通り。セットされてない場合はundefがセットされている。

  $info->{dbgroup}

    使用するグループ名

  $info->{pagesize}

    1ページに表示する行数

  $info->{current}

    表示する（された）ページ番号

  $info->{maxlinks}

    リンクの最大数

  $info->{formkey}

    ページ移動リンクに挿入される、ページ番号キー

  $info->{formparam}

    ページ移動リンクに追加されるフォーム。TL::Formクラス

  $info->{pagingtype}

    ページングの種類

  $info->{maxpages}

    存在している最大ページ

  $info->{linkstart}

    リンクの開始ページ数

  $info->{linkend}

    リンクの終了ページ数

  $info->{maxrows}

    全体の件数

  $info->{beginrow}

    取得を開始した箇所

  $info->{rows}

    取得した件数

paging

        $pager->paging($t->node('pagingblock'), $sql, @param)
        $pager->paging($t->node('pagingblock'), [$sql, $maxrows], @param)

  指定したノードに、指定したSQLを実行してページングする。 展開するデータが1件も無い場合は 0 を、表示できるページ数を超えたページ数を指定 された場合は、setPagingTypeで設定されている値が0（デフォルト）であれば、undefが、 1であれば最終ページのデータ件数、それ以外の場合はデータ件数を返す。

  $maxrows で件数のカウントを別途指定できる。 指定を省略した場合、SQL 文の先頭部分を SELECT COUNT(*) FROM ～ に書き換えたもの を使用して、自動的に件数をカウントする。 その際、GROUP BY を使用した場合は、結果ではなく結果の件数をカウントとして扱う。 UNION を使用した場合は正常に動作しない。

pagingArray

        $result = $pager->pagingArray($t->node('pagingblock'), $sql, @param)
        $result = $pager->pagingArray($t->node('pagingblock'), [$sql, $maxrows], @param)

  指定したノードに、指定したSQLを実行してページングする。 Row ノードは展開せずに、ページング対象のデータを配列の配列へのリファレンスで返す。 展開するデータが1件も無い場合は 0 を、表示できるページ数を超えたページ数を指定 された場合は、setPagingTypeで設定されている値が0（デフォルト）であれば、undefが、 1であれば最終ページのデータを返す。

  その他は "paging" と同じ。

pagingHash

        $result = $pager->pagingHash($t->node('pagingblock'), $sql, @param)
        $result = $pager->pagingHash($t->node('pagingblock'), [$sql, $maxrows], @param)

  指定したノードに、指定したSQLを実行してページングする。 Row ノードは展開せずに、ページング対象のデータをハッシュの配列へのリファレンスで返す。 展開するデータが1件も無い場合は 0 を、表示できるページ数を超えたページ数を指定 された場合は、setPagingTypeで設定されている値が0（デフォルト）であれば、undefが、 1であれば最終ページのデータを返す。

  その他は "paging" と同じ。

# SEE ALSO

TL
TL::DB

# AUTHOR INFORMATION

Copyright 2006 YMIRLINK Inc. All Rights Reserved.

This framework is free software; you can redistribute it and/or modify it under the same terms as Perl itself

このフレームワークはフリーソフトウェアです。あなたは Perl と同じライセンスの 元で再配布及び変更を行うことが出来ます。

Address bug reports and comments to: tl@tripletail.jp

HP : http://tripletail.jp/

TL::Pager - ページング処理

# INDEX

- $TL->newPager
- $info->{beginrow}
- $info->{current}
- $info->{dbgroup}
- $info->{formkey}
- $info->{formparam}
- $info->{linkend}
- $info->{linkstart}
- $info->{maxlinks}
- $info->{maxpages}
- $info->{maxrows}
- $info->{pagesize}
- $info->{pagingtype}
- $info->{rows}
- AUTHOR INFORMATION
- DESCRIPTION
- METHODS
- NAME
- SEE ALSO
- SYNOPSIS
- TL
- TL::DB
- getPagingInfo
- paging
- pagingArray
- pagingHash
- setCurrentPage
- setDbGroup
- setFormKey
- setFormParam
- setMaxLinks
- setPageSize
- setPagingType
- テンプレート形式

TL::Pager - ページング処理