ホームページ > バックエンド開発 > PHPチュートリアル > すべてのテーブルをクエリできる「ユニバーサル」クエリ ページング クラス_PHP チュートリアル

すべてのテーブルをクエリできる「ユニバーサル」クエリ ページング クラス_PHP チュートリアル

WBOY
リリース: 2016-07-21 16:09:10
オリジナル
987 人が閲覧しました


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

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

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

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

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

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

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

// コンストラクター、変数を初期化します
関数ブラウザ($tablename,$row,$sql,$lation,$orderby){
$this->c_table=$tablename; >c_rows=$row;
if(empty($this->c_offset)){
$this->c_offset=0;
}
if (empty($tablename) または empty($row) または empty( $sql)){
$ this-> (!empty($lation)){
orderby;
}
}

//総ページ数を計算する
function TatolPage(){
$sult=mysql_query(" select count(*) as 'total_rows' from $this->c_table",$this->c_result);
if ($sult==false) {
$this->c_error.="クエリは失敗しました結果セットの合計数を計算します。確認してください。
";
結果セットを取得し、
関数 GetFound(){ の配列 c_found [][] に格納します。 while ($found=mysql_fetch_array($sult) ){
$this->c_found[ ]=$found; --取る 持つ
$this->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]); // フィールド値 (配列)
个 // データをテーブルに表示します。 gt ;";
$echo_content.="".$found[1]." < ;/td & gt; "";
// ユーザーが指定したフィールドを表示します。ここで詳しく見る必要があります
($ i = 2; $ i & lt; count ($fields); $ i ++) {
$ echo_content. = "& lt; td & gt; ;".$found[$i].""; s= =0){
$this->c_error. =「各ページに表示される番号は0 "" $ pre_page = get [offset] - $&gt; c_rows; td colspan=10>前のページ& ";
}else{
$echo_content.="上页&";
}
//显示页码
for($i=1;$i<=$total_page; $i++){
if ($_GET[offset]/$this->c_rows= =($ i-1)){
{
$ echo_content。= "&& lt; a href = $ php_self?offset ="。($ i-1)*$ this-&gt; c_rows。 "&gt;"。$ i ."&";
. 次のページ";
}else{
$echo_content.="&次のページ";
} $echo_content.=""
return $echo_content;

/*例
//browser("テーブル名", 各ページに表示される番号, "sql", "クエリ条件", "ソート条件");
$gggg=new browser("ニュース",5," select auto_id,news_title from news","","order by newstime desc");

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

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

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/314651.html技術記事すべてのテーブルをクエリできる「ユニバーサル」クエリ ページング クラス 最近、すべてのテーブルをクエリできるクエリ ページング クラスを作成するというアイデアを思いつきました。実際の開発では、クエリは次のようになると思います...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート