Home >Backend Development >PHP Problem >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['name']. '|'.$row['age'].'<br/>'; } }//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!