Fonction de pagination pour le développement des actualités

La pagination est une fonction utilisée par presque tous les sites Web, car s'il y a beaucoup de contenu et qu'aucune pagination n'est utilisée, l'affichage de la page sera très long, ce qui sera très difficile à utiliser et à trouver, alors parlons-en très pratique fonction.

L'idée générale de la pagination :

La pagination consiste à diviser toutes les informations de la base de données en plusieurs segments par un nombre fixe, il faut donc ici deux données :

Le nombre d'informations affichées sur chaque page $limitPage

Obtenez le nombre de pagination actuel $Page


Puisque le langage informatique commence à obtenir des enregistrements à partir de 0 par défaut

Si vous définissez le nombre d'affichages par page sur 5, $limitPage = 5,

puis le premier la page $page = 1 affichera 0, 1, 2, 3, 4 trois enregistrements

La deuxième page $page = 2 affichera 5, 6, 7, 8, 9, 10 Trois enregistrements

La troisième page $page = 3 affichera 11, 12, 13, 14, 15 trois enregistrements

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

Définissez un paramètre $limitFrom à partir duquel les données doivent commencer la lecture

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

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

Il commencera respectivement à partir du 0 et du 5 , 11 éléments commencent à obtenir des données.


L'étape suivante consiste à se connecter à la base de données et à compter le nombre total de nouvelles :

<?php
$link = mysqli_connect('localhost','uesrname','password','news');
$sql = "select * from new";  //  select * from表示获取全部字段的值
$sqlCount = "select count(*) from new";    //count(*)是计算数据总的条数
$retQuery = mysqli_query($link, $sqlCount);  //查询数量sql语句
$retCount = mysqli_fetch_array($retQuery);   //获取数量
$count = $retCount[0]?$retCount[0]:0;   //判断获取的新闻数量
$countNews = $count;
?>

Ensuite, nous donnons une variable $countPage pour indiquer combien de pages sont affichées au total

Peut-être rencontrerons-nous ceci dans une situation longue, s'il y a 100 informations, on nous donne que 11 sont affichées sur chaque page, comment gérer la 1 pièce restante,

Ensuite il faut utiliser % pour faire un reste pour juger :

<?php
$countPage = $countNews%$limitPage;   //求余数获取分页数量能否被除尽
if(($countPage) > 0) {  //获取的页数有余
  $countPage = ceil($countNews/$limitPage);    
// ceil() 函数向上舍入为最接近的整数,除不尽则取整数+1页, 100个新闻每个页面显示11个,成9个页面,剩余1个单独成1个页面,这样总共有10个页面
} else {
  $countPage = $countNews/$limitPage;  //如果是10个新闻每个页面显示2个,成5个页面
}
?>

Autres paramètres Page précédente $prev, page suivante $next

Dans la fonction de pagination, il y a souvent des clics sur "page précédente" et "page suivante" pour sauter

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

Page précédente $prev, qui est la page actuelle $page -1, passe à la page précédente étape par étape. Lorsque la page actuelle $page est la première page, le saut vers l'avant sera la page 0. . Cela provoquera évidemment un bug,

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 et ne plus avancer. .

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

La page suivante $next est la page actuelle $page -1 et 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

Semblable à la page précédente, nous la configurons pour afficher la dernière page.

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

//Lorsque le numéro de page actuel est supérieur au numéro de page total, la page actuelle est affichée.

<!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>


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 = 5; //每页显示新闻数量 $countNews = ""; //总共有多少条新闻 $countPage = ""; //一共有多少页数 $limitFrom = ($page - 1) * $limitPage;//从第几条数据开始读记录 //每页显示5个 //page = l limit 0 //page = 2 limit 5 //page = 3 limit 11 $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%$limitPage; //求余数获取分页数量能否被除尽 if(($countPage) > 0) { //获取的页数有余 $countPage = ceil($countNews/$limitPage); // ceil() 函数向上舍入为最接近的整数,除不尽则取整数+1页, 100个新闻每个页面显示11个,成9个页面,剩余1个成1个页面 } else { $countPage = $countNews/$limitPage; } $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