php分页函数应用及实现原理详解

第13课老师提供的分页函数,我进行了适当的修改,去掉了一些我不太好理解的地方。
        只要你好好研究老师的函数,想必很容易就可以判断出我修改的地方。
        如果你觉得我修改有什么不当的地方欢迎指证,交流可以促使你我进步!
    -变量
       1.局部变量
       2.全局变量(global,$GLOBALS)

       a.在函数外定义的局部变量,只可以在主程序使用,不可在函数内或其他文件使用
       b.在函数内定义的局部变量,只可在本函数内使用
       c.在函数外定义的局部变量,想要在函数内使用,必须在函数内将变量声明为global
          
       d.在函数内定义的局部变量,想要在函数外使用,必须在函数内将变量声明为global
          
           注意:
          1.必须先将变量声明为global,然后才赋值
             错误: global $color="red";
             正确: global $color;$color="red";
           2.必须先声明,再使用
             错误:echo $color;global $color;
             正确:global $color;echo $color;
        f.函数的参数为局部变量,如果想要在外部使用,不能使用global这种方式(因为不符合先声明,再使用的原则)
          则使用超全局变量 $GLOBALS(大写,小写有不确定性)
          

图片:图c.JPG

 

图片:图d.JPG

 

 代码如下 复制代码

<?php
    //$totle为总条数,$displaypg为每页显示的条数
 function PAGEFT($totle, $displaypg = 20) {
  global $firstcount, $pagenav;
  $GLOBALS["displaypg"] = $displaypg;
  //取得当前页数
  if($_GET['page'])
     $page=$_GET['page'];
  else $page = 1;

  //取得当前页的地址
  $url_arr=parse_url($_SERVER["REQUEST_URI"]);
  $url=$url_arr['path'];

  $lastpg = ceil($totle / $displaypg); //最后页
  $page = min($lastpg, $page);        //当前页
  $prepg = $page -1;                 //上一页
  $nextpg = ($page == $lastpg ? 0 : $page +1); //下一页
  $firstcount = ($page -1) * $displaypg;      //开始位置

  //开始分页导航条代码:
  $start=$totle ? ($firstcount +1) : 0;
  $end=min($firstcount + $displaypg, $totle);
  if($start!=$end)
   $pagenav = "显示第 <B>" . $start . "</B>-<B>".$end. "</B> 条记录,共 $totle 条记录";
  else
   $pagenav = "显示第 <B>".$end."</B> 条记录,共 $totle 条记录";

  //如果只有一页则跳出函数:
  if ($lastpg <= 1)
   return TRUE;
  $pagenav .= " <a href='$url'>首页</a> ";
  if ($prepg)
   $pagenav .= " <a href='?page=$prepg'>前页</a> ";
  else
   $pagenav .= " 前页 ";
  if ($nextpg)
   $pagenav .= " <a href='?page=$nextpg'>后页</a> ";
  else
   $pagenav .= " 后页 ";
  $pagenav .= " <a href='?page=$lastpg'>尾页</a> ";

  //下拉跳转列表,循环列出所有页码:
  $pagenav .= " 到第 <select name='topage' size='1' onchange='window.location="$url?page="+this.value'>n";
  for ($i = 1; $i <= $lastpg; $i++) {
   if ($i == $page)
    $pagenav .= "<option value='$i' selected>$i</option>n";
   else
    $pagenav .= "<option value='$i'>$i</option>n";
  }
  $pagenav .= "</select> 页,共 $lastpg 页";
 }
/////////////////////////////////////往下是操作分页函数的部分////////////////////////////////////////////////
include_once('conn.php');
$result=mysql_query("SELECT * FROM `news`");
$total=mysql_num_rows($result);
PAGEFT($total,3);    //调用分页函数

$result=mysql_query("SELECT * FROM `news` limit $firstcount,$displaypg ");
while($row=mysql_fetch_array($result)){
echo "<hr><b>".$row['title']." | ".$row['content'];
}
echo "<br>".$pagenav;

?>

时间: 2024-10-30 03:54:09

php分页函数应用及实现原理详解的相关文章

jQuery中extend函数的实现原理详解_jquery

extend()是jQuery中一个重要的函数,作用是实现对对象的扩展, 它经常用于jQuery插件的开发,jQuery内部也使用它来扩展属性方法,如上篇文章中讲到的noConflict方法,就是用extend方法来扩展的. 在jQuery的API手册中,我们看到,extend实际上是挂载在jQuery和jQuery.fn上的两个不同方法,尽管在jQuery内部jQuery.extend()和jQuery.fn.extend()是用相同的代码实现的,但是它们的功能却不太一样.来看一下官方API对

jQuery中getJSON跨域原理详解

jQuery中getJSON跨域原理详解  前几天我再开发一个叫 河蟹工具条 的时候,其中有个功能就是获取本页面的短网址. 这个想法是好的,可是在我付诸于行动的时候,发现这个需要跨域. 起初我的想法就是,跨域的最简单的方法就是增加一个script标签,因为script标签是允许跨域的. 但是问题又来了,对方的API返回的是个json对象,用script标签只能执行,却不能获取到里面的东西,也就是说返回的东西是不可控的. 随后我就想到了jQuery中的getJSON的方法,学习了一下,没想到里面的

AngularJS入门教程之数据绑定原理详解_AngularJS

本文实例讲述了AngularJS数据绑定原理.分享给大家供大家参考,具体如下: 注 这篇文章主要是写给新手的,是给那些刚刚开始接触Angular,并且想了解数据帮定是如何工作的人.如果你已经对Angular比较了解了,那强烈建议你直接去阅读源代码. Angular用户都想知道数据绑定是怎么实现的.你可能会看到各种各样的词汇:$watch,$apply,$digest,dirty-checking...它们是什么?它们是如何工作的呢?这里我想回答这些问题,其实它们在官方的文档里都已经回答了,但是我

java RMI原理详解

[本文转载自java RMI原理详解] 定义 RMI(Remote Method Invocation)为远程方法调用,是允许运行在一个Java虚拟机的对象调用运行在另一个Java虚拟机上的对象的方法. 这两个虚拟机可以是运行在相同计算机上的不同进程中,也可以是运行在网络上的不同计算机中. Java RMI:Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里,一种用于实现远程过程调用的应用程序编程接口.它使客户机上运行的程序

Win32应用程序(SDK)设计原理详解_C 语言

一般来说所谓的Win32应用程序开发,就是在C语言的层面上,直接使用Win32 API(Application Programming Interface:系统开放出来,给程序员使用的接口.)来开发Windows应用程序或者系统程序.虽然现在直接用Win32 API开发应用程序的人已经不多了,但是深入理解Windows系统程序设计原理,仍然是成为Windows开发高手的必经之路. 所谓的Win32,其实是一个API规范,与UNIX系统编程接口标准POSIX是相对应的.下面是进行直接的WIN32

MySQL分组查询Group By实现原理详解_Mysql

由于GROUP BY 实际上也同样会进行排序操作,而且与ORDER BY 相比,GROUP BY 主要只是多了排序之后的分组操作.当然,如果在分组的时候还使用了其他的一些聚合函数,那么还需要一些聚合函数的计算.所以,在GROUP BY 的实现过程中,与 ORDER BY 一样也可以利用到索引. 在MySQL 中,GROUP BY 的实现同样有多种(三种)方式,其中有两种方式会利用现有的索引信息来完成 GROUP BY,另外一种为完全无法使用索引的场景下使用.下面我们分别针对这三种实现方式做一个分

AngularJS 工作原理详解_AngularJS

 个人觉得,要很好的理解AngularJS的运行机制,才能尽可能避免掉到坑里面去.在这篇文章中,我将根据网上的资料和自己的理解对AngularJS的在启动后,每一步都做了些什么,做一个比较清楚详细的解析.      首先上一小段代码(index.html),结合代码我们来看看,angular一步一步都做了些什么. <!doctype html> <html ng-app> <head> <script src="angular.js">&

MVC系列(7) WebActivator的实现原理详解

上篇文章,我们分析如何动态注册HttpModule的实现,本篇我们来分析一下通过上篇代码原理实现的WebActivator类库,WebActivator提供了3种功能,允许我们分别在HttpApplication初始化之前,之后以及ShutDown的时候分别执行指定的代码,示例如下: [assembly: WebActivator.PreApplicationStartMethod(typeof(A.InitClass1), "PreStart")] [assembly: WebAct

KVC/KVO原理详解及编程指南(转)

作者:wangzz 原文地址:KVC/KVO原理详解及编程指南 本文只转载KVC部分讲解,KVO部分可到原博客查看. 本人在阅读过程中也进行了一些勘误修改. 前言 1.本文基本不讲KVC/KVO的用法,只结合网上的资料说说对这种技术的理解. 2.由于KVO内容较少,而且是以KVC为基础实现的,本文将着重介绍KVC部分. 一.简介 KVC/KVO是观察者模式的一种实现,在Cocoa中是以被万物之源NSObject类实现的NSKeyValueCoding/NSKeyValueObserving非正式