分页显示Oracle数据库记录的类之二

  作者:bea

//-------------------------------- // 工作函数 //-------------------------------- //读取记录 //主要工作函数,根据所给的条件从表中读取相应的记录 //返回值是一个二维数组,Result[记录号][字段名] function ReadList() { $SQL="SELECT * FROM ".$this->Table." ".$this->Condition." ORDER BY ".

//--------------------------------

// 工作函数

//--------------------------------



//读取记录

//主要工作函数,根据所给的条件从表中读取相应的记录

//返回值是一个二维数组,Result[记录号][字段名]



function ReadList() {



$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 <= $ncols; $i++ )

$column_name[$i] = OCIColumnName($stmt,$i);

$k=0;



for($j=0;$j<$this->StartRec+$this->Offset;$j++) OCIFetch($stmt);

for($j=0;$j<$this->MaxLine;$j++){

if(OCIFetch($stmt)){

$k++;

for($i=1;$i<=$ncols;$i++)

$temp[$column_name[$i]]=OCIResult($stmt,$i);

$this->Result[]=$temp;

}

else break;

}

$this->Number=$k;



}

OCIFreeStatement($stmt);

return $this->Result;

}

//读最新的记录

//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 <= $ncols; $i++ )

$column_name[$i] = OCIColumnName($stmt,$i);

$k=0;



for($j=0;$j<$topnum;$j++){

if(OCIFetch($stmt)){

$k++;

for($i=1;$i<=$ncols;$i++)

$temp[$column_name[$i]]=OCIResult($stmt,$i);

$this->TopResult[]=$temp;

}

else break;

}

$this->TopNumber=$k;



}

OCIFreeStatement($stmt);

return $this->TopResult;





}

//---------------------------

// 分页相关

//---------------------------



//显示当前页及总页数

//本函数在GetPage()后调用。

function ThePage() {

echo "第".$this->CPages."页/共".$this->TPages."页";

}



//显示翻页按钮

//此函数要在GetPage()函数之后调用

//显示下页、上页,并加上要传递的参数



function Page() {

$k=count($this->PageQuery);

$strQuery=""; //生成一个要传递参数字串

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 "<A href=".$this->TheFirstPage." class=newslink>上一页</A>";

else echo "上一页";

}



function NexPage($strQuery){

$next=$this->Offset+$this->MaxLine;

$k=$this->Total-$this->StartRec;

if($next<$k)

echo "<A href=$PHP_SELF?offset=".$next.$strQuery." class=newslink>下一页</A>";

else

echo "下一页";

}

//------------------------------------

// 记录分组

//----------------------------------

//显示分组

function NumPage() {

$first=($this->CGroup-1)*($this->PGroup)+1;

$last=($first+$this->PGroup > $this->TPages)? ($this->TPages+1):($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+1<=$this->TPages)?($this->CGroup*$this->PGroup+1):(-1);

$next=($ne!=-1)?( ($ne-1)*$this->MaxLine):(0);



$k=count($this->PageQuery);

$strQuery=""; //生成一个要传递参数字串

for($i=0;$i<$k;$i++){

$strQuery.="&".$this->PageQuery[$i][key]."=".$this->PageQuery[$i][value];

}



if($first!=1)

echo "<A href=$PHP_SELF?offset=".$prev.$strQuery." > << </a>";

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 "<font color=#e00729>".$i."</font> ";

}

if($ne!=-1)

echo "<A href=$PHP_SELF?offset=".$next.$strQuery." > >> </a>";

}



//******end class

}

?>




有用  |  无用

猜你喜欢