ホームページ >php教程 >php手册 >すべてのテーブルをクエリできる「ユニバーサル」クエリ ページネーション クラス

すべてのテーブルをクエリできる「ユニバーサル」クエリ ページネーション クラス

WBOY
WBOYオリジナル
2016-06-13 12:44:12845ブラウズ


すべてのテーブルをクエリできる「ユニバーサル」クエリ ページネーション クラス 最近、すべてのテーブルをターゲットにできるクエリ ページング クラスを作成したいと思い立ちました。実際の開発では、結果セットのクエリやページングが最もよく使われるコードだと思いますが、テーブルの構造が多様であるため、コードの再利用率と保守性をできるだけ向上させたいと考えています。
以下は私が書いたものです。より良い改善ができ、より多くのサポートが得られるかどうかを確認するために、ご指導とテストをお願いいたします。
現在、単一のテーブルのみをサポートしており、結合クエリはサポートしていません。しかし、将来的にはそれをどのようにサポートするかを検討する可能性があります。

コード:
/*************************************************** * ************
このクラスは主に、多くのテーブルの単純なデータ クエリを解決するために使用され、現在も改良されています。ネチズンがもっとコメントや提案を提供してくれることを願っています。

私の目標は、ほぼすべての mysql テーブルのクエリに適用でき、結果セットをページネーションできるクラスを開発することです。
クエリに表示されるフィールド値を自動的に識別できます。

chinaunix の友人、特に PHP バージョンのネチズンの長期にわたる支援に特別な感謝の意を表したいと思います。
NightKids については特に言及しておく必要があります。彼は常に私に無償の支援を提供し、ソースコードも含めて助けてくれました。

このクラスは誰でも自由に参照、使用、変更できます。ただし、このテキストは保管してください。
このクラスの使用によって生じるすべての損失は、作者のtoneraとは何の関係もありません。

一部の複雑な結合クエリについては、クラスを派生して SQL 実装を再構築できることをまだ検討中です。
このクラスはそれ以上の表示スタイルを考慮しません。自分で構築できます。
********************************************** ***** ******************/
class browser{
var $c_table; //クエリ対象のテーブル名
var $c_rows; //表示する行数
var $c_lation; //クエリ条件
var $c_result; //データ接続ハンドル
var $c_query; //最終的に構築されたクエリ
var $c_found; //結果セット
var $c_offset; //ページングに表示されるオフセット
var $total; //結果セットの総数

//データベースに接続します
function connect(){
include '../connect.inc.php'
if ( $connection ==false){
$this->c_error.="データベースに接続されていません。
";
終了;
}
$this->c_result=$ 接続;
}

//コンストラクター、変数の初期化
function browser($tablename,$row,$sql,$lation,$orderby){
$this->c_table =$テーブル名;
$this->c_rows=$row;
if(empty($this->c_offset)){
$this->c_offset=0; if (empty($tablename) or empty($row) or empty($sql)){
$this->c_error="クエリ テーブルが存在しないか、表示する行数が存在しないか、クエリ ステートメントが存在しません< ; br>";
}
$this->c_query=$sql;
if (!empty($lation)){
$this->c_query.=" ".$ lation ;
}
if (!empty($orderby)){
$this->c_query.=" ".$orderby;
}
}

/ /総ページ数を計算する
function TatolPage(){
$sult=mysql_query("select count(*) as 'total_rows' from $this->c_table",$this->c_result);
if ($sult==false) {
$this->c_error.="クエリは結果セットの合計数を計算できませんでした。確認してください。
";
exit;
}
$tempvar=mysql_fetch_array($sult);
$this->total=$tempvar[0];
}

//クエリから結果セットを取得し、配列に格納します。 c_found[][]
function GetFound(){
$sult=mysql_query($this->c_query,$this-> ;c_result) または die(mysql_error());
while ($found=mysql_fetch_array($sult)){
$this->c_found[]=$found;
}
}

//データをクエリし、結果を変数にページに保存します。
function ShowTable(){

$this->connect(); TatolPage();

if (empty($_GET[offset])){
$_GET[offset]=0;
$this->c_query.= ".$_GET[オフセット].",​​ ".$this->c_rows;
$sult=mysql_query($this->c_query,$this->c_result) または die(mysql_error());

//クエリを解析し、表示するフィールド値を取得します
$tempvar=explode(" ",$this->c_query);
$fields=explode(",",$ tempvar[1]); //フィールド値 (配列)

//データをテーブルに表示します
$echo_content.="

"; while($found=@ mysql_fetch_array($sult)){
$echo_content.="";
// ユーザーが指定したフィールドを表示します。ここをよく読んでください2 ;$i $echo_content.="" > $echo_content.="< ;/tr>";
}

//ページング
if ($this->c_rows==0){
$this->gt; c_error.="表示される数値各ページの を 0 にすることはできません";
exit;
}
$total_page=ceil($this->total/$this->c_rows);
$ pre_page=$_GET[offset ]-$this->c_rows;
//次のページ
$nex_page=$_GET[offset] $this->c_rows;
if ($pre_page> ;=0){
$echo_content.="上のページ&" ;
}else{
$echo_content.="
前のページ&";
}

for($i=1;$i< =$total_page;$i ){
if ($_GET[offset]/$this->c_rows==($i-1)){
*$this->c_rows.">" .$i."&";
=0 および ($_GET[offset] $this->c_rows)<=$this->total){
$echo_content. ="&次のページ
"; "
";
$echo_content.="".$found[1]."
".$found[$i]."
";
return $echo_content

}
}

/*例
//browser("テーブル名"、各ページに表示される番号、"sql"、"クエリ条件"、"ソート条件");
$gggg=新しいブラウザ("news",5,"ニュースから auto_id,news_title を選択","","ニュースタイムの説明で並べ替え");

$temp=$gggg->ShowTable(); temp;

//$gggg->GetFound() はクエリ結果セットを 2 次元配列に保存しますが、この例では使用されません。
*/
?>

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:1. PHP の概要次の記事:1. PHP の概要