Introduction à la fonction de pagination simple du développement d'un système simple de communiqués de presse avec PHP

L'affichage de pagination est une méthode très courante de navigation et d'affichage de grandes quantités de données, et est l'un des événements les plus couramment traités dans la programmation Web.

L'affichage dit de pagination signifie que le résultat défini dans la base de données est artificiellement divisé en sections pour l'affichage. Deux paramètres initiaux sont requis ici :

Le nombre d'actualités affichées sur. chaque page : $limitNews

Obtenir le nombre actuel de pages : $page

Puisque le langage informatique commence à récupérer les enregistrements à partir de 0 par défaut

Si le nombre affiché par page est fixé à 3, $limitNews = 3,

alors la première page $page = 1 affichera trois enregistrements de 0, 1, 2

La deuxième page $page = 2 affichera trois enregistrements 3, 4, 5

sur la troisième page $page = 3 affichera trois enregistrements 6, 7, 8

et ainsi de suite. . . . . . . . .

Définissez un paramètre $limitFrom à partir de quelle donnée commencer la lecture

À partir des règles ci-dessus, nous pouvons obtenir :

$limitFrom = ($page - 1 ) * $limitNews;

obtiendra les données à partir du 0ème, du 3ème et du 6ème élément respectivement.


Étape suivante, nous devons nous connecter à la base de données et lire les données

Nous utilisons toujours le test du nom de la base de données et le nouveau nom de la table :

<?php
$link = mysqli_connect('localhost','uesrname','password','test');

$sql = "select * from new";  //  select * from表示获取全部字段的值

$sqlCount = "select count(*) from new";    //count(*)统计的是结果集的总条数
?>


Obtenez le nombre total de nouvelles dans la table de base de données via l'instruction de requête $countNews

<?php
$retQuery = mysqli_query($link, $sqlCount);  //查询数量sql语句

$retCount = mysqli_fetch_array($retQuery);   //获取数量

$count = $retCount[0]?$retCount[0]:0;   //判断获取的新闻数量

$countNews = $count;
?>


Ici, vous devez donner un autre paramètre $countPage. Combien de pages sont affichées au total

Maintenant, un autre problème se pose s'il y a 10 enregistrements d'actualités et 3 enregistrements. sont affichés sur chaque page, puis Que faire du reste ?

Nous devons utiliser le % reste pour porter le jugement :

<?php
$countPage = $countNews%$limitNews;   //求余数获取分页数量能否被除尽

if(($countPage) > 0) {  //获取的页数有余
  $countPage = ceil($countNews/$limitNews);  
  
// ceil() 函数向上舍入为最接近的整数,除不尽则取整数+1页, 10个新闻每个页面显示3个,成3个页面,剩余1个单独成1个页面,这样总共有4个页面
} else {
  $countPage = $countNews/$limitNews;  //如果是9个新闻每个页面显示3个,成3个页面
}
?>


Autres paramètresPage précédente $prev, page suivante $next ;

Dans la fonction de pagination, vous cliquez souvent sur "Page précédente" et cliquez sur "Page suivante" pour sauter

Laissez-moi d'abord parler de l'idée d'implémenter le code PHP fonction :

La page précédente $prev est la page actuelle $page -1. Passer à la page précédente étape par étape. Lorsque la page actuelle $page est la première page, passer à la page 0. provoque évidemment des bugs.

Ici, nous devons lui donner un paramètre Lorsque la page actuelle $page est la première page, cliquez sur "Page précédente" pour qu'elle soit affichée comme première page. .

$prev = ($page - 1 <= 0 )?1:$page-1;

Page suivante $next, qui est la La page actuelle $page -1 passe à la page suivante étape par étape. Le problème est que lorsque $page est la dernière page, cliquez sur "Page suivante" pour revenir en arrière

est similaire à la page précédente. set Réglez-le pour afficher la dernière page.

$next = ($page + 1 > $countPage)?$countPage:$page+1;

//Le numéro de page actuel doit être supérieur à Lorsque le nombre total de pages est affiché, la page actuelle est affichée.

Le code de la page est affiché ci-dessous :

<!DOCTYPE html>
<html>
<head>  
<meta charset=utf8">  
<title>分表页</title>
</head>
<body>
   <div>
         <a href="?page=<?php echo $prev;?>">|上一页</a>         
         <?php for($i=1; $i<=$countPage; $i++):?>         
         <a href="?page=<?php echo $i;?>"><?php echo $i;?></a>         
         <?php endfor;?>         
         <a href="?page=<?php echo $next;?>">|下一页</a>
   </div>
</body>
</html>

Remarque : Le code ci-dessus utilise une boucle for pour implémenter 1,2,3. . . . effet de page.

Formation continue
||
<?php $link = mysqli_connect('localhost','usermane','password','test'); mysqli_set_charset($link, "utf8"); if (!$link) { die("连接失败:".mysqli_connect_error()); } $page = isset($_GET['page'])?$_GET['page']:1;//获取当前分页数 $limitNews = 3; //每页显示新闻数量 $countNews = 0; //总共有多少条新闻 $countPage = 0; //一共有多少页数 $limitFrom = ($page - 1) * $limitNews;//从第几条数据开始读记录 //每页显示3个 //page = l limit 0 //page = 2 limit 3 //page = 3 limit 6 $sql = "select * from new"; $sqlCount = "select count(*) from new"; $retQuery = mysqli_query($link, $sqlCount); //查询数量sql语句 $retCount = mysqli_fetch_array($retQuery); //获取数量 $count = $retCount[0]?$retCount[0]:0; //判断获取的新闻数量 $countNews = $count; $countPage = $countNews%$limitNews; //求余数获取分页数量能否被除尽 if(($countPage) > 0) { //获取的页数有余 $countPage = ceil($countNews/$limitNews); // ceil() 函数向上舍入为最接近的整数,除不尽则取整数+1页, 10个新闻每个页面显示3个,成3个页面,剩余1个成1个页面 } else { $countPage = $countNews/$limitNews; } $prev = ($page - 1 <= 0 )?1:$page-1; //上一页 $next = ($page + 1 > $countPage)?$countPage:$page+1; //下一页 $result = mysqli_query($link, $sql); ?> <!DOCTYPE html> <html> <head> <meta charset=utf8"> <title>分页</title> </head> <body> <div> <a href="?page=<?php echo $prev;?>">|上一页</a> <?php for($i=1; $i<=$countPage; $i++):?> <a href="?page=<?php echo $i;?>"><?php echo $i;?></a> <?php endfor;?> <a href="?page=<?php echo $next;?>">|下一页</a> </div> </body> </html>
soumettreRéinitialiser le code
  • Recommandations de cours
  • Téléchargement du didacticiel