목록 페이징 표시 및 키워드 검색
이 섹션에서는 페이징 표시 및 키워드 검색 기능에 대해 설명하겠습니다.
페이징 기능을 수행하려면 먼저 데이터베이스에 연결하여 데이터를 얻어야 합니다. 대부분의 경우 동일한 PHP 페이지에서 페이징 및 검색 기능을 작성할 수 있습니다.
그런 다음 페이징 기능의 프로세스를 분석해 보겠습니다.
먼저 각 페이지에 표시되는 항목 수와 총 데이터 조각 수를 설정하여 총 페이지 수를 파악해야 합니다. 현재 표시되는 페이지입니다.
코드를 기준으로 자세히 설명하자면
<?php
//分页功能
$pageSize = 5; //每页显示多少条记录
$rowCount = 0; //共有多少条记录
$pageNow = 1; //希望显示第几页
$pageCount = 0; //一共有多少页
//根据分页链接来修改当前页的值
if (!empty($_GET['page'])) {
$pageNow = $_GET['page'];
}
//这里是关键词的搜索
$key=isset($_GET['key'])?'':$_GET['key'];//判断前段页面传递过来的关键词是否存在
$cid=isset($_GET['cid'])?'':$_GET['cid'];
$condition='1=1'; //这个条件是保证在搜索栏中没有任何输入的时候能正常显示
if(!empty($key)){
$condition.=" and content LIKE '%{$key}%'";
}
if(!empty($cid)){
$condition.=" and cid={$cid}";
}
//根据分页链接来修改 $pageNow的值。
$sql = "select count(*) from list WHERE {$condition}"; //根据$condition条件来进行查询
$res1 = mysqli_query($link,$sql);//将查询的结果赋值给$res1
//取出行数
if ($row = mysqli_fetch_row($res1)) {
$rowCount = $row[0];
} //取得$rowCount,,进而我们就知道了$pageCount这两个数值了
//计算共有多少页
$pageCount = ceil($rowCount / $pageSize);
$pageStart = ($pageNow - 1) * $pageSize;
//发送带有分页的sql结果
//根据$sql语句的limit 后面的两个值(起始值,每页条数),来实现分页。以及求得这两个值。
$sql = "select * from list WHERE {$condition} order BY id limit $pageStart,$pageSize";
$res2 = mysqli_query($link,$sql) or die('无法获取结果集' . mysqli_connect_error());
$prev = ($pageNow - 1 <= 0 )?1:$pageNow-1; //上一页
$next = ($pageNow + 1 > $pageCount)?$pageCount:$pageNow+1; //下一页
?>페이징과 키워드 검색을 한 페이지에 담았습니다.
프런트 엔드 페이지에서도 몇 가지 변경이 필요합니다:
<a href="?page=<?php echo $prev;?>">上一页</a> <?php for($i=1; $i<=$pageCount; $i++):?> <a href="?page=<?php echo $i;?> " <?php echo $i;?></a> <a href="?page=<?php echo $next;?>">下一页</a>
검색 기능은 프런트 엔드 페이지의 키워드를 기반으로 검색한 데이터를 순환해야 합니다.
<li> <input type="text" placeholder="请输入搜索关键字" name="key" class="input" style="width:250px; line-height:17px;display:inline-block" value="<?php echo $_GET['key'];?>"/> <input type="submit" name="sub" class="button border-main icon-search" value="搜索" /> </li>
위는 저희가 소개한 페이징 및 키워드 검색입니다. 이해가 안 되는 부분이 있으면 메시지를 남겨주시면 시간 맞춰 답변해 드리겠습니다.
새로운 파일
<?php
session_start();
header("content-type:text/html;charset=utf-8");
require 'config.php';
//分页功能
$pageSize = 5; //每页显示多少条记录
$rowCount = 0; //共有多少条记录
$pageNow = 1; //希望显示第几页
$pageCount = 0; //一共有多少页
//根据分页链接来修改当前的值
if (!empty($_GET['page'])) {
$pageNow = $_GET['page'];
}
$key=isset($_GET['key'])?'':$_GET['key'];
$cid=isset($_GET['cid'])?'':$_GET['cid'];
$condition='1=1';
if(!empty($key)){
$condition.=" and content LIKE '%{$key}%'";
}
if(!empty($cid)){
$condition.=" and cid={$cid}";
}
//根据分页链接来修改 $pageNow的值。
$sql = "select count(*) from list WHERE {$condition}";
$res1 = mysqli_query($link,$sql);
//取出行数
if ($row = mysqli_fetch_row($res1)) {
$rowCount = $row[0];
} //[取得$rowCount,,进而我们就知道了$pageCount这两个指标了。]
//计算共有多少页
$pageCount = ceil($rowCount / $pageSize);
$pageStart = ($pageNow - 1) * $pageSize;
//发送带有分页的sql结果
//根据$sql语句的limit 后面的两个值(起始值,每页条数),来实现分页。以及求得这两个值。
$sql = "select * from list WHERE {$condition} order BY id limit $pageStart,$pageSize";
$res2 = mysqli_query($link,$sql) or die('无法获取结果集' . mysqli_connect_error());
$prev = ($pageNow - 1 <= 0 )?1:$pageNow-1; //上一页
$next = ($pageNow + 1 > $pageCount)?$pageCount:$pageNow+1; //下一页
//我们引用的config.php文件(连接数据库的公共文件,之前提到过)这里没有,所以会在页面右边的显示栏中报错
?>
시사
Clear
- 코스 추천
- 코스웨어 다운로드
현재 코스웨어를 다운로드할 수 없습니다. 현재 직원들이 정리하고 있습니다. 앞으로도 본 강좌에 많은 관심 부탁드립니다~
이 강좌를 시청한 학생들도 학습하고 있습니다.
PHP로 사업을 시작하는 방법에 대해 간단히 이야기해 보겠습니다.
웹 프론트 엔드 개발에 대한 빠른 소개
민망한 물건 백과사전 사이트를 모방한 Mini 버전 MVC 프레임워크의 대규모 실용 Tianlongbabu 개발
PHP 실용 개발 시작하기: 빠른 PHP 생성 [중소기업 포럼]
로그인 인증 및 클래식 게시판
컴퓨터 네트워크 지식 수집
빠른 시작 Node.JS 정식 버전
당신을 가장 잘 이해하는 프론트엔드 강좌: HTML5/CSS3/ES6/NPM/Vue/...[원본]
자신만의 PHP MVC 프레임워크 작성(깊이 있는 40개 장/자세한 내용/초보자가 발전하려면 읽어야 함)
















