当前位置: 首页 > news >正文

阿里云服务器怎么做网站R shinny网站开发

阿里云服务器怎么做网站,R shinny网站开发,wordpress情侣源码,法人查询企业名称转自http://www.knowsky.com/3187.html 1、前言 分页显示是一种非常常见的浏览和显示大量数据 的方法#xff0c;属于web编程中最常处理的事件之一。对于web编程的老手来说#xff0c;编写这种代码实在是和呼吸一样自然#xff0c;但是对于初学者来说#xff0c;常常对这个…转自http://www.knowsky.com/3187.html 1、前言 分页显示是一种非常常见的浏览和显示大量数据 的方法属于web编程中最常处理的事件之一。对于web编程的老手来说编写这种代码实在是和呼吸一样自然但是对于初学者来说常常对这个问题摸不着 头绪因此特地撰写此文对这个问题进行详细的讲解力求让看完这篇文章的朋友在看完以后对于分页显示的原理和实现方法有所了解。本文适合初学者阅读所有 示例代码均使用php编写。 2、原理 所谓分页显示也就是将数据库中的结果集人为的分成一段一段的来显示这里需要两个初始的参数 每页多少条记录$PageSize当前是第几页$CurrentPageID 现在只要再给我一个结果集我就可以显示某段特定的结果出来。至于其他的参数比如上一页$PReviousPageID、下一页$NextPageID、总页数$numPages等等都可以根据前边这几个东西得到。以MySQL数据库为例如果要从表内截取某段内容sql语句可以用select * from table limit offset, rows。看看下面一组sql语句尝试一下发现其中的规率。 前10条记录select * from table limit 0,10第11至20条记录select * from table limit 10,10第21至30条记录select * from table limit 20,10…… 这一组sql语句其实就是当$PageSize10的时候取表内每一页数据的sql语句我们可以总结出这样一个模板 select * from table limit ($CurrentPageID - 1) * $PageSize, $PageSize 拿这个模板代入对应的值和上边那一组sql语句对照一下看看是不是那么回事。搞定了最重要的如何获取数据的问题以后剩下的就仅仅是传递参数构造合适的sql语句然后使用php从数据库内获取数据并显示了。以下我将用具体代码加以说明。 3、简单代码请详细阅读以下代码自己调试运行一次最好把它修改一次加上自己的功能比如搜索等等。 ?php// 建立数据库连接$link mysql_connect(localhost, mysql_user, mysql_passWord)       or die(Could not connect: . mysql_error()); // 获取当前页数if( isset($_GET[page]) ){   $page intval( $_GET[page] );}else{   $page 1;} // 每页数量$PageSize 10; // 获取总数据量$sql select count(*) as amount from table;$result mysql_query($sql);$row mysql_fetch_row($result);$amount $row[amount]; // 记算总共有多少页if( $amount ){   if( $amount $page_size ){ $page_count 1; }               //如果总数据量小于$PageSize那么只有一页   if( $amount % $page_size ){                                  //取总数据量除以每页数的余数       $page_count (int)($amount / $page_size) 1;           //如果有余数则页数等于总数据量除以每页数的结果取整再加一   }else{       $page_count $amount / $page_size;                      //如果没有余数则页数等于总数据量除以每页数的结果   }}else{   $page_count 0;} // 翻页链接$page_string ;if( $page 1 ){   $page_string . 第一页|上一页|;}else{   $page_string . a href?page1第一页/a|a href?page.($page-1).上一页/a|;} if( ($page $page_count) || ($page_count 0) ){   $page_string . 下一页|尾页;}else{   $page_string . a href?page.($page1).下一页/a|a href?page.$page_count.尾页/a;}// 获取数据以二维数组格式返回结果if( $amount ){   $sql select * from table order by id desc limit . ($page-1)*$page_size ., $page_size;   $result mysql_query($sql);      while ( $row mysql_fetch_row($result) ){       $rowset[] $row;   }}else{   $rowset array();}// 没有包含显示结果的代码那不在讨论范围只要用foreach就可以很简单的用得到的二维数组来显示结果? 4、OO风格代码以下代码中的数据库连接是使用的pear db类进行处理 ?php// FileName: Pager.class.php// 分页类这个类仅仅用于处理数据结构不负责处理显示的工作Class Pager{   var $PageSize;             //每页的数量   var $CurrentPageID;        //当前的页数   var $NextPageID;           //下一页   var $PreviousPageID;       //上一页   var $numPages;             //总页数   var $numItems;             //总记录数   var $isFirstPage;          //是否第一页   var $isLastPage;           //是否最后一页   var $sql;                  //sql查询语句     function Pager($option)   {       global $db;       $this-_setOptions($option);       // 总条数       if ( !isset($this-numItems) )       {           $res $db-query($this-sql);           $this-numItems $res-numRows();       }       // 总页数       if ( $this-numItems 0 )       {           if ( $this-numItems $this-PageSize ){ $this-numPages 1; }           if ( $this-numItems % $this-PageSize )           {               $this-numPages (int)($this-numItems / $this-PageSize) 1;           }           else           {               $this-numPages $this-numItems / $this-PageSize;           }       }       else       {           $this-numPages 0;       }              switch ( $this-CurrentPageID )       {           case $this-numPages 1:               $this-isFirstPage true;               $this-isLastPage true;               break;           case 1:               $this-isFirstPage true;               $this-isLastPage false;               break;           case $this-numPages:               $this-isFirstPage false;               $this-isLastPage true;               break;           default:               $this-isFirstPage false;               $this-isLastPage false;       }              if ( $this-numPages 1 )       {           if ( !$this-isLastPage ) { $this-NextPageID $this-CurrentPageID 1; }           if ( !$this-isFirstPage ) { $this-PreviousPageID $this-CurrentPageID - 1; }       }              return true;   }      /***    *    * 返回结果集的数据库连接    * 在结果集比较大的时候可以直接使用这个方法获得数据库连接然后在类之外遍历这样开销较小    * 如果结果集不是很大可以直接使用getPageData的方式获取二维数组格式的结果    * getPageData方法也是调用本方法来获取结果的    *    ***/      function getDataLink()   {       if ( $this-numItems )       {           global $db;                      $PageID $this-CurrentPageID;                      $from ($PageID - 1)*$this-PageSize;           $count $this-PageSize;           $link $db-limitQuery($this-sql, $from, $count);   //使用Pear DB::limitQuery方法保证数据库兼容性                      return $link;       }       else       {           return false;       }   }      /***    *    * 以二维数组的格式返回结果集    *    ***/      function getPageData()   {       if ( $this-numItems )       {           if ( $res $this-getDataLink() )           {                      if ( $res-numRows() )               {                   while ( $row $res-fetchRow() )                   {                       $result[] $row;                   }               }               else               {                   $result array();               }                              return $result;           }           else           {               return false;           }       }       else       {           return false;       }   }      function _setOptions($option)   {       $allow_options array(                   PageSize,                   CurrentPageID,                   sql,                   numItems       );              foreach ( $option as $key $value )       {           if ( in_array($key, $allow_options) ($value ! null) )           {               $this-$key $value;           }       }              return true;   }}??php// FileName: test_pager.php// 这是一段简单的示例代码前边省略了使用pear db类建立数据库连接的代码 require Pager.class.php; if ( isset($_GET[page]) ){   $page (int)$_GET[page];}else{   $page 1;} $sql select * from table order by id; $pager_option array(       sql $sql,       PageSize 10,       CurrentPageID $page); if ( isset($_GET[numItems]) ){   $pager_option[numItems] (int)$_GET[numItems];} $pager new Pager($pager_option); $data $pager-getPageData(); if ( $pager-isFirstPage ){   $turnover 首页|上一页|;}else{   $turnover a href?page1numItems.$pager-numItems.首页/a| a href?page.$pager-PreviousPageID.numItems.$pager- numItems.上一页/a|;} if ( $pager-isLastPage ){   $turnover . 下一页|尾页;}else{   $turnover . a href?page.$pager-NextPageID.numItems.$pager- numItems.下一页/a|a href?page.$pager-numPages.numItems.$pager- numItems.尾页/a;}?  需要说明的地方有两个 这个类仅仅处理数据并不负责处理显示因为我觉得将数据的处理和结果的显示都放到一个类里边实在是有些勉强。显示的时候情况和要求多变不如自己根据类给出的结果处理更好的方法是根据这个Pager类继承一个自己的子类来显示不同的分页比如显示用户分页列表可以 ?phpClass MemberPager extends Pager{   function showMemberList()   {       global $db;              $data $this-getPageData(); // 显示结果的代码       // ......   }} /// 调用if ( isset($_GET[page]) ){   $page (int)$_GET[page];}else{   $page 1;} $sql select * from members order by id; $pager_option array(       sql $sql,       PageSize 10,       CurrentPageID $page); if ( isset($_GET[numItems]) ){   $pager_option[numItems] (int)$_GET[numItems];} $pager new MemberPager($pager_option); $pager-showMemberList();?  第二个需要说明的地方就是不同数据库的兼容性在不同的数据库里截获一段结果的写法是不一样的。mysql: select * from table limit offset, rowspgsql: select * from table limit m offset n......所以要在类里边获取结果的时候需要使用pear db类的limitQuery方法。 ok写完收功希望花时间看完这些文字的你不觉得是浪费了时间。 转载于:https://www.cnblogs.com/caroar/archive/2012/12/12/2814649.html
http://www.zqtcl.cn/news/401617/

相关文章:

  • 苏州建设工程协会网站汶上网站建设哪家便宜
  • 湖南手机版建站系统信息做360网站优化
  • 为什么学网站开发中国猎头公司排行榜
  • 怎么给网站做api做设计找参考的设计网站有那些
  • vultr服务器做网站广州做seo整站优化公司
  • 怎么做一个门户网站婚介网站怎么做
  • 惠州做网站电话柳市哪里有做网站推广
  • 成都公司的网站制作网站建设网店名字
  • 网站备案医疗保健审批号是什么基于asp.net网站开发
  • 生活做爰网站如何用织梦做网站
  • 网站拒绝被百度收录c#+开发网站开发
  • 营销网站竞品分析报告东莞网页制作网站
  • 东莞手机手机端网站建设云企网站
  • 网站中弹出广告怎么做网站建设实践报告
  • 站长工具seo综合查询隐私查询导航网站诚信备案
  • 亳州做网站哪家好网站开发的现实意义
  • 创意视觉网站济南网站建设招标
  • 厦门市建设局报表网站南通网站建设计划书
  • 深圳网站建设_模板网站seo
  • 云虚拟主机做网站简单的电商网站开发
  • 注销网站和取消接入深圳建设工程信息价
  • 上海专业网站建设公司站霸网络中国住房和城乡建设部
  • 邯郸做移动网站找谁广西茶叶学会 网站建设
  • 湛江建设网站美乐乐网站首页如何修改
  • 小刘网站建设网络推广和优化是什么意思
  • 特卖网站设计seo优化关键词挖掘
  • 绍兴市交通建设有限公司网站陕西建设分行网站
  • 如何套用别人网站做页面自己创建app
  • 建国内外网站有什么区别永久免费视频会议服务器
  • 个人网站备案成功后怎么做网站开发要学哪些知识