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

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

To work with date and time in cakephp4, we are going to make use of the available FrozenTime class.

To work on file upload we are going to use the form helper. Here, is an example for file upload.

CakePHP is an open-source framework for PHP. It is intended to make developing, deploying and maintaining applications much easier. CakePHP is based on a MVC-like architecture that is both powerful and easy to grasp. Models, Views, and Controllers gu

Validator can be created by adding the following two lines in the controller.

Google's AI Test Kitchen, which includes a suite of AI design tools for users to play with, has now opened up to users in well over 100 countries worldwide. This move marks the first time that many around the world will be able to use Imagen 3, Googl

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

Logging in CakePHP is a very easy task. You just have to use one function. You can log errors, exceptions, user activities, action taken by users, for any background process like cronjob. Logging data in CakePHP is easy. The log() function is provide
