吉佳 发表于 2016-10-19 09:45:15

怎么使用PHP和MySQL创建个性的网站分页

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]
查看完整版本: 怎么使用PHP和MySQL创建个性的网站分页