PHP로 간단한 보도자료 시...LOGIN

PHP로 간단한 보도자료 시스템을 개발하는 간단한 페이징 기능 소개

페이징 표시는 많은 양의 데이터를 탐색하고 표시하는 매우 일반적인 방법이며 웹 프로그래밍에서 가장 일반적으로 처리되는 이벤트 중 하나입니다.

소위 페이징 표시는 데이터베이스의 결과 집합을 표시하기 위해 인위적으로 섹션으로 나누는 것을 의미합니다. 여기에는 두 가지 초기 매개변수가 필요합니다.

각 페이지에 표시되는 뉴스 수: $limitNews

현재 페이지 수 가져오기: $page

컴퓨터 언어는 기본적으로 0부터 레코드를 획득하기 시작하므로

페이지당 표시 수를 3으로 설정하면 $limitNews = 3,

첫 번째 페이지 $page = 1은 0, 1, 2 세 개의 레코드를 표시합니다

두 번째 페이지 $page = 2는 세 개의 레코드 3, 4, 5를 표시합니다

세 번째 페이지 $page = 3은 세 개의 레코드 6, 7, 8

을 표시합니다. 곧. . . . . . . . .

$limitFrom 매개변수를 설정하여 어떤 데이터 조각에서 읽기를 시작합니까?

위의 규칙에서 이를 얻을 수 있습니다.

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

은 0, 3, 6개 항목에서 데이터 가져오기를 시작합니다.


다음 단계는 데이터베이스에 연결하고 데이터를 읽는 것입니다.

우리는 이전에 만든 데이터베이스 이름 test와 테이블 이름을 계속 사용합니다.

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

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

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


데이터베이스에서 뉴스 요약을 가져옵니다. 쿼리 문을 통해 테이블 ​​Quantity $countNews

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

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

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

$countNews = $count;
?>


여기에 다른 매개변수를 제공해야 합니다$countPage 총 몇 페이지가 표시되는지

이제 10개의 뉴스 레코드가 있고 각 페이지가 있으면 또 다른 질문이 발생합니다. 3개의 레코드가 표시되면 나머지 레코드는 어떻게 해야 합니까?

판단을 하려면 나머지 %를 사용해야 합니다.

<?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个页面
}
?>


기타 매개변수이전 페이지 $prev, 다음 페이지 $next;

페이징 기능에서 "이전 페이지"를 클릭하는 경우가 종종 있습니다. " "를 클릭하고 "다음 페이지"를 클릭하여 이동합니다

먼저 PHP 코드 기능을 구현하는 아이디어에 대해 이야기해 보겠습니다.

이전 페이지 $prev, 현재 페이지 $page -1 단계별로 이전 페이지로 이동합니다. 단계, 현재 페이지 $page가 첫 번째 페이지인 경우 0페이지로 이동합니다. 이로 인해 분명히 버그가 발생합니다.

여기서 현재 페이지 $page가 첫 번째 페이지인 경우 설정을 지정해야 합니다. 페이지에서 "위로"를 클릭합니다. "한 페이지"는 첫 번째 페이지로 표시되도록 설정하고 앞으로 이동하지 않습니다.

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

다음 페이지 $next, 현재 페이지 $page -1, 다음 페이지 단계로 이동 단계별로 문제 $page가 마지막 페이지일 때 "Next Page"를 클릭하면 뒤로 이동합니다.

이전 페이지와 유사하게 마지막 페이지를 표시하도록 설정했습니다.

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

//현재 페이지 번호가 전체 페이지 수보다 큰 경우 현재 페이지가 표시됩니다. .

페이지 코드는 아래와 같습니다:

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

참고: 위 코드는 for 루프를 사용하여 1,2,3을 구현합니다. . . . 페이지 효과.

다음 섹션
<?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>
코스웨어