搜尋
首頁後端開發php教程php中分页程序之基于留言板详解_PHP教程

php中分页程序之基于留言板详解_PHP教程

Jul 13, 2016 pm 04:59 PM
php分頁使用原理基於我們文章留言板程式詳解

文章是重点是讲php中的分页原理,同时我们是利用一个实现来讲解如何在php中实现分页,这个就是基于自己写的留方板程序了,有需要的朋友可以参考一下,很适合于初学者哦。

分页的关键问题其实在于Mysql的一个关键字limite这个关键字后边跟的两个数字,第一个是需要记录的开始行数,第二个数字是从这个开始行数后取得几行记录——这一点大家不要误以为是从第几行开始到第几行结束,相差很远的。

看看我们index.php的第19行:

 代码如下 复制代码

$recordSql = $sql. ” LIMIT “.$page*$pagesize.”,”.$pagesize;

其中变量$page的判断在程序的第8行和第9行得到的:

 代码如下 复制代码

if(isset($_GET['page'])&&$_GET['page']!=”) $page=$_GET['page'];
else $page=0;

当然大家也看到了$_GET['page']变量这个下文会说到。

变量$pagesize我们在第7行自己定义的,也就是每页显示多少条记录,我们定义的是10条。当变量$page=0的时候我们语句最终会是这样的:

 代码如下 复制代码
$recordSql = "SELECT a . * , b.name, b.email, b.qq, c.revert_time, c.revert
  FROM post a
  LEFT JOIN revert c ON ( a.id = c.post_id ) , guest b
  WHERE a.guest_id = b.id
  ORDER BY a.id DESC
  " LIMIT 0,10";

就是从0条记录开始取得10个记录结果——这个是包括第0条记录的;
当$page=1的时候呢?可想而知了——这个时候$page*$pagesize=10,当然是从……不说了,再说就罗嗦了。

还有需要说的是,为什么我们要在取得总行数之后才加上这个limit呢,很简单嘛,如果我们在取得结果记录数的时候就加上这个limit,我们总行数永远不会大于10,因为加上之后他最多返回的记录数就是10啊兄弟。——这个显然不符合实际情况。所以我们在执行了:

 代码如下 复制代码
mysql_num_rows(mysql_query($sql));

取得总记录数,之后才加上limit关键字的。

好了我们已经取得了总记录数,设置了每页显示的记录数10,现在我们需要的就只有总页数了,这个小学的问题我就不说了吧?当然是总记录数除以每页显示的数就是总页数了——当然也有除不尽的时候,例如总记录数11每页显示10个,我们需要分几页呢?当然是两页呢,怎么才能让11/10=2呢?——显然是错误的,但是实际生活就这样并不是完美的数学。使用ceil函数啊,这个上一章也说过了,不说了。

看看我们现在有什么了啊:

 代码如下 复制代码
总记录数,$numRecord = mysql_num_rows(mysql_query($sql));
总页数,$totalpage = ceil($numRecord/$pagesize);

我们什么都不缺了,就差如何显示“上一页下一页”了,很简单,两个判断就搞定了,看index.php的159-163行:

第160行:

 代码如下 复制代码
if($page>0) echo "上一页|" ;

如果变量$page>0的话,也就是当前的页码大于0说明有上一页,那么就显示“上一页”的链接,这个链接里面的$page需要减一,例如当前页是2,那么上一页当然是1了是不是,当我们点击上一页的时候,随着这个链接将会把page=1传递过去,这种依靠链接传递变量的方式就是get方法。 这就回到了程序8行9行进行处理了。

在161行,我们做的判断是,如果当前页数小于总记录数-1——因为我们的页码是从0开始的,所以总记录数要减一进行判断才符合实际。如果这个判断成立,说明还有下一页,下一页的时候$page当然要加一了。

好了整个分页就是这样了,只要记住,如何取得总记录数,如何为sql语句加上limit关键字,如何判断显示上下页,一切都ok了

完整的代码

 代码如下 复制代码

$pagesize = 10;//每一页显示多少留言记录
if(isset($_GET['page'])&&$_GET['page']!='') $page=$_GET['page'];
else $page=0;

$sql = "SELECT a . * , b.name, b.email, b.qq, c.revert_time, c.revert
  FROM post a
  LEFT JOIN revert c ON ( a.id = c.post_id ) , guest b
  WHERE a.guest_id = b.id
  ORDER BY a.id DESC";
$numRecord = mysql_num_rows(mysql_query($sql));
$totalpage = ceil($numRecord/$pagesize);

$recordSql = $sql. " LIMIT ".$page*$pagesize.",".$pagesize;
$result = mysql_query($recordSql);


while($rs=mysql_fetch_object($result)){
?>
 
   
 
    if(isset($_SESSION['login'])&&$_SESSION['login']){
  ?>
   
   
 
    }
  ?>
 
   
 
 
}
?>
留言人:name?> |Email:email?>|QQ:qq?>|留言时间:post_time+8*3600)?>
回复 | 删除
留言内容:post))?>

   
    回复内容:revert))?>[revert_time!="") echo date("Y-m-d H:i:s",$rs->revert_time+8*3600)?> ]
   

   
   


 
   
 

if($page>0) echo "上一页|" ;
if($page下一页" ;
?>

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/631302.htmlTechArticle文章是重点是讲php中的分页原理,同时我们是利用一个实现来讲解如何在php中实现分页,这个就是基于自己写的留方板程序了,有需要的朋...
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
PHP依賴注入容器:快速啟動PHP依賴注入容器:快速啟動May 13, 2025 am 12:11 AM

aphpdepentioncontiveContainerIsatoolThatManagesClassDeptions,增強codemodocultion,可驗證性和Maintainability.itactsasaceCentralHubForeatingingIndections,因此reducingTightCightTightCoupOulplingIndeSingantInting。

PHP中的依賴注入與服務定位器PHP中的依賴注入與服務定位器May 13, 2025 am 12:10 AM

選擇DependencyInjection(DI)用於大型應用,ServiceLocator適合小型項目或原型。 1)DI通過構造函數注入依賴,提高代碼的測試性和模塊化。 2)ServiceLocator通過中心註冊獲取服務,方便但可能導致代碼耦合度增加。

PHP性能優化策略。PHP性能優化策略。May 13, 2025 am 12:06 AM

phpapplicationscanbeoptimizedForsPeedAndeffificeby:1)啟用cacheInphp.ini,2)使用preparedStatatementSwithPdoforDatabasequesies,3)3)替換loopswitharray_filtaray_filteraray_maparray_mapfordataprocrocessing,4)conformentnginxasaseproxy,5)

PHP電子郵件驗證:確保正確發送電子郵件PHP電子郵件驗證:確保正確發送電子郵件May 13, 2025 am 12:06 AM

phpemailvalidation invoLvesthreesteps:1)格式化進行regulareXpressecthemailFormat; 2)dnsvalidationtoshethedomainhasavalidmxrecord; 3)

如何使PHP應用程序更快如何使PHP應用程序更快May 12, 2025 am 12:12 AM

tomakephpapplicationsfaster,關注台詞:1)useopcodeCachingLikeLikeLikeLikeLikePachetoStorePreciledScompiledScriptbyTecode.2)MinimimiedAtabaseSqueriSegrieSqueriSegeriSybysequeryCachingandeffeftExting.3)Leveragephp7 leveragephp7 leveragephp7 leveragephpphp7功能forbettercodeefficy.4)

PHP性能優化清單:立即提高速度PHP性能優化清單:立即提高速度May 12, 2025 am 12:07 AM

到ImprovephPapplicationspeed,關注台詞:1)啟用opcodeCachingwithapCutoredUcescriptexecutiontime.2)實現databasequerycachingingusingpdotominiminimizedatabasehits.3)usehttp/2tomultiplexrequlexrequestsandreduceconnection.4 limitesclection.4.4

PHP依賴注入:提高代碼可檢驗性PHP依賴注入:提高代碼可檢驗性May 12, 2025 am 12:03 AM

依赖注入(DI)通过显式传递依赖关系,显著提升了PHP代码的可测试性。1)DI解耦类与具体实现,使测试和维护更灵活。2)三种类型中,构造函数注入明确表达依赖,保持状态一致。3)使用DI容器管理复杂依赖,提升代码质量和开发效率。

PHP性能優化:數據庫查詢優化PHP性能優化:數據庫查詢優化May 12, 2025 am 12:02 AM

DatabasequeryoptimizationinPHPinvolvesseveralstrategiestoenhanceperformance.1)Selectonlynecessarycolumnstoreducedatatransfer.2)Useindexingtospeedupdataretrieval.3)Implementquerycachingtostoreresultsoffrequentqueries.4)Utilizepreparedstatementsforeffi

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具