ホームページ  >  記事  >  バックエンド開発  >  PHP ページネーションはテーブルを使用してクラスをページネーションできます_PHP チュートリアル

PHP ページネーションはテーブルを使用してクラスをページネーションできます_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 16:59:441207ブラウズ

* 新しいオブジェクトを作成するときに必要な変数: $query (データ テーブルからレコード数を取得する SQL ステートメント)、$page (現在のページ番号)、$maxline (ページごとの行数)) ※1. Showpageメソッド:上記で作成したオブジェクトの$queryが正しければ、直接呼び出してページング情報を出力します。 * 2. Showtable メソッド: 必須変数: $query (データベースからレコードを読み取る SQL ステートメント。Limit はメソッド内で追加されているため、追加しないでください)

のテーブルを直接出力するので、前後に
コードは次のとおりです コードをコピー

/*
* データテーブルとページング情報を直接出力
* 新しいオブジェクトを作成するときに必要な変数: $query (データ テーブルからレコード数を取得する SQL ステートメント)、$page (現在のページ番号)、$maxline (ページごとの行数))
※1. Showpageメソッド:上記で作成したオブジェクトの$queryが正しければ、直接呼び出してページング情報を出力します
* 2. Showtable メソッド: 必須変数: $query (データベースからレコードを読み取る SQL ステートメント。Limit はメソッド内で追加されているため、追加しないでください)
*

を追加するだけで完全なテーブルが得られます
* 3. showresultメソッド: 送信された$query内のSQLに従って$resultリソースを直接返し、テーブルは自分で定義できます
* 例:
// 現在のページを取得し、ページごとの最大行数を定義します
$page=1;
$maxline="10";
if(!empty($_GET["page"])){
$page=$_GET["ページ"];
}
//テーブル内のデータの総数を計算するSQL文を定義し、以下の$queryと同じテーブルと条件にする必要があり、オブジェクトを作成し、ページ番号とテーブルを出力します
$query="メールボックスからカウント(*)を選択";
$a=新しいページリスト($query, $maxline, $page);
$a->showpage();
//ここでリストを表示するには上記のSQL文と同じ条件が必要です
$query="作成された説明によるメールボックス順序からユーザー名、名前、クォータ、作成済み、変更済み、アクティブを選択";
echo "";
$a->showtable($query);
echo "
";
* */

クラスページリスト{
プライベート $link;
プライベート $result;
プライベート $maxline;
プライベート $ページ=1; プライベート $startline=0;
プライベート $countline;
パブリック $countpage;
プライベート $prevpage;
プライベート $nextpage;
//データベース接続を独自のアドレスに変更する必要があります
プライベート $dbhost=DBHOST;
プライベート $dbuser=DBUSER;
プライベート $dbpasswd=DBPASSWD;
プライベート $dbtable=DBTABLE;

/*
* コンストラクターでデータベース接続を確立します
*1. データベース接続の4つのパラメータは定数として設定され、config.phpページに記録されます
* 2. データベースに接続し、データベースを選択します
※3.データベース実行のエンコード方式をutf8に設定します
* 4. 受け取った2つの変数$maxlineと$pageをクラス属性に代入し、クラスの一般属性となります
* ($query は count(*) の SQL であり、以下のメソッドのクエリとは異なります)
* 5. 新規オブジェクト作成時に提出した$query文に従い、データベースに対してクエリを実行し、取得したレコードの総数をクラス属性$this->countlineに代入します
* 総レコード数/ページあたりの行数を除算し、ceil 関数を使用して上位を四捨五入して総ページ数を取得し、クラス属性 $this->countpage に代入します
* 6. 送信された現在のページ番号 $page に基づいて、前後のページ $this->prevpage と $this->nextpage の番号を計算します
※データベース読み込みの開始ラインも計算する必要があります $this->startline
* ここには、page<2、page=last page、page>1 の 3 つの状況があります (この状況を判断することはできません。else を使用してください)
* */
パブリック関数 __construct($query,$maxline,$page){
@$this->link=mysql_connect($dbhost,$dbuser,$dbpasswd) または die($this->フィードバック='システム エラー、管理者に問い合わせてください');
@mysql_select_db($dbtable,$this->link) または die($this->フィードバック='システム エラー ,管理者に連絡してください');
@mysql_query('set names utf8');
$this->maxline=$maxline;

// 行数を読み取り、結果を $coutline
に返す $this->result=mysql_query($query) または die($this->フィードバック='システム エラー、管理者に連絡してください');
if($count=mysql_fetch_row($this->result)){
//intval は文字列を int に変換します。変換する必要はありませんが、このプログラムの方が健全です
$this->countline = intval($count[0]);
$this->countpage = ceil($this->countline/$maxline);
}
//送信された $page が総ページ数より大きいかどうかを判断します
if($page<=$this->countpage){
$this->page=$page;
}

if($this->page $this->prevpage=0;
$this->nextpage=2;
$this->startline= 0;
}elseif($this->page==$this->countpage){
$this->prevpage=$this->page-1;
$this->nextpage=0;
$this->startline= ($this->page-1)*$this->maxline;
}その他{
$this->prevpage=$this->page-1;
$this->nextpage=$this->page+1;
$this->startline= ($this->page-1)*$this->maxline;
}
}

/*
* デストラクター
* リソースを解放し、データベース接続を閉じます
* */
パブリック関数 __destruct(){
mysql_free_result($this->result);
mysql_close($this->link);
exit();
}

/*
* ページング情報を出力します
* */
パブリック関数 showpage(){
//$listnum は、上位ページと下位ページの間の桁数を表示します。偶数である必要があります。そうしないと2で割ることができません
$listnum=10;
echo $this->countline." Items, ".$this->countpage." ページ ";

  if($this->prevpage==0){
   echo "<<Prev ";
  }else{
   echo "prevpage."><<Prev ";
  }
  
  if($this->countpage<$listnum){ //判断总页数是否小于$listnum
$page_start=1;
$page_end=$this->countpage;
  }elseif($this->page<$listnum/2){ //判断当前页是否小于$listnum的一半
$page_start=1;
$page_end=$listnum;
}elseif($this->page>$this->countpage-($listnum/2)){  //判断当前页是否是最后几页了
   $page_start=$this->countpage-($listnum-1);
   $page_end=$this->countpage;
  }else{                    //如果上面的条件都不符合,那当前也正在中间
   $page_start=$this->page-($listnum/2-1);
   $page_end=$this->page+($listnum/2);
  }
  
  for($i=$page_start;$i<=$page_end;$i++){ //根据上面判断的start和end页码,循环输出之间的页码
if($i==$this->page){
    echo "".$i."  ";
   }else{
    echo "".$i."  ";
   }
  }
  
  if ($this->nextpage==0){
   echo " Next>>";
  }else{
   echo " nextpage.">Next>> ";
  }
  
 }

/*
 * 根据sql语句读取数据库中的数据,然后列成表单输出
 * 需要的变量:$field(字段),$table(表名),$startline(开始行),$maxline(每页显示行数)
 * 输出从表格的tr开始,从tr结束,所以在使用这个方法前后要加table的标签
 * */ 
 public function showtable($query){
  $query=$query." LIMIT ".$this->startline.",".$this->maxline;
  $result = mysql_query($query) or die($this->feedback='System Error ,Please contect admin');
  //行循环开始,定义一个$i变量,用来显示行号,每次执行一条while语句,指针就指向下一条数据
  $i=0;
  while ($fetch = mysql_fetch_assoc($result)){
   $i++;
   echo "".$i."";
   //列循环开始,因为通过while后,$fetch已经是个数组,所以通过foreach遍历数组即可
   foreach ($fetch as $value){
    echo "".$value."";
   }
   echo "";
  }
 }

/*
 * 这个方法是将资源传出,表格在外面自定义样式
 * */
 public function showresult($query){
  $result = mysql_query($query) or die($this->feedback='System Error ,Please contect admin');
  return $result;
 }
}
?>

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/631299.htmlTechArticle* 在新建对象时需要的变量:$query(从数据表中获取记录数的sql语句),$page(当前页码),$maxline(每页几行))* 1、showpage方法:如果上面创建对象...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。