当前位置:Gxlcms > PHP教程 > PHP分页类(模仿google)-面试题目解答_PHP教程

PHP分页类(模仿google)-面试题目解答_PHP教程

时间:2021-07-01 10:21:17 帮助过:23人阅读

笔试回答的不太好,特别是JS部分,也是许久都没复习的原因。
上机题目是要写一个仿google分页的类,当要取类似9/2的最大整数,却怎么也想不起函数ceil的名字,晕了半天。
最后测试程序没错误,但是就是不能正常显示,后来(回家后)一查才知道是语句:for($i=0;$i++;$i<9)写错了,于是下决心重新写一遍,于是就有了下面的代码了:
代码如下:
  1. <br><!--?php <BR-->/* <br>显示样式如下: <br>[1] 2 3 4 5 6 7 8 9 10 ...100 下页 尾页 <br>首页 上页 1..12 13 14 15 [16] 17 18 19 20 ...100 下页 尾页 <br>首页 上页 1..92 93 94 95 96 97 98 [99] 100 <br><br>使用方法: <br>$currentPage = $_GET['page']?$_GET['page']:1; <br>$pagediv = new pagediv(500, 10, 11, $currentPage, 'test.php?page='); <br>$pagediv->show(); <br><br>*/ <br>class pagediv <br>{ <br>public $part1; <br>public $part2; <br>public $part3; <br>public $part4; <br>public $part5; <br><br>/* <br>对下面的分页显示进行分割: <br>首页 上页 1..12 13 14 15 [16] 17 18 19 20 ...100 下页 尾页 <br>$part1 : 首页 上页 <br>$part2 : 1.. <br>$part3 : 12 13 14 15 [16] 17 18 19 20 <br>$part4 : ...100 <br>$part5 : 下页 尾页 <br>*/ <br><br>public $allPage; //总页数 <br>public $allRocords; //总记录数 <br>public $perPage; //每页记录数 <br>public $showPagesNo; //显示分页栏的总页码数 显示样式里共有11个 <br>public $currentPage; //当前页 <br>public $urlModel; //Url链接样式 <br><br>public $startHidden; //出现 1... 时的页数 开始隐藏中间页 <br>public $endHidden; //出现 ...100 时的页数 结束隐藏中间页 <br><br>public function __construct($allRocords, $perPage, $showPagesNo, $currentPage, $urlModel){ <br>$this->allRocords = $allRocords; <br>$this->perPage = $perPage; <br>$this->showPagesNo = $showPagesNo; <br>$this->currentPage = $currentPage; <br>$this->urlModel = $urlModel; <br>$this->allPage = $this->getAllPage(); <br><br>$this->startHidden = $this->getInt(($this->showPagesNo)/2); //6 <br>$this->endHidden = $this->allPage - $this->startHidden; //94 <br>} <br><br>public function getUrl($_index = ''){ <br>$_current = $_index; <br>if($_index == 'pre') $_current = $this->currentPage -1; <br>if($_index == 'next') $_current = $this->currentPage+1; <br>if($_index == '') $_current = $this->allPage; <br>return $this->urlModel.$_current; <br>} <br><br>public function getAllPage(){ <br>return $this->getInt($this->allRocords/$this->perPage); <br>} <br><br>public function getInt($_float){ <br>$_int = $_float; <br>if( $_index = strpos($_float,'.') == true ){ <br>$_int = substr($_float,0,$_index); <br>$_int++; <br>} <br>//没有想起ceil时的候补方案 <br>return $_int; <br>} <br><br>public function getPart1(){ <br>$content = 'getUrl(1).'">首页 getUrl('pre').'">上页 '; <br>if($this->currentPage <= $this->startHidden){ <br>$content = ''; <br>} <br>return $content; <br>} <br><br>public function getPart2(){ <br>$content = 'getUrl(1).'">1 '; <br>$add = ''; <br>if($this->currentPage > $this->startHidden){ <br>$add = '...'; <br>} <br>if($this->currentPage == 1){ <br>$content = '[1] '; <br>$add = ''; <br>} <br>$part2 = $content.$add; <br>return $part2; <br>} <br><br>public function getPart3(){ <br>$content = ''; <br>if($this->currentPage <= $this->startHidden){ <br>//[1] 2 3 4 5 6 7 8 9 10 ...100 下页 尾页 <br>$long = $this->showPagesNo - 2; <br>for($i=0;$i<$long;$i++){ <br>$j = $i+2; <br>if($j == $this->currentPage){ <br>$content .= '['.$this->currentPage.'] '; <br>}else{ <br>$content .= 'getUrl($j).'">'.$j.' '; <br>} <br><br>} <br><br>}elseif( $this->currentPage >= $this->endHidden ){ <br>//首页 上页 1..92 93 94 95 96 97 98 [99] 100 <br>$long = $this->showPagesNo - 2; <br>$_start = $this->allPage - $long; <br>for($i=0;$i<$long;$i++){ <br>$j = $_start + $i; <br>if($j == $this->currentPage){ <br>$content .= '['.$this->currentPage.'] '; <br>}else{ <br>$content .= 'getUrl($j).'">'.$j.' '; <br>} <br>} <br>}else{ <br>//首页 上页 1..12 13 14 15 [16] 17 18 19 20 ...100 下页 尾页 <br>$long = $this->showPagesNo - 2; <br>$offset = $this->getInt($long/2) - 1; <br>$_start = $this->currentPage - $offset; <br>for($i=0;$i<$long;$i++){ <br>$j = $_start + $i; <br>if($j == $this->currentPage){ <br>$content .= '['.$this->currentPage.'] '; <br>}else{ <br>$content .= 'getUrl($j).'">'.$j.' '; <br>} <br>} <br>} <br>$part3 = $content; <br>return $part3; <br>} <br><br>public function getPart4(){ <br>$content = 'getUrl().'">'.$this->allPage.' '; <br>$add = ''; <br>if($this->currentPage < $this->endHidden){ <br>$add = '...'; <br>} <br>if($this->currentPage == $this->allPage){ <br>$content = '['.$this->allPage.']'; <br>$add = ''; <br>} <br>$part4 = $add.$content; <br>return $part4; <br><br>} <br><br>public function getPart5(){ <br>$content = 'getUrl('next').'">下页 getUrl().'">尾页'; <br>if($this->currentPage >= $this->endHidden){ <br>$content = ''; <br>} <br>return $content; <br>} <br><br>public function show(){ <br>//判断非法 <br>if(!is_numeric($this->currentPage) || $this->currentPage < 0 || $this->currentPage > $this->allPage){ <br>print 'error:pageNo is flase'; <br>return; <br>} <br>//总页数没有达到显示分页栏的总页码数,则全部显示 <br>if($this->allPage < $this->showPagesNo){ <br>$long = $this->allPage; <br>for($i=0;$i<$long;$i++){ <br>$j = $i+1; <br>if($j == $this->currentPage){ <br>$content .= '['.$this->currentPage.'] '; <br>}else{ <br>$content .= 'getUrl($j).'">'.$j.' '; <br>} <br><br>} <br>print $content; <br>return; <br>} <br>$this->part1 = $this->getPart1(); <br>$this->part2 = $this->getPart2(); <br>$this->part3 = $this->getPart3(); <br>$this->part4 = $this->getPart4(); <br>$this->part5 = $this->getPart5(); <br><br>print $this->part1.$this->part2.$this->part3.$this->part4.$this->part5; <br>} <br>} <br>?> <br>
  2. <p></p>
  3. <p align="left"><span id="url" itemprop="url">http://www.bkjia.com/PHPjc/320481.html</span><span id="indexUrl" itemprop="indexUrl">www.bkjia.com</span><span id="isOriginal" itemprop="isOriginal">true</span><span id="isBasedOnUrl" itemprop="isBasedOnUrl">http://www.bkjia.com/PHPjc/320481.html</span><span id="genre" itemprop="genre">TechArticle</span><span id="description" itemprop="description">笔试回答的不太好,特别是JS部分,也是许久都没复习的原因。 上机题目是要写一个仿google分页的类,当要取类似9/2的最大整数,却怎么也...</span></p>

人气教程排行