php でページングを実装するには 3 つの方法があります: 1. "mysql_query" などの関数を使用して SQL クエリをページングする; 2. ajax を使用してページングを実現する; 3. "関数 viewpage(p){ ...}" スクリプトはページングを実装します。
この記事の動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター
メソッドはいくつありますかPHPでページングを実装するには?
php でページング関数を実装する 3 つの方法
コードに直接アクセスしてください。注意深く読んでいただければ幸いです。
方法 1: SQL クエリを使用してページングを実行するには、いくつかの関数を呼び出す必要があります。詳細については、スクリプトを参照してください:
1.pager.class。 php
<?php class pager { public $sql; //SQL查询语句 public $datanum; //查询所有的数据总记录数 public $page_size; //每页显示记录的条数 protected $_errstr; protected $_conn; protected $_query_id; public function query($query)///这个函数有问题,暂时可以不用 { $ret = false; if (!empty($query)) { if ($this->_conn === false || !is_resource($this->_conn)) { warningLog(__METHOD__ . ': query sql with no connection', true); return false; } $this->_query_id = @mysql_query($query, $this->_conn); if ($this->_query_id === false) { $this->_errstr = @mysql_error(); $ret = false; } else { $this->_errstr = 'SUCCESS'; $ret = $this->_query_id; } } $msg = ($ret === false) ? 'false' : strval($ret); debugLog(__METHOD__.": [$msg] returned for sql query [$query]"); 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值 public function url() { if($_SERVER['QUERY_STRING'] == ""){ return ""; }elseif(substr_count($_SERVER['QUERY_STRING'],"page_id=") == 0){ return "&".$_SERVER['QUERY_STRING']; }else{ return 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); } } //数据库查询的偏移量 public function start() { return ($this->page_id()-1)*$this->page_size; } //数据输出 public function sqlquery() { return $this->sql." limit ".$this->start().",".$this->page_size; } //获取当前文件名 private function php_self() { return $_SERVER['PHP_SELF']; } //上一页 private function pre_page() { if ($this->page_id() == 1) { //页数等于1 return "<a href=".$this->php_self()."?page_id=1".$this->url().">上一页</a> "; }elseif ($this->page_id() != 1) { //页数不等于1 return "<a href=".$this->php_self()."?page_id=".($this->page_id()-1).$this->url().">上一页</a> "; } } //显示分页 private function display_page() { $display_page = ""; if($this->page_num() <= 10){ //小于10页 for ($i=1;$i<=$this->page_num();$i++) //循环显示出页面 $display_page .= "<a href=".$this->php_self()."?page_id=".$i.$this->url().">".$i."</a> "; return $display_page; }elseif($this->page_num() > 10){ //大于10页 if($this->page_id() <= 6){ for ($i=1;$i<=10;$i++) //循环显示出页面 $display_page .= "<a href=".$this->php_self()."?page_id=".$i.$this->url().">".$i."</a> "; return $display_page; }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 .= "<a href=".$this->php_self()."?page_id=".$i.$this->url().">".$i."</a> "; 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 .= "<a href=".$this->php_self()."?page_id=".$i.$this->url().">".$i."</a> "; return $display_page; } } } //下一页 private function next_page() { if ($this->page_id() < $this->page_num()) { //页数小于总页数 return "<a href=".$this->php_self()."?page_id=".($this->page_id()+1).$this->url().">下一页</a> "; }elseif ($this->page_id() == $this->page_num()) { //页数等于总页数 return "<a href=".$this->php_self()."?page_id=".$this->page_num().$this->url().">下一页</a> "; } } // 设置分页信息 public function set_page_info() { $page_info = "共".$this->datanum."条 "; $page_info .= "<a href=".$this->php_self()."?page_id=1".$this->url().">首页</a> "; $page_info .= $this->pre_page(); $page_info .= $this->display_page(); $page_info .= $this->next_page(); $page_info .= "<a href=".$this->php_self()."?page_id=".$this->page_num().$this->url().">尾页</a> "; $page_info .= "第".$this->page_id()."/".$this->page_num()."页"; return $page_info; } } ?>
#2. スクリプト 2:
<?php //类的用法 // 读取分页类 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) or die("Can't connect ".mysql_error()); mysql_select_db($impeach_name, $impeach_con); // 这是一个sql查询语句,并得到查询结果 $sql = "select word from ufeature.spam_accuse_word_list where flag='0'"; // 分页初始化 $page = new pager($sql,20); // 20是每页显示的数量 // $res_1 = mysql_query($sql) or // die("Can't get result ".mysql_error()); $result=mysql_query($page->sqlquery()); while($info = mysql_fetch_array($result,MYSQL_ASSOC)){ // while($info = mysql_fetch_array($res_1, MYSQL_ASSOC)){ echo $info["word"]."<br/>"; } // 页码索引条 echo $page->set_page_info(); ?>
方法 2: ajax を使用する
1. まず、SQL ステートメントでの制限の使用法を理解します。
SELECT * FROM table …… limit 开始位置 , 操作条数 (其中开始位置是从0开始的)
例最初の 20 件のレコード: SELECT * FROM table ...... リミット 0, 20
11 番目から 20 件のレコードを取得します: SELECT * FROM table ...... リミット 10, 20
LIMIT n はLIMIT 0,n と同等。
例
select * from table LIMIT 5; //最初の 5 行を返します、 は select * from table LIMIT 0, 5 と同じです2 、ページングの原則
いわゆるページング表示とは、データベース内の結果セットがセグメントごとに表示されることを意味します。ページ)
最初の 10 レコード:
select * テーブル制限 0,10
から 11 番目から 20 番目のレコード:
select * テーブル制限 10,10 から レコード 21 から 30:
select * テーブル制限 20 から,10
ページング式: (現在のページ番号 - 1) 番号、ページごとの項目数
Select * from table limit ($Page- 1) * $PageSize, $PageSize
3, $ _SERVER["REQUEST_URI"] function
事前定義されたサーバー変数の一種。$_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);
結果: Array
(
[scheme] => http ;协议
[host] => hostname ;主机域名
[user] => username ;用户
[pass] => password ;密码
[path] => /path ;路径
[query] => arg=value ;取参数
[fragment] => anchor ;
)
メッセージのこのページングは 3 つの部分に分かれており、1 つはデータベース設計、1 つは接続ページ、もう 1 つは表示ページです。 (1) デザイン データベース
デザイン データベースは bbs という名前で、message というデータ テーブルがあり、タイトル、最終日付、ユーザー、コンテンツなどのフィールドが含まれており、それぞれがメッセージタイトル、メッセージ日付など メッセージ相手、メッセージ内容
(2) 接続ページ
<?php $conn = @ mysql_connect("localhost", "root", "123456") or die("数据库链接错误"); mysql_select_db("bbs", $conn); mysql_query("set names 'GBK'"); //使用GBK中文编码; //将空格,换行转换为HTML可解析 function htmtocode($content) { $content = str_replace("\n", "<br>", str_replace(" ", " ", $content)); //两个str_replace嵌套 return $content; } //$content=str_replace("'","‘",$content); //htmlspecialchars(); ?>
(3) 表示ページ
<?php include("conn.php"); $pagesize=2; //设置每页显示2个记录 $url=$_SERVER["REQUEST_URI"]; $url=parse_url($url); $url=$url[path]; $numq=mysql_query("SELECT * FROM `message`"); $num = mysql_num_rows($numq); if($_GET){ $pageval=$_GET; $page=($pageval-1)*$pagesize; $page.=','; } if($num > $pagesize){ if($pageval<=1)$pageval=1; echo "共 $num 条". " <a href=$url?page=".($pageval-1).">上一页</a> <a href=$url?page=".($pageval+1).">下一页</a>"; } $SQL="SELECT * FROM `message` limit $page $pagesize "; $query=mysql_query($SQL); while($row=mysql_fetch_array($query)){ ?> <table width=500 border="0" cellpadding="5" cellspacing="1" bgcolor="#add3ef"> <tr bgcolor="#eff3ff"> <td>标题:<?php echo $row[title]?></td> <td>时间:<?php echo $row[lastdate]?></td> </tr> <tr bgcolor="#eff3ff"> <td> 用户:<?php echo $row[user]?></td><td></td> </tr> <tr> <td>内容:<?php echo htmtocode($row[content]);?></td> </tr> <br> </table> <?php } ?>
方法 3 :
<script> function viewpage(p){ if(window.XMLHttpRequest){ var xmlReq = new XMLHttpRequest(); } else if(window.ActiveXObject) { var xmlReq = new ActiveXObject('Microsoft.XMLHTTP'); } var formData = "page="+p; xmlReq.onreadystatechange = function(){ if(xmlReq.readyState == 4){ document.getElementByIdx_x('content2').innerHTML = xmlReq.responseText; } } xmlReq.open("post", "hotel_list.php", true); xmlReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xmlReq.send(formData); return false; } </script>
スクリプト 2:
header("Content-Type:text/html;charset=GB2312"); $pagesize=10; //echo $_POST['page']; $result = mysql_query("Select count(DISTINCT hotelname) 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 "<TABLE style=\"MARGIN-BOTTOM: 20px\" cellSpacing=0 cellPadding=0 width=100% border=0>\n"; echo "<TBODY>\n"; echo "<TR>\n"; echo "<TD style=\"PADDING-TOP: 5px\" vAlign=top align=left width=80>\n"; //rating_bar($title[$a],5); echo "</TD>\n"; echo "<TD style=\"PADDING-TOP: 5px\" align=left width=100%><A title=$hotelname[$a] style=\"FONT-SIZE: 14px\" href=#>$hotelname[$a]</A>\n"; echo "</TD></TR>\n"; echo " <TR>\n"; echo "<TD></TD>\n"; echo "<TD style=\"PADDING-LEFT: 0px\">\n"; echo "<IMG src=\"images/comment.gif\" border=0> 推荐人数:($countpeople[$a]) |\n"; echo "<SPAN>平均分:<STRONG></STRONG> (".$count."票) | 评论数:()</SPAN>\n"; echo "</TD></TR></TBODY></TABLE>\n"; } echo "<TABLE style=\"MARGIN-TOP: 30px\" cellSpacing=0 cellPadding=0 width=\"100%\""; echo "border=0>"; echo "<TBODY><TR><TD colSpan=3 height=20>"; echo "<p align=center>"; echo "<P align=left><FONT color=red>第".$page."页/总".$pages."页 | 总".$numrows."条</FONT> | "; if ($page>1) echo "<a onclick=\"viewpage(".$first.")\" href='#'>首页</a> | "; if ($page>1) echo "<a onclick=\"viewpage(".$prev.")\" href='#'>上页</a> | "; if ($page<$pages) echo "<a onclick=\"viewpage(".$next.")\" href='#'>下页</a> | "; if ($page<$pages) echo "<a onclick=\"viewpage(".$last.")\" href='#'>尾页</a>"; echo "转到第 <INPUT maxLength=3 size=3 value=1 name=goto_page> 页 <INPUT hideFocus onclick=\"viewpage(document.all.goto_page.value)\" type=button value=Go name=cmd_goto>"; echo "</P></p></TD></TR></TBODY></TABLE>";推奨される学習: 「
PHP ビデオ チュートリアル 」
以上がPHPでページングを実装するにはいくつかの方法がありますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

WebStorm Mac版
便利なJavaScript開発ツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません
