PHP는 뉴스 목록 페이지의 전체 기능을 구현하기 위해 간단한 뉴스 릴리스 시스템을 개발합니다.

이전 장에서는 간단한 페이징 효과를 얻는 방법에 대해 이야기했기 때문에 여기서는 자세히 설명하지 않겠습니다.

먼저 데이터베이스에 뉴스 기록을 표시해야 합니다

여기서 데이터 테이블 이름에서 필드 이름 1, 필드 2, ...을 선택하여 뉴스 데이터를 가져와야 합니다

<?php
$sql = "select * from new";  //获取所有数据

$result = mysqli_query($link, $sql);

$arr = mysqli_fetch_array($result);  //获取所有数据并用数组形式展示

var_dump($arr);  //可以通过var_dump()打印出来观察
?>

획득한 데이터베이스를 다음을 통해 입력해야 합니다. while 루프 데이터는 HTML 페이지에 표시됩니다

<body>
<?php while($arr=mysqli_fetch_array($result)):?>

    <tr>
      <td align="center" style="border:1px solid #000;width: 8%;"><?php echo $arr['id'];?></td>
      <td align="center" style="border:1px solid #000; width: 10%;"><?php echo $arr['title'];?></td>
      <td align="center" style="border:1px solid #000; width: 10%;"><?php echo $arr['author'];?></td>
      <td align="center" style="border:1px solid #000; width: 15%;"><?php echo $arr['content'];?></td>
      <td align="center" style="border:1px solid #000; width: 10%;"><?php echo $arr['created_at'];?></td>           
      <td align="center" style="border:1px solid #000; width: 10%;">
        <a href="edit.php?id=<?php echo $arr['id']?>"><font color="red">修改</font></a>
        <a href="delete.php?id=<?php echo $arr['id']?>"><font color="red">删除</font></a>
      </td>
    </tr>
    
<?php endwhile;?>
</body>

참고: 수정 및 삭제 기능은 id를 통해 구현됩니다. 구체적인 수정 및 삭제 PHP 코드 구현 기능은 이후 장에서 소개됩니다.

<body>
<a href="edit.php?id=<?php echo $arr['id']?>"><font color="red">修改</font></a>
<a href="delete.php?id=<?php echo $arr['id']?>"><font color="red">删除</font></a>
</body>


여기에 검색 기능을 추가했습니다.

$keyword 기능을 제공하고, $_GET

<?php
$keyword = isset($_GET['keyword'])?$_GET['keyword']:"";  // 判断获取的$keyword
?>

를 통해 데이터를 얻습니다. 뉴스 제목과 뉴스 콘텐츠를 검색하려면

를 사용해야 합니다. SQL문에서의 퍼지 검색

주로 LIKE(대소문자 구분) 키워드를 통한 퍼지 검색을 구현합니다. LIKE 조건은 일반적으로 검색할 필드를 지정할 때 사용되며, 와일드카드 문자는 "%" 또는 "_" 와일드카드 문자를 사용하여 퍼지 검색 기능을 구현합니다. 양쪽.

세 가지 주요 유형이 있습니다: like 'keyword%', like '%keyword', like'%keyword%'.

<?php
$sql = "select * from new where title like '%$keyword%' or content like '%$keyword%'limit {$limitFrom}, {$limitNews}";
?>
페이징 검색 기능을 구현하기 위해

keyword=<?php echo $keyword;?>

<body>
<a href="?page=<?php echo $prev;?>&keyword=<?php echo $keyword;?>">上一页|</a>
<?php for($i=1; $i<=$countPage; $i++):?>
    <a href="?page=<?php echo $i;?>&keyword=<?php echo $keyword;?>"><?php echo $i;?></a>
<?php endfor;?>
<a href="?page=<?php echo $next;?>&keyword=<?php echo $keyword;?>">|下一页</a>
</body>

전체 list.php 코드 표시:

<?php
$link = mysqli_connect('localhost','username','password','test');
  mysqli_set_charset($link, "utf8");
  
if (!$link) {
 die("连接失败:".mysqli_connect_error());
}

$keyword = isset($_GET['keyword'])?$_GET['keyword']:"";
$page = isset($_GET['page'])?$_GET['page']:1;//获取当前分页数
$limitNews = 3;   //每页显示新闻数量, 这里设置每页显示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 where title like '%$keyword%' or content like '%$keyword%'limit {$limitFrom}, {$limitNews}";
$sqlCount = "select count(*) from new where title like '%$keyword%' or content like '%$keyword%'";
$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>
       <!--搜索框-->
 <form method="get" action="list.php" style="margin:10px;">
   <input type="text" name="keyword" value="<?php echo $keyword;?>"/>
   <input type="submit" value="搜索"/>
 </form>
 <br/>
 <table cellspacing="0" cellpadding="0" align="center" bgcolor="#ccc" width=1000 >
   <tr>
     <th>编号</th>
     <th>文章标题</th>
     <th>文章作者</th>
     <th>文章内容</th>
     <th>发布时间</th>
     <th>修改时间</th>
     <th>编辑文章</th>
   </tr>
     <?php while($arr=mysqli_fetch_array($result)):?>
     <tr>
        <td align="center" style="border:1px solid #000;width: 8%;"><?php echo $arr['id'];?></td>
             <td align="center" style="border:1px solid #000; width: 10%;"><?php echo $arr['title'];?></td>
             <td align="center" style="border:1px solid #000; width: 10%;"><?php echo $arr['author'];?></td>
             <td align="center" style="border:1px solid #000; width: 15%;"><?php echo $arr['content'];?></td>
             <td align="center" style="border:1px solid #000; width: 10%;"><?php echo $arr['created_at'];?></td>
             <td align="center" style="border:1px solid #000; width: 10%;">
                <a href="edit.php?id=<?php echo $arr['id']?>"><font color="red">修改</font></a>
                <a href="delete.php?id=<?php echo $arr['id']?>"><font color="red">删除</font></a>
             </td>
         </tr>
     <?php endwhile;?>
 </table>
 <div style="margin:20px;">
   共<?php echo $countPage;?>页 |查到<?php echo $countNews;?>条记录
   当前第<?php echo $page;?>页|
   <a href="?page=<?php echo $prev;?>&keyword=<?php echo $keyword;?>">上一页|</a>
   <?php for($i=1; $i<=$countPage; $i++):?>
     <a href="?page=<?php echo $i;?>&keyword=<?php echo $keyword;?>"><?php echo $i;?></a>
   <?php endfor;?>
   <a href="?page=<?php echo $next;?>&keyword=<?php echo $keyword;?>">|下一页</a>
 </div>
</body>
</html>

을 추가했습니다. HTML 페이징 코드

지속적인 학습
||
<?php $link = mysqli_connect('localhost','username','password','test'); mysqli_set_charset($link, "utf8"); if (!$link) { die("连接失败:".mysqli_connect_error()); } $keyword = isset($_GET['keyword'])?$_GET['keyword']:""; $page = isset($_GET['page'])?$_GET['page']:1;//获取当前分页数 $limitNews = 3; //每页显示新闻数量, 这里设置每页显示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 where title like '%$keyword%' or content like '%$keyword%'limit {$limitFrom}, {$limitNews}"; $sqlCount = "select count(*) from new where title like '%$keyword%' or content like '%$keyword%'"; $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> <!--搜索框--> <form method="get" action="list.php" style="margin:10px;"> <input type="text" name="keyword" value="<?php echo $keyword;?>"/> <input type="submit" value="搜索"/> </form> <br/> <table cellspacing="0" cellpadding="0" align="center" bgcolor="#ccc" width=1000 > <tr> <th>编号</th> <th>文章标题</th> <th>文章作者</th> <th>文章内容</th> <th>发布时间</th> <th>修改时间</th> <th>编辑文章</th> </tr> <?php while($arr=mysqli_fetch_array($result)):?> <tr> <td align="center" style="border:1px solid #000;width: 8%;"><?php echo $arr['id'];?></td> <td align="center" style="border:1px solid #000; width: 10%;"><?php echo $arr['title'];?></td> <td align="center" style="border:1px solid #000; width: 10%;"><?php echo $arr['author'];?></td> <td align="center" style="border:1px solid #000; width: 15%;"><?php echo $arr['content'];?></td> <td align="center" style="border:1px solid #000; width: 10%;"><?php echo $arr['created_at'];?></td> <td align="center" style="border:1px solid #000; width: 10%;"> <a href="edit.php?id=<?php echo $arr['id']?>"><font color="red">修改</font></a> <a href="delete.php?id=<?php echo $arr['id']?>"><font color="red">删除</font></a> </td> </tr> <?php endwhile;?> </table> <div style="margin:20px;"> 共<?php echo $countPage;?>页 |查到<?php echo $countNews;?>条记录 当前第<?php echo $page;?>页| <a href="?page=<?php echo $prev;?>&keyword=<?php echo $keyword;?>">上一页|</a> <?php for($i=1; $i<=$countPage; $i++):?> <a href="?page=<?php echo $i;?>&keyword=<?php echo $keyword;?>"><?php echo $i;?></a> <?php endfor;?> <a href="?page=<?php echo $next;?>&keyword=<?php echo $keyword;?>">|下一页</a> </div> </body> </html>
  • 코스 추천
  • 코스웨어 다운로드
현재 코스웨어를 다운로드할 수 없습니다. 현재 직원들이 정리하고 있습니다. 앞으로도 본 강좌에 많은 관심 부탁드립니다~