一個可查詢所有資料表的「通用」查詢分頁類
最近突發奇想,希望寫出一個可以針對所有表格的查詢分頁類別。因為在實際的開發中,恐怕查詢並將結果集分頁顯示是用得最多的程式碼,而表的結構是多樣的,我想盡可能地提高程式碼的重用率和維護性。
以下是我寫的,請各位加以指點,測試,看能否進行更好的改進和更多的支持。
目前還只支援單一的表,不支援聯合查詢。但未來可以會考慮如何支持。
代碼:
/**************************************************** ************
這個類別主要是解決針對許多表格的簡單資料查詢,還在完善中。希望廣大網友多提意見與建議。
我的目的是開發出一個幾乎可以適用於所有mysql表的查詢並將結果集分頁的類別。
可以自動辨識查詢中要顯示的欄位值。
在此,特別聲明,要感謝chinaunix的朋友,特別是PHP版的網友們長期以來給我的幫助。
特別要提的是NightKids,一直以來,他都給了我無私的幫助,甚至是他的原始碼。
這個類別可以被任何人自由引用,使用,修改。但請保留這段文字。
使用這個類造成的一切損失,都與作者tonera無關。
我還在考慮,對於一些複雜的聯合查詢,可以衍生一個類,重新建構sql實作。
這個類別沒有考慮更多的顯示風格,你可以自己建構。
*********************************************** ******************/
class browser{
var $c_table; //要查詢的表名
$ c_rows; //要顯示的行數
var $c_lation; //查詢的條件
var $c_order; //排序的條件
var $c_order; //排序的條件
var $c_order; //排序的條件
var $c柄_res var $c_query; //最終構造的查詢
var $c_found; //結果集
var $c_error; //錯誤收集器
var $c_error; //錯誤收集器
var $c_/set > var $total; //結果集的總數
//連接資料庫
function connect(){
php connection==false){
$this->c_error.="沒有連接上資料庫。
";
exit 🠜> 🎜 > }
//建構函數,初始化變數
function browser($tablename,$row,$sql,$lation,$orderby){
🎜> $this->c_rows=$row;
if(empty($this->c_offset)){
if (empty($tablename ) or empty($row) or empty($sql)){
$this->c_error="沒有查詢的表或沒有批次顯示多少行或沒有查詢語句
";
🎜> $this->c_query=$sql;
if (!empty($lation)){
if (! empty($orderby)){
$this->c_query.=" ".$orderby;
}
} $sult=mysql_query("select count(*) as 'total_rows' from $this->c_table",$this->c_result);
if ($sult==false)
if ($sult==false) c_error.="計算結果集總數目的查詢失敗,請檢查。
";
exit;
}
$tempvar=mysql_fetch_array($sult); 🎜>
//查詢取得結果集,存入陣列c_found[][]中
function GetFound(){
$sult=mysql_query($this->c_query,$0->c_result) =mysql_query($this->c_query,$0->c ));
while ($found=mysql_fetch_array($sult)){
$this->c_found[ //查詢數據,結果分頁存入一個變數
function ShowTable(){
$this->connect();
$this->TatolPage() $_GET[offset]=0;
}
$->pmit,$$->p. this->c_rows;
$sult=mysql_query($this->c_query,$this->c_result) or die(mysql_error());
值
$tempvar=explode(" ",$this->c_query);
$fields=explode(",",$tempvar[1]); ////欄位值(數組值> //顯示資料到一個表格
$echo_content.="
"; $echo_content.="".$found[1]." | "; ||||||||||
頁&"; } //顯示頁碼 for($i=1;$i >c_rows==($i-1)){ $echo_content.="&第".$i."頁&"; =$PHP_SELF?offset=".($i-1)*$this->c_rows.">".$i."&"; } 下一頁 if ($nex_page!=0 and ($_GET[offset] $this->c_rows)total){ $echo_content.="& |