仿照.net寫的表格資料繫結的類(排序,刪除,分頁功能)

yeahokay發表於2007-07-24
簡單的說下功能:1.點選欄位名排序

2.點選編號刪除

3.分頁顯示功能[@more@]1.檔名:date.class.php
PHP程式碼:

php/*
* PHP version:5.x
*功能:能夠將指定的表的資料與表格繫結,帶分頁功能,點選指定欄位排序,點選指定編號刪除記錄,適合後臺管理
*屬性:
*$bgcolor....................................................表格背景顏色
*$mytable....................................................指定資料庫中的表
*$pageSize.................................................每頁面顯示記錄條數
*$totalPage.................................................總頁數
*$totalNum...................................................總的記錄數量
*$currentPage.............................................起始頁
*$start...........................................................limit分頁使用的引數
*$page.........................................................頁面列表
*$firstFIled.....................................................表中的第一個欄位名(一般為ID或者類似的欄位)
*$actionPage.................................................刪除指定記錄的指令碼頁面,預設為del.php,若指定了指令碼頁面,前提是必須存在
*
*方法
*__construct($tables,$order,$pageSize=10,$actionPage="del.php")................................建構函式引數一表示要繫結的表的名字,引數二表示預設的排序欄位,引數三表示每頁顯示多少條記錄,引數四表示資料刪除的指令碼處理頁面,預設為del.php
*private function notice()..................................私有的方法 ,主要輸出操作提示區域,也可以輸出其他資訊
*private function pages()..................................分頁連結顯示區域
*private function splitePage()..........................獲取分頁所需的所有引數
*private function getPages()............................獲取分頁連結
*public function outputPage().........................輸出最後的結果
*private function getOrders()............................獲取排序欄位
*public function subString($content,$length=20)........................................擷取超過指定長度的字串,引數一為字串,引數二為指定長度
*private function getFirstFiled().....................................獲取表中的第一個欄位
*public function delRecords().......................................刪除記錄
*/
class
dataBind
{
public
$bgColor;
//指定表格背景顏色public $mytable;//指定要繫結的表public $pageSize,$totalPage,$totalNum,$currentPage,$start,$page;//分頁所需的屬性public $message;//設定操作提示public $order,$firstFiled;//排序欄位public $actionPage;
public
$desc;
//升序或者降序
//建構函式,初始化基本屬性
function __construct($tables,$order,$pageSize=10,$actionPage="del.php"
)
{
$this->bgColor="orange"
;$this->mytable=$tables;//即將使用的表$this->order=$order;//設定預設的排序欄位,前提是表中已經存在的欄位$this->pageSize=$pageSize;//每頁顯示條數$this->currentPage=1;self::getOrders();//獲取排序引數self::getPages();//獲取頁數$this->desc="desc";//預設降序排列$this->start=($this->currentPage-1)*$this->pageSize;//使用limit分頁時的起始記錄的編號 $this->message="提示:點選第一行的每一列可以按照該列排序,雙擊擊每一行第一列可以刪除該記錄";//操作提示資訊$this->firstFiled=self::getFirstFiled();//獲取表中的第一個欄位名$this->actionPage="$actionPage";
}
//操作提示資訊區private function notice()
{
echo
"
$this->message
"
;
}
//分頁連結顯示區域private function pages()
{
for (
$m=1;$m<=$this->totalPage;$m
++)
{
if(
$this->currentPage==$m
)
{
$this->page.="$m";
//如果是當前頁就不顯示為連結}
else
{
$this->page.="<order>$m>&nbsp&nbsp"
;
}
}
echo
"
Total pages :$this->totalPage Page:$this->page
"
;
}
//獲取分頁所需要的所有引數的值private function splitePage()
{
$sql="select * from $this->mytable"
;$res=mysql_query($sql) or die(mysql_error());$this->totalNum=mysql_num_rows($res);$this->totalPage=ceil($this->totalNum/$this->pageSize);//總頁數
}
//獲取翻頁連結private function getPages()
{
if(
$_GET["page"]==""||$_GET["page"]<0
)
{
$this->currentPage=1
;
}
else
{
$this->currentPage=$_GET["page"
];
}
}
//輸出 public function outputPage()
{
self::notice
();self::splitePage();$sql="select * from $this->mytable order by '$this->order' $this->desc limit $this->start,$this->pageSize";$res=mysql_query($sql) or die(mysql_error());$rows=mysql_num_rows($res);$rs=mysql_fetch_array($res ,1);
echo
"";
echo
"
";//輸出表格的第一行,就是資料庫中表的欄位名foreach ($rs as $key=>$values)
{
echo
"
";
}
echo
"
";
//輸出所有的資料for ($i=0;$i<$rows;$i++)
{
echo
"
";
foreach (
$rs as $key=>$value
)
{
$value=self::subString($value,40
);
if(
$key==$this->firstFiled
)
{
//為表格的每行的第一列設定動作echo "
";
}
else
{
echo
"
";
}
}
echo
"
";$rs=@mysql_fetch_array($res,1);
}
echo
"
$key
$value$value
"
;self::pages($this->totalPage,$this->page);self::Ifream();
}
//獲取排序欄位private function getOrders()
{
if(
$_GET["key"]!=""
)
{
$this->order=$_GET["key"
];
}
}
//擷取字串,諸如文章內容public function subString($content,$length=20)
{
if(
strlen($content)>$length
)
{
$content=substr($content,0,$length)."..."
;
return
$content
;
}
else
{
return
$content
;
}
}
//獲取第一個欄位private function getFirstFiled()
{
$sql="select * from $this->mytable"
;$res=mysql_query($sql) or die(mysql_error());$rs=mysql_fetch_array($res,1);$firstFiled=array_keys($rs);
return
$firstFiled[0
];
}
//輸出一個隱藏的ifream,有些連結的方向或表單的提交方向都指向他private function Ifream()
{
echo <<
IF;
}
//刪除記錄public function delRecords()
{
$ID=$_GET["$this->firstFiled"
];$sql="delete from $this->mytable where $this->firstFiled=$ID";mysql_query($sql) or die(mysql_error());
return
true
;
}

}
?>
2.Demo.php
PHP程式碼:

<script language=javascript src=include/order.js>
include_once("include/date.class.php");
//$conn=mysql_connect("localhost","root","123456");mysql_select_db("test");$db=new dataBind("bbs","T_ID",5,"del.php");$db->outputPage();?>
3.del.php
PHP程式碼:

phpinclude_once("include/date.class.php");mysql_connect("localhost","root","123456");mysql_select_db("test");$db=new dataBind("bbs","ID",5,"{$_SERVER['PHP_SELF']}");//注意第二個引數,必須是引數一中確實存在的欄位if($db->delRecords())
{
echo
"
;
}
else
{
echo
"
;
}
?>
4.order.js
PHP程式碼:

function orders(phpself,page,key)
{
location.href=phpself+"?page="+page+"&key="+key
;
}
function
command(url
)
{
document.getElementById("Command").src=url
;
}
function
message(msg
)
{
alert(msg
);
}
function
reload
()
{
top.location.reload
();
}

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/786540/viewspace-927688/,如需轉載,請註明出處,否則將追究法律責任。

相關文章