前面的章节我们说到了怎么实现简单的分页效果,这里我们就不再详细讲解了。
首先我们要把数据库中的新闻纪录展示出来
这里我们需要用到select 字段名1 , 字段2 , …… from 数据表名 来获取新闻数据<?php
$sql = "select * from new"; //获取所有数据
$result = mysqli_query($link, $sql);
$arr = mysqli_fetch_array($result); //获取所有数据并用数组形式展示
var_dump($arr); //可以通过var_dump()打印出来观察
?>
通过while循环把获取的数据库数据展示在HTML页面中
<?php echo $arr['id'];?><?php echo $arr['title'];?><?php echo $arr['author'];?><?php echo $arr['content'];?><?php echo $arr['created_at'];?>">修改
">删除
注释: 修改功能和删除功能通过 id 来实现,具体修改和删除PHP代码实现功能会在后面的章节进行介绍。
">修改
">删除
这里我们增加了一个搜索功能,我们给定一个函数$keyword,通过$_GET来获取数据<?php
$keyword = isset($_GET['keyword'])?$_GET['keyword']:""; // 判断获取的$keyword
?>
对新闻标题和新闻内容搜索,就要使用SQL语句中的模糊查找
主要通过LIKE(不区分大小写)关键字实现模糊查找。LIKE条件一般用在指定搜索某字段的时候, 通过"%"或者" _" 通配符的作用实现模糊查找功能,通配符可以在字段前面也可以在后面或前后都有。
主要有: like '关键字%' , like '%关键字', like'%关键字%' 三种。<?php
$sql = "select * from new where title like '%$keyword%' or content like '%$keyword%'limit {$limitFrom}, {$limitNews}";
?>
为了实现分页搜索功能,我们在HTML分页代码中加入了keyword=<?php echo $keyword;?>
&keyword=<?php echo $keyword;?>">上一页|
&keyword=<?php echo $keyword;?>"><?php echo $i;?>
&keyword=<?php echo $keyword;?>">|下一页
展示完整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);
?>
html>
新闻列表页"/>
编号 | 文章标题 | 文章作者 | 文章内容 | 发布时间 | 修改时间 | 编辑文章 |
---|---|---|---|---|---|---|
<?php echo $arr['id'];?> | <?php echo $arr['title'];?> | <?php echo $arr['author'];?> | <?php echo $arr['content'];?> | <?php echo $arr['created_at'];?> | ">修改 ">删除 |
共<?php echo $countPage;?>页 |查到<?php echo $countNews;?>条记录
当前第<?php echo $page;?>页|
&keyword=<?php echo $keyword;?>">上一页|
&keyword=<?php echo $keyword;?>"><?php echo $i;?>
&keyword=<?php echo $keyword;?>">|下一页