php和js如何实现分页

随着web应用程序的不断演变和数据量的增加,分页成为了一种必备的技术手段。分页的实现主要分为服务器端和客户端两种方式。在本文中,我们将着重介绍php和js如何实现分页。

一、服务器端分页

1.基本原理

服务器端分页依赖于SQL语句的limit和offset设置。一般情况下,我们首先要获取总记录数,然后计算出总页数。然后,根据当前页码和每页显示记录数,计算出当前页的limit和offset值,从而在SQL语句中指定需要获取的记录范围。最后,将获取的记录返回给浏览器进行展示。

2.php实现

php作为一种服务器端语言,可以使用mysql查询获取数据。下面是一个示例代码片段:

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

<?php

$host = localhost;

$username = root;

$password = password;

$database = test;

$conn = new mysqli($host, $username, $password, $database);

if($conn->connect_error){

die(“Connection failed: ” . $conn->connect_error);

}

$per_page = 10; // 每页显示10条记录

$page = isset($_GET[page]) ? $_GET[page] : 1; // 获取当前页码,默认为第1页

$start = ($page – 1) * $per_page; // 计算当前页的起始记录号

$sql = “SELECT * FROM users LIMIT $start, $per_page”;

$result = $conn->query($sql);

if($result->num_rows > 0){

while($row = $result->fetch_assoc()){

echo $row[id] . ” ” . $row[name] . “<br>”;

}

}

$conn->close();

echo “<br>”;

// 分页导航

echo “<div class=pagination>”;

echo “<a href=?page=1>第一页</a>”;

if($page > 1){

echo “<a href=?page=”.($page-1).”>上一页</a>”;

}

if($page < $total_pages){

echo “<a href=?page=”.($page+1).”>下一页</a>”;

}

echo “<a href=?page=”.$total_pages.”>最后一页</a>”;

echo “</div>”;

登录后复制

以上代码实现了从mysql数据库中获取用户信息,每页显示10条记录,支持分页功能。其中,$per_page表示每页显示的记录数,$page表示当前页码,$start表示当前页的起始记录号,$total_pages表示总页数。

二、客户端分页

1.基本原理

客户端分页是指将所有记录一次性从服务器获取到浏览器端,然后使用js进行分页处理。具体实现方式如下:

1)将所有数据源加载到js中;

2)计算总记录数和总页数;

3)根据当前页码和每页显示记录数,计算出当前页需要显示的数据范围;

4)渲染数据并显示在页面上;

5)通过点击页码切换分页。

2.js实现

js实现分页主要是基于jQuery和Bootstrap框架。下面是一个基于Bootstrap的分页示例代码:

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

<!DOCTYPE html>

<html>

<head>

<title>客户端分页示例</title>

<link rel=”stylesheet” href=”https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css”>

<script src=”https://cdn.bootcdn.net/ajax/libs/jquery/2.2.4/jquery.min.js”></script>

<script src=”https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js”></script>

</head>

<body>

<div class=”container”>

<h3>客户端分页示例</h3>

<table class=”table table-bordered table-hover” id=”tblData”>

<thead>

<tr>

<th>ID</th>

<th>姓名</th>

<th>年龄</th>

<th>地址</th>

</tr>

</thead>

<tbody id=”tblBody”>

</tbody>

</table>

<nav>

<ul class=”pagination” id=”pagination”>

</ul>

</nav>

</div>

<script>

$(function(){

// 模拟数据源

var data = [

{id:1, name:”张三”, age:20, address:”北京”},

{id:2, name:”李四”, age:22, address:”上海”},

{id:3, name:”王五”, age:25, address:”广州”},

{id:4, name:”赵六”, age:28, address:”深圳”},

{id:5, name:”周七”, age:30, address:”杭州”},

{id:6, name:”吴八”, age:35, address:”南京”},

{id:7, name:”钱九”, age:40, address:”西安”},

{id:8, name:”孙十”, age:45, address:”重庆”},

{id:9, name:”郑十一”, age:50, address:”成都”},

{id:10, name:”冯十二”, age:55, address:”武汉”}

];

var per_page = 5; // 每页显示5条记录

var total = data.length; // 记录总数

var total_pages = Math.ceil(total / per_page); // 计算总页数

// 初始化页码

for(var i = 1; i <= total_pages; i++){

var li = “<li><a href=# onclick=changePage(” + i + “)>” + i + “</a></li>”;

$(“#pagination”).append(li);

}

// 默认显示第一页

showData(1);

// 根据页码显示数据

function showData(page){

var start = (page – 1) * per_page;

var end = start + per_page;

var html = “”;

for(var i = start; i < end; i++){

var item = data[i];

if(item){

html += “<tr><td>” + item.id + “</td><td>” + item.name + “</td><td>” + item.age + “</td><td>” + item.address + “</td></tr>”;

}

}

$(“#tblBody”).html(html);

}

// 切换页码

window.changePage = function(page){

showData(page);

$(“#pagination li”).removeClass(“active”);

$(“#pagination li:nth-child(” + (page+1) + “)”).addClass(“active”);

}

});

</script>

</body>

</html>

登录后复制

以上代码演示了使用Bootstrap框架实现客户端分页,并使用模拟数据源进行展示。

结论

服务器端分页和客户端分页都具有各自的优点和缺点。对于小规模数据集,可以使用客户端分页,可以减轻服务器负担。而对于大规模数据集,服务器端分页更为适合。因此,需要根据实际情况选择合适的分页方式。

以上就是php和js如何实现分页的详细内容,更多请关注php中文网其它相关文章!

TG交流群(点击进入)----付费帮助搭建---修复---二开,以及发布求资源.
QQ交流群 922260178
© 版权声明
THE END
喜欢就支持一下吧
点赞2.5W+ 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容