PHP実装の簡単なページングクラスと使用例
5300 ワード
この例では,PHP実装の簡単なページングクラスと用法について述べた.皆さんの参考にしてください.具体的には以下の通りです.
使用例:
PHPについてもっと兴味のある読者は、「PHP配列(Array)操作技巧大全」、「PHP数学演算技巧総括」、「php正則式用法総括」、「PHP+ajax技巧と応用小結」、「PHP演算と演算子用法総括」、「PHPネットワークプログラミング技巧総括」、「PHP基本文法入門教程」、「php日付と時間の使い方のまとめ」、「phpオブジェクト向けプログラム設計入門チュートリアル」、「php文字列(string)使い方のまとめ」、「php+mysqlデータベース操作入門チュートリアル」および「php一般データベース操作テクニックのまとめ」
ここで述べたことが皆さんのPHPプログラム設計に役立つことを願っています.
page;
*
*
* $page->pageCount;
*
*
* $page->rowCount;
*
*
* $page->listSize;
*
*
* $page->list;
* 2 , :list[0]['id'] id .
*
*
* $page->getPageList();
*/
class Page
{
//
var $sql;
var $page;
var $pageSize;
var $pageStr;
//
var $pageCount; //
var $rowCount; //
//
var $list = array(); //
var $listSize ;
//
function Page($conn,$sql_in,$page_in,$pageSize_in,$pageStr_in)
{
$this->sql = $sql_in;
$this->page = intval($page_in);
$this->pageSize = $pageSize_in;
$this->pageStr = $pageStr_in;
// 1
if(!$this->page||$this->page<1)
{
$this->page = 1;
}
//
$rowCountSql = preg_replace("/([\w\W]*?select)([\w\W]*?)(from[\w\W]*?)/i","$1 count(0) $3",$this->sql);
if(!$conn)
$rs = mysql_query($rowCountSql) or die("bnc.page: error on getting rowCount.");
else
$rs = mysql_query($rowCountSql,$conn) or die("bnc.page: error on getting rowCount.");
$rowCountRow = mysql_fetch_row($rs);
$this->rowCount=$rowCountRow[0];
//
if($this->rowCount%$this->pageSize==0)
$this->pageCount = intval($this->rowCount/$this->pageSize);
else
$this->pageCount = intval($this->rowCount/$this->pageSize)+1;
//SQL
$offset = ($this->page-1)*$this->pageSize;
if(!$conn)
$rs = mysql_query($this->sql." limit $offset,".$this->pageSize) or die("bnc.page: error on listing.");
else
$rs = mysql_query($this->sql." limit $offset,".$this->pageSize,$conn) or die("bnc.page: error on listing.");
while($row=mysql_fetch_array($rs))
{
$this->list[]=$row;
}
$this->listSize = count($this->list);
}
/*
* getPageList
* , , / .
*/
function getPageList()
{
$firstPage;
$previousPage;
$pageList;
$nextPage;
$lastPage;
$currentPage;
// >1
if($this->page>1)
{
$firstPage = "pageStr.「1」>トップページ";
}
// >1
if($this->page>1)
{
$previousPage = "pageStr.($this->page-1). のページ";
}
//
if($this->pagepageCount)
{
$nextPage = "pageStr.($this->page+1).」> ページ";
}
//
if($this->pagepageCount)
{
$lastPage = "pageStr.$this->pageCount.""> ページ";
}
//
for($counter=1;$counter<=$this->pageCount;$counter++)
{
if($this->page == $counter)
{
$currentPage = "".$counter."";
}
else
{
$currentPage = " "."pageStr.$counter."\">".$counter.""." ";
}
$pageList .= $currentPage;
}
return $firstPage." ".$previousPage." ".$pageList." ".$nextPage." ".$lastPage." ";
}
}
?>
使用例:
list;
foreach($rows as $row)
{
echo $row['UserName']."
";
}
echo $page->getPageList(); //
?>
PHPについてもっと兴味のある読者は、「PHP配列(Array)操作技巧大全」、「PHP数学演算技巧総括」、「php正則式用法総括」、「PHP+ajax技巧と応用小結」、「PHP演算と演算子用法総括」、「PHPネットワークプログラミング技巧総括」、「PHP基本文法入門教程」、「php日付と時間の使い方のまとめ」、「phpオブジェクト向けプログラム設計入門チュートリアル」、「php文字列(string)使い方のまとめ」、「php+mysqlデータベース操作入門チュートリアル」および「php一般データベース操作テクニックのまとめ」
ここで述べたことが皆さんのPHPプログラム設計に役立つことを願っています.