Rumah php教程 PHP源码 超好用的PHP分页类(可自定义样式)

超好用的PHP分页类(可自定义样式)

May 23, 2016 pm 04:39 PM

       

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

getPages()); //生成一个页码数组(键为页码,值为链接)

 * echo $p->showPages(1);    //生成一个页码样式(可添加自定义样式)

 *

 * @author: Dzer* @version: 2014-12-25 09:09:42

 * @Last Modified time: 2014-12-28 17:37:13

 */

 

/*

思路:

给我一个 总页数,需要显示的页数,当前页,每页显示的条数,连接

写一个方法 生成一个一维数组,键为页码 值为连接

写一个方法 返回一个生成好样式的页码(并且可以根据自己需要添加样式)

默认样式 共45条记录,每页显示10条,当前第1/4页 [首页] [上页] [1] [2] [3] .. [下页] [尾页]

*/

class Page{

    protected $count;       //总条数

    protected $showPages;   //需要显示的页数

    protected $countPages//总页数

    protected $currPage;    //当前页

    protected $subPages;    //每页显示条数

    protected $href;        //连接

    protected $page_arr=array();    //保存生成的页码 键页码 值为连接

 

    /**

     * __construct  构造函数(获取分页所需参数)

     * @param int $count     总条数

     * @param int $showPages 显示页数

     * @param int $currPage  当前页数

     * @param int $subPages  每页显示数量

     * @param string $href   连接(不设置则获取当前URL)

     */

    public function __construct($count,$showPages,$currPage,$subPages,$href=''){

        $this->count=$count;

        $this->showPages=$showPages;

        $this->currPage=$currPage;

        $this->subPages=$subPages;

         

        //如果链接没有设置则获取当前连接

        if(empty($href)){

            $this->href=htmlentities($_SERVER['PHP_SELF']);

        }else{

            $this->href=$href;

        }

        $this->construct_Pages();

    }

 

    /**

     * getPages 返回页码数组

     * @return array 一维数组 键为页码 值为链接

     */

    public function getPages(){

        return $this->page_arr;

    }

 

    /**

     * showPages 返回生成好的页码

     * @param  int $style 样式

     * @return string     生成好的页码

     */

    public function showPages($style=1){

        $func='pageStyle'.$style;

        return $this->$func();

    }

 

    /**

     * pageStyle1 分页样式(可参照这个添加自定义样式 例如pageStyle2())

     * 样式 共45条记录,每页显示10条,当前第1/4页 [首页] [上页] [1] [2] [3] .. [下页] [尾页]

     * @return string

     */

    protected function pageStyle1(){

        /* 构造普通模式的分页

        共4523条记录,每页显示10条,当前第1/453页 [首页] [上页] [1] [2] [3] .. [下页] [尾页]

        */

        $pageStr='共'.$this->count.'条记录,每页显示'.$this->subPages.'条';

        $pageStr.='当前第'.$this->currPage.'/'.$this->countPages.'页 ';

 

        $_GET['page'] = 1;

        $pageStr.='[href.'?'.http_build_query($_GET).'" _href="'.$this->href.'?'.http_build_query($_GET).'">首页] ';

        //如果当前页不是第一页就显示上页

        if($this->currPage>1){

            $_GET['page'] = $this->currPage-1;

            $pageStr.='[href.'?'.http_build_query($_GET).'" _href="'.$this->href.'?'.http_build_query($_GET).'">上页] ';

        }

 

        foreach ($this->page_arr as $k => $v) {

            $_GET['page'] = $k;

            $pageStr.='['.$k.'] ';

        }

 

        //如果当前页小于总页数就显示下一页

        if($this->currPagecountPages){

            $_GET['page'] = $this->currPage+1;

            $pageStr.='[href.'?'.http_build_query($_GET).'" _href="'.$this->href.'?'.http_build_query($_GET).'">下页] ';

        }

 

        $_GET['page'] = $this->countPages;

        $pageStr.='[href.'?'.http_build_query($_GET).'" _href="'.$this->href.'?'.http_build_query($_GET).'">尾页] ';

 

        return $pageStr;

    }

 

    /**

     * construct_Pages 生成页码数组

     * 键为页码,值为链接

     * $this->page_arr=Array(

     *                  [1] => index.php?page=1

     *                  [2] => index.php?page=2

     *                  [3] => index.php?page=3

     *                  ......)

     */

    protected function construct_Pages(){

        //计算总页数

        $this->countPages=ceil($this->count/$this->subPages);

        //根据当前页计算前后页数

        $leftPage_num=floor($this->showPages/2);

        $rightPage_num=$this->showPages-$leftPage_num;

 

        //左边显示数为当前页减左边该显示的数 例如总显示7页 当前页是5  左边最小为5-3  右边为5+3

        $left=$this->currPage-$leftPage_num;

        $left=max($left,1); //左边最小不能小于1

        $right=$left+$this->showPages-1; //左边加显示页数减1就是右边显示数

        $right=min($right,$this->countPages);  //右边最大不能大于总页数

        $left=max($right-$this->showPages+1,1); //确定右边再计算左边,必须二次计算

         

        for ($i=$left; $i page_arr[$i]=$this->href.'?'.http_build_query($_GET);

        }

    }

}

Salin selepas log masuk


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

<?php

/**

 * 分页类demo

 * Be the best of whatever you are!

 *

 * @author: Dzer* @version: 2014-12-28 17:38:23

 * @Last Modified time: 2014-12-28 18:08:28

 */

header("content-type:text/html;charset=utf8");

include(&#39;./Page.class.php&#39;);    //引入类

 

//$p=new Page(总页数,显示页数,当前页码,每页显示条数,[链接]);

//连接不设置则为当前链接

$page=isset($_GET[&#39;page&#39;]) ? $_GET[&#39;page&#39;] : 1;

$p=new Page(100,7,$page,8);

 

//生成一个页码数组(键为页码,值为链接)

echo "";

print_r($p->getPages());

 

//生成一个页码样式(可添加自定义样式)

//样式 共45条记录,每页显示10条,当前第1/4页 [首页] [上页] [1] [2] [3] .. [下页] [尾页]

echo $p->showPages(1);  

                                                                    

Salin selepas log masuk

       

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)