PHP Web サイトでは、主に小説を読む場合にページネーション効果を実現したいというニーズが多くあります。
この関数は次のように実装されます:
ページングに SQL クエリを使用する場合、詳細については、スクリプトを参照してください。
1.pager.class.php
$sql; query state
public $datanum; //全データの総レコード数をクエリ
public $page_size; //各ページに表示されるレコード数
protected $_errstr;
protected $_conn;
protected $_query_id;
public function query($query)///この関数には問題があるため、当面は使用できません
$ret = false;
if (! Empty ($ query)) {
if ($ this- & gt; _conn === false ||! Is_Resource ($ this- & gt; _conn)) {
warninglog (__ method__. ': 接続なしのクエリ SQL', true);
return false; , $this->_conn);
if ($this->_query_id === false) {
$this- >_errstr = '成功';
$ret = $this->_query_id;
}
}
msg = ($ret === false) : strval($ ret);
debugLog(__METHOD__.": SQL クエリ [$query] に対して [$msg] が返されました");
return $ret;
}
function __construct($sql,$ Page_ size){
$ result = mysql_query($ sql);
$ datanum = mysql_num_rows($ result);
$ this-> sql = $ sql;
$ this-> datanum =$datanum;
$this->page_size=$page_size;
}
//当前页数
public function page_id() {
if($_SERVER['QUERY_STRING'] == "" ){
return 1;
elseif(substr_count($_SERVER['QUERY_STRING'],"page_id=") == 0){
return 1;
}else{
return intval(substr($_SERVER['QUERY_STRING'],8));
}
}
//剩余url值
パブリック関数 url() {
if($ _SERVER['QUERY_STRING'] == ""){
return "";
elseif(substr_count($_SERVER['QUERY_STRING'],"page_id) =") == 0){
return " &".$_SERVER['QUERY_STRING'];
else{
str_replace("page_id=".$this->page_id(),"",$_ SERVER['QUERY_STRING']);
}
}
//总页数
public function page_num( ) {
if($this->datanum == 0){
return 1;
}else{
return ceil($this->datanum/$this->page_size);
}
}
// データベースクエリのオフセット ;page_size;
turn $this->sql." 制限 ".$this->start().",". page_size;
return $ _server ['php_ self'];
..、$ _server ['php_ self'];
>>
return "< a href ="。$ this-> php_self()."?page_id=1".$this->url().">前のページ ->page_id() != 1) { //ページの数ページ数が 1 に等しくありません
return "前のページ ";
// ページネーションを表示
private function display_page() {
$display_page = "";
if($this-> ;page_num() for ($i=1; $ipage_num();$i++) //ページをループします
".$i.$this->url().">".$i." ";
return $display_page;
elseif($this->page_num() > 10){ //大10页
if($this->page_ id() for ($i=1;$i<=10;$i++) //循環环显表示页面
$display_page .= "url().">".$i." }elseif(($this->page_id () > 6) && ($this->page_num()-$this->page_id() >= 4)){
for ($i=$this->page_id()-5 ;$i<=$this->page_id()+4;$i++) //循環显示页面
$display_page .= "url().">".$i." ";
return $display_page;
}elseif(($this- >page_id() > 6) && ($this->page_num()-$this->page_id() < 4)){
for ($i=$this->page_num()-9;$i<=$this->page_num();$i++) //循環掯显示页面
$display_page .= "url().">".$i." $display_page;
}
}
//次のページ
private function next_page() {
if ($this->page_id() < $this->page_num()) { //ページ数が総ページ数より少ないページの数
は "page_id()+1).$this->url() を返します."> 次の 1 ページ ";
return "< a href=".$this->php_self()."?page_id=".$this->page_num(). $ this->url().">次のページ " ; () {
$page_info .= "url().">ホームページ " ;
$page_info .= $this->pre_page(); $page_info .= $this-> next_page();
$page_info .= "page_num().$this->url( )."> 終了ページ & lt;/a & gt; "
$ page_info. =" ". $ This- & gt; page_id () . $page_info;
}
}
?>
2. スクリプト 2:
/read ページネーション クラス
include("pager .class.php");
// データベース接続の初期化
// $db = new mysql();
$impeach_host = '10.81.43.139';
$impeach_usr = 'vmtest15';
$impeach_passwd = 'vmtest15';
$impeach_name = 'ufeature';
$impeach_con = mysql_connect($impeach_host, $impeach_usr, $impeach_passwd) または
die("接続できません ".mysql_error());
mysql_select_db($impeach_name, $impeach_con);
// これは SQL クエリ ステートメントであり、クエリ結果を取得します
$sql = "select ufeature.spam_accuse_word_list の単語、 flag='0'";
// $ res_1 = mysql_query ($ SQL) または
// DIE ("Canon Result" . mysql_error ());
$ resql_query ($ page- & gt; sqlquery () ; "]."
";
>
2. ajax の使い方
1. まずはSQL文でのlimitの使い方を理解します
SELECT * FROM table ……limit Start Position 、操作数 (開始位置は0から始まります)
例:
最初の 20 レコードを取得します: SELECT * FROM table...limit 0, 20
11 番目から始まる 20 レコードを取得します: SELECT * FROM table... limit 10, 20
LIMIT n は LIMIT 0,n と同等です。
たとえば、select * from table LIMIT 5; //select * from table LIMIT 0, 5 と同じです。
2. ページングの原理
セグメント化の方法、現在どのセグメントにあるか (何番目のセグメントにあるか)ページあたりの項目、現在そのページに含まれる項目の数) ページ)
最初の 10 レコード: select * from table limit 0,10
11 番目から 20 番目のレコード: select * from table limit 10,10
21 番目から 30 番目のレコード :テーブル制限 20,10 から * を選択
ページング式:
(現在の番号ページ数 - 1) ページごとの番号、アイテム数
テーブル制限 ($Page- 1) から * $PageSize、$PageSize
3, $ _SERVER["REQUEST_URI"] 関数
は、事前定義されたサーバー変数の一種であり、$_SERVER で始まるものはすべて事前定義サーバー変数と呼ばれます。 REQUEST_URI の機能は、ドメイン名を除いた完全なアドレス パスである現在の URI を取得することです。
例:
現在のページは次のとおりです: http://www.test.com/home.php?id=23&cid=22
echo $_SERVER["REQUEST_URI " ]
結果は次のようになります: /home.php?id=23&cid=22
4. parse_url() 解析 URL 関数
parse_url() は、URL を固定キー値を持つ配列に解析する関数です。
例
$ua= parse_url("http://username:password@hostname/path?arg=value#anchor"); print_r($ua)結果: 配列
( [スキーム] => http ; [ホスト] => ホストドメイン名[パス] =>パス] => パス [クエリ] => パラメータを取得します。
[fragment] => アンカー ; 🎜> メッセージのこのページングは 3 つの部分に分かれており、1 つはデータベース設計、1 つは接続ページ、もう 1 つは表示ページです。
(1) デザイン データベース
デザイン データベースは bbs と呼ばれ、message と呼ばれるデータ テーブルがあり、タイトル、最終日付、ユーザー、メッセージタイトル、メッセージ日付、メッセージ相手、メッセージ内容
(2) 接続ページ
$ conn = @ mysql_connect ("localhost", "root", "123456") または die("データベース リンク エラー"); mysql_select_db("bbs", $conn); '"); //GBK 中国語エンコーディングを使用します;
//スペースと改行を解析可能な HTML に変換しますfunction htmtocode($content) {
$content = str_replace("n" , "
", str_replace(" ", " ", $content)); // 2 つの str_replace ネスト return $content;
// $content=str_replace("'","'",$content);
//htmlspecialchars();
(3) ページの表示
include("conn.php"); //1 ページに 2 件のレコードを表示するように設定します。
$num = mysql_num_rows($numq);
$pageval=$_GET[ページ] ;
$page=($pageval-1)*$pagesize;$page.=',';
if($num > $pagesize){if( $pageval<=1)$pageval=1; echo "合計 $num 項目".
" 次のページ"; }
$SQL ="SELECT * FROM `message` 制限 $page $pagesize ";
while($row=mysql_fetch_array($query)){
?> ;
ユーザー: |
コンテンツ: ; |
}
?>
(4)最終表示
方法 3:
<script> <br> function viewpage(p){ <br> if(window.XMLHttpRequest){ <br> var xmlReq = new XMLHttpRequest(); <br> } else if(window.ActiveXObject) { <br> var xmlReq = new ActiveXObject('Microsoft.XMLHTTP'); <br> } <br> var formData = "page="+p; <br> xmlReq.onreadystatechange = function(){ <br> if(xmlReq.readyState == 4){ <br> document.getElementByIdx_x('content2').innerHTML = xmlReq.responseText; <br> } <br> } <br> xmlReq.open("post", "hotel_list.php", true); <br> xmlReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); <br> xmlReq.send(formData); <br> false を返します。 <br> } <br> </script>
脚本 2:
header("Content-Type:text/html;charset=GB2312");
$pagesize=10;
//エコー $_POST['page'];
$result = mysql_query("選択数(DISTINCT ホテル名) FROM ".TBL_HOTELS);
$myrow = mysql_fetch_array($result);
$numrows=$myrow[0];
$pages=intval($numrows/$pagesize);
if ($numrows%$pagesize)
$pages++;
if (isset($_POST['page'])){
$page=intval($_POST['page']);
}
else{
//第一页
$page=1; に設定します。
}
$first=1;
$prev=$page-1;
$next=$page+1;
$last=$pages;
//计算记录偏移量
$offset=$pagesize*($page - 1);
//读取指定记录数
$result=mysql_query("select `hotelname` , count( * ) from ".TBL_HOTELS." GROUP BY `hotelname` order by id desc limit $offset,$pagesize" );
$num = mysql_num_rows($result);
while ($row = mysql_fetch_array($result,MYSQL_NUM)) {
$hotelname[] = $row[0];
$countpeople[] = $row[1];
}
for($a=0;$a<$num;$a++)
{
//$result=mysql_query("select count(title) from " . TBL_Comments ." where `title`="".$title[$a].""");
//$row = mysql_fetch_row($result);
echo "
n"; //評価_バー($title[$a],5); echo " | n"; n"; echo " |
n"; | n"; echo " 推荐人数:($countpeople[$a]) |n"; echo "平均分: (".$count."票) | 评论数:()n"; echo " |