oracle|ページネーション|データ|データベース|表示
//--------------------------------
// 仕事関数
//-------- ------------------------
//レコードの読み取り
//メインの作業関数は、指定された条件に従ってテーブルから対応するレコードを読み取ります。条件 Record
//戻り値は2次元配列 Result[レコード番号][フィールド名]
function ReadList() {
$SQL="SELECT * FROM ".$this->Table." ".$ this->Condition." ORDER BY ".$this->Id.";
$stmt = OCIParse($this->LinkId,$SQL);
$bool = OCIExecute($ stmt);
if (!$bool) {
echo "接続に失敗しました!";
OCILogoff($this->exit)
else {
$ncols($stmt); ( $i = 1; $i $column_name[$i] = OCIColumnName($stmt,$i);
for($j=0;$j) StartRec+$this->Offset;$j++) OCIFetch($stmt);
for($j=0;$jMaxLine;$j++){
if(OCIFetch( $stmt) ){
$k++;
for($i=1;$i<=$ncols;$i++)
$temp[$column_name[$i]]=OCIResult($stmt,$i); this->Result[]=$temp;
elsebreak;
$this->Number=$k;
OCIFreeStatement($stmt); }
/ /最新のレコードを読み取ります
//topnumは読み取るレコードの数を指定します
function ReadTopList($topnum){
$SQL="SELECT * FROM ".$this->Table." "。 $this->Condition." ORDER BY ".$this->Id." DESC"
$stmt = OCIParse($this->LinkId,$SQL);
$bool = OCIExecute($stmt); ;
if ( !$bool) {
echo "接続に失敗しました! ";
OCILogoff($this->LinkId);
exit;
}
else {
$ncols = OCINumCols($stmt);
for ( $i = 1; $i $column_name[$i] = OCIColumnName($stmt,$i);
$k=0;
for($j=0;$j<$topnum;$j++){
if(OCIFetch($stmt)) {
$k++;
for($i=1;$i$temp[$column_name[$i]]=OCIResult($stmt,$i); TopResult[]=$temp;
elsebreak;
$this->TopNumber=$k;
OCIFreeStatement($stmt);
; //---------------
// ページネーション関連
//------------- - ---------------
//現在のページと総ページ数を表示します
//この関数は GetPage() の後に呼び出されます
function ThePage() {
echo "th" .$.this->CPages."Pages/Total".$this->TPages."Pages"
}
//ページボタンを表示します
//この関数は GetPage() 関数の後に呼び出す必要があります
//次のページ、前のページを表示し、渡すパラメータを追加します
function Page() {
$k=count($this->PageQuery) //パラメータを生成します。渡される文字列
for($i=0;$i<$k;$i++){
$strQuery.="&".$this->PageQuery[$i][key]."=".$ this-> PageQuery[$i][value];
}
return $strQuery;
function PrePage($strQuery){
$prev=$this->Offset-$this->MaxLine;
if($ prev>=0)
echo "<A href=$PHP_SELF?offset=".$prev.$strQuery." class=newslink>前のページ</A>
else if($this-> ;TheFirstPage! =NULL)
echo "";
else echo "前のページ"; $ strQuery){
$next=$this->Offset+$this->MaxLine
$k=$this->Total-$this->StartRec;
if($next<$k)
echo; " ";
else
echo "次のページ"
//---- - -----------------------------
//レコードのグループ化
//---------- - -------------------------
//グループ化を表示
function NumPage() {
$first=($this->CGroup-1) * ($this->PGroup)+1;
$last=($first+$this->PGroup > $this->TPages):($first+$ this ->PGroup);
$pr=($this->CGroup-2>=0)?( ($this->CGroup-2)*($this->PGroup)+1 ):( - 1);
$prev=($pr!=-1)?( ($pr-1)*$this->MaxLine):(0);
$ne=($this->CGroup*$ this ->PGroup+1TPages)?($this->CGroup*$this->PGroup+1):(-1);
$next=($ne!=- 1 )?( ($ne-1)*$this->MaxLine):(0);
$k=count($this->PageQuery); // to を生成します。パラメータ文字列
for($i=0;$i<$k;$i++){
$strQuery.="&".$this->PageQuery[$i][key]."=".$ this ->PageQuery[$i][value];
}
if($first!=1)
echo "";
for($i=$first;$i<$last;$i++) {
if($this->CPages!=$i){
$current=($i-1)*$this->MaxLine;
echo "<A href=$PHP_SELF?offset=".$current.$strQuery." >".$i."</a> ";
}
else echo "".$i." ";
}
if($ne!=-1)
echo "<A href=$PHP_SELF?offset=".$next.$strQuery." > >> </a>";
}
//******授業終了
}
?>