前面的章节我们说到了怎么实现简单的分页效果,这里我们就不再详细讲解了。
首先我们要把数据库中的新闻纪录展示出来
这里我们需要用到select 字段名1 , 字段2 , …… from 数据表名 来获取新闻数据<?php
$sql="select*fromnew";//获取所有数据
$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*fromnewwheretitlelike'%$keyword%'orcontentlike'%$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=llimit0
//page=2limit3
//page=3limit6
$sql="select*fromnewwheretitlelike'%$keyword%'orcontentlike'%$keyword%'limit{$limitFrom},{$limitNews}";
$sqlCount="selectcount(*)fromnewwheretitlelike'%$keyword%'orcontentlike'%$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$countPage;?>页|查到<?php echo$countNews;?>条记录
当前第<?php echo$page;?>页|
&keyword=<?php echo$keyword;?>">上一页|
&keyword=<?php echo$keyword;?>"><?php echo$i;?>
&keyword=<?php echo$keyword;?>">|下一页