Home >Backend Development >PHP Problem >How to paginate in PHP

How to paginate in PHP

王林
王林Original
2019-09-21 17:56:492801browse

How to paginate in PHP

In a website, if there is too much content in the list page, the paging function is usually set up. Today we will study the paging principle and implement this function through a small case.

Page Principle

Page display, the data taken out from the mysql database is displayed in regular sections, and the limit in the sql statement is used to bind its starting data to the number of pages. Determine and fetch data from the database based on the number of pages.

For example: Suppose the database table name is list, and 10 pieces of information are fetched from each page

第1页    select * from list limit 0,10;
第2页   select * from list limit 10,10;
第3页   select * from list limit 20,10;
由此观之第n页 是select * from list limit (n-1)*10,10;

In this way, we get a formula for fetching data using the number of pages:

select * from list limit ($page-1)*$pagesize,$pagesize; $page是当前的页数,$pagesize是每页取得条数

Required knowledge points
1. Basic database operation functions

1.1, mysqli_connect(); connect to the database, for example $link = mysqli_connect('127.0.0.1 ','root',12345678,'bbs');

1.2, mysqli_query(): Get data for example $res = mysqli_query($link,"select * from list"); The second parameter is sql Statement

1.3, mysqli_num_rows(): Check how many pieces of data have been obtained. For example, $num = mysqli_num_rows($res);

1.4, mysqli_fetch_assoc(), or mysqli_fetch_row(): Get the data from Focus on fetching one piece of data, fetching only one piece at a time. After fetching, the pointer will point to the next piece. For example, mysqli_fetch_assoc($res), in addition to fetch_assoc, fetch_row also has fetch_array

1.5, limit is used to operate data in the database, limit is the starting position, and the number of operations is, for example, fetching numbers from the database select * from list limit 10,10 ;

2. Other related knowledge

2.1 $_SERVER['REQUEST_URI']获取当前页面的url 
例如https://i.cnblogs.com/EditPosts.aspx?opt=1的url为/EditPosts.aspx?opt=1 
2.2 parse_url():解析url,返回url的各个组成部分,如果不写第二个参数,返回的数组中可能的键有以下几种:
    scheme - 如 http,
    host
    port
    user
    pass
    path
    query - 在问号 ? 之后
    fragment - 在散列符号 # 之后

Implementation process:

1. Get the current url string, and use parse_url to parse to get the url array

2. Connect to the server, obtain the content collection to be displayed on the list page, count the total number of items displayed, and then calculate the total number of pages of content

3 . Determine whether the page is submitted. If not, it defaults to the first page $pageval

4. Assign the calculated limit starting position to the variable $page

5. Use $page and $ pageSize goes to the database to get the data

6. Loop through the data collection, and the output is displayed on the page

Specific code:

$url = $_SERVER['REQUEST_URI'];
$url = parse_url($url);
$url = $url['path'];
$pageSize = 4;//连接服务器$link = mysqli_connect('127.0.0.1','root',12345678,'bbs');
$res = mysqli_query($link,'select * from fenye');
$num = mysqli_num_rows($res);
$pageNum = ceil($num/$pageSize);//判断页面是否是提交状态if ( isset($_GET['page']) && $_GET['page'] >1) {
    $pageVal = $_GET['page'];
}else {
    $pageVal = 1;
}//计算起始位置$page = ($pageVal-1)*$pageSize;//去数据库取数据$res = $mysqli_query($link,"select * from fenye limit $page,$pageSize");//如果$res有值,则循环便利结果展示输出在页面if ($res) {    while( $row = mysqli_fetch_assoc($res) ) {    echo $row[&#39;name&#39;]. &#39;|&#39;.$row[&#39;age&#39;].&#39;<br/>&#39;;
    }
}//html添加页数部分<a href="?page=1">1</a>;
<a href="?page=2">2</a>;
<a href="?page=3">3</a>;
<a href="?page=4">4</a>;
<a href="?page=5">5</a>;
总共<?php echo $pageNum; ?>页,当前在<?php echo $pageVal;?>页

Recommended Tutorial: PHP Video Tutorial

The above is the detailed content of How to paginate in PHP. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn