设为首页 收藏本站
查看: 379|回复: 0

[经验分享] 怎么使用PHP和MySQL创建个性的网站分页

[复制链接]

尚未签到

发表于 2016-10-19 09:45:15 | 显示全部楼层 |阅读模式
http://www.ilixin.net/wp-content/uploads/2013/10/pagination.jpg
 
分页起着重要的作用,在任何Web应用程序,具有足够大的数据被分成页。它不仅外观整洁,但也提高了一个网页的加载时间。所以,分页是很重要的一个改进的用户界面,并节省服务器资源。在本教程中,我会告诉你一个简单的方法来创建在PHP中,同时获取数据从MySQL分页。所以,让我们开始吧。
 
 
寻找jQuery的分页?这是在这里
 
我刚才提到下面这个分页教程经常会用到的三个重要变量。
 
1
2
3

$page; // This variable contains the current page number
$limit; // The number of posts / articles to show on each page
$total_posts; // The total number of posts available in the database



现在,看看下面的代码,并揣摩自己什么它是所有关于。不要担心,如果你有无法作为代码始终是很好的注释。
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

/*
* Trying to get the page number if the $_GET['p'] parameter is set. If not, set the $page variable to 1.
*/
if(isset($_GET['p'])) {
    $page = intval($_GET['p']);
        if(empty($page)) {
            $page = 1;
        }
}
 
/*
* $start variable as per the current page. We will be using this in our SQL queries.
*/
$start = ($page – 1) * $limit;
 
    /*
    * An important fix for the pagination.
    */
    if($start == $total_posts || $start > $total_posts) {
        $start = 0;
        $page = 1;
    }



首先,我们检查page参数是否是通过设置全局变量$ _GET。这是一个GET请求,因为我们将在url中传递的页码。如果没有设置,那么$页= 1,这意味着我们是在第一页。然后,开始的变量的值被设置,因为它会被用在我们的SQL语句以及与限制变量提取结果。最后,我已经申请了一个小的分页修复,因此,如果有人试图在url这是我们的最后一页大于手动输入页码,分页复位的第一页。
这里是我编码,我们将使用在我们的网页链接显示的分页功能。
 
 
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

function pagination($page, $total_pages, $limit) {
    /*
    * We are going to use $stages for creating the gap between pages in the pagination links.
    */
    $stages = 1;
 
    /*
    * The previous and next links.
    */
    $prev = $page – 1;
    $next = $page + 1;
 
    $lastpage = ceil($total_pages/$limit);
    $LastPagem1 = $lastpage – 1;
 
    $paginate = ”;
 
    if($lastpage > 1) {
        $paginate .= ‘<div>’;
 
        ## Previous
        if($page > 1) {
            $paginate .= ‘<a href=”?p=’.$prev.’”>previous</a>’;
        } else {
            $paginate .= ‘<span>previous</span>’;
        }
 
        ## Pages
        if($lastpage < 7 + ($stages * 2)) {
            for($counter = 1; $counter <= $lastpage; $counter++) {
                if($counter == $page) {
                    $paginate .= ‘<span>’.$counter.’</span>’;
                } else {
                    $paginate .= ‘<a href=”?p=’.$counter.’”>’.$counter.’</a>’;
                }
            }
        } elseif($lastpage > 5 + ($stages * 2)) {
            if($page < 1 + ($stages * 2)) {
                for($counter = 1; $counter < 4 + ($stages * 2); $counter++) {
                    if($counter == $page) {
                        $paginate .= ‘<span>’.$counter.’</span>’;
                    } else {
                        $paginate .= ‘<a href=”?p=’.$counter.’”>’.$counter.’</a>’;
                    }
                }
 
                $paginate .= ‘…’;
                $paginate .= ‘<a href=”?p=’.$LastPagem1.’”>’.$LastPagem1.’</a>’;
                $paginate .= ‘<a href=”?p=’.$lastpage.’”>’.$lastpage.’</a>’;
            } elseif($lastpage – ($stages * 2) > $page && $page > ($stages * 2)) {
                $paginate .= ‘<a href=”?p=1″>1</a>’;
                $paginate .= ‘<a href=”?p=2″>2</a>’;
                $paginate .= ‘…’;
                    for($counter = $page – $stages; $counter <= $page + $stages; $counter++) {
                        if($counter == $page) {
                            $paginate .= ‘<span>’.$counter.’</span>’;
                        } else {
                            $paginate .= ‘<a href=”?p=’.$counter.’”>’.$counter.’</a>’;
                        }
                    }
 
                $paginate .= ‘…’;
                $paginate .= ‘<a href=”?p=’.$LastPagem1.’”>’.$LastPagem1.’</a>’;
                $paginate .= ‘<a href=”?p=’.$lastpage.’”>’.$lastpage.’</a>’;
            } else {
                $paginate .= ‘<a href=”?p=1″>1</a>’;
                $paginate .= ‘<a href=”?p=2″>2</a>’;
                $paginate .= ‘…’;
                    for($counter = $lastpage – (2 + ($stages * 2)); $counter <= $lastpage; $counter++) {
                        if($counter == $page) {
                            $paginate .= ‘<span>’.$counter.’</span>’;
                        } else {
                            $paginate .= ‘<a href=”?p=’.$counter.’”>’.$counter.’</a>’;
                        }
                    }
            }
        }
 
        ## Next
        if($page < $counter – 1) {
            $paginate .= ‘<a href=”?p=’.$next.’”>next</a>’;
        } else {
            $paginate .= ‘<span>next</span>’;
        }
 
        $paginate .= ‘</div>’;
    }
 
    echo $paginate;
}




PHP函数上面有3个必需的参数- $页面,$ total_items,$限制。下面写的SQL查询的格式会告诉你如何,我们将每当前页面显示结果。
 
$sql = “SELECT * FROM `posts` LIMIT {$start}, {$limit}”;



在这里,我们使用的是从我们的PHP代码开始$限制变量。比方说,你是在第3页,每一页上显示的项目是10,上面的查询将会像一个如下图所示。
1

$sql= “SELECT * FROM `posts` LIMIT 20, 10″;

 

现在,使用下面的代码到任何你想去的更换所需的参数为你的代码在您的网页上显示分页链接。
 
1

pagination($page, $total_posts, $limit);



这是所有需要在您的网站上实现分页系统。搁笔前,我已经在下面一节中的分页链接粘贴示例CSS。
 
 
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

/*
  @@ Pagination
*/
.paginate {
  font-family: “arial”, sans-serif;
  padding: 3px;
  margin: 3px;
}
 
.paginate a {
  padding: 2px 5px;
  margin: 2px;
  border: 1px solid transparent;
  text-decoration: none;
  color: #333;
}
 
.paginate a:hover, .paginate a:active {
  border: 1px solid #ff0000;
  background: #ff0000;
  color: #fff;
}
 
.paginate span.current {
  margin: 2px;
  padding: 2px 5px;
  border: 1px solid #000;
  font-weight: bold;
  background-color: #000;
  color: #fff;
}
 
.paginate span.disabled {
  padding: 2px 5px;
  margin: 2px;
  color: #ddd;
}




本教程结束。我希望你喜欢阅读这篇文章。
本文来自李新的博客,转载请注明出处。http://www.ilixin.net/406.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-288288-1-1.html 上篇帖子: MySQL数据库性能优化之硬件优化 下篇帖子: Python之道--Python连接MYSQL数据库和发送邮件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表