php分页无极类的讲解_PHP无级分类续及搜索功能,分组分页

本文详细介绍了如何使用PHP实现新闻的无级分类查询、搜索功能和分页显示。通过示例代码展示了如何连接数据库、构造查询SQL、处理分页以及构建分类树形结构。

header("Content-Type:text/html; charset=utf8");

mysql_connect('211.147.14.57','e1215cms_4','111111');

mysql_select_db('e1215cms_4');

mysql_query("set names utf8");

$sql  = "SELECT

`news`.*, `news_categorys`.`name` AS cate_name

FROM

`news`

JOIN `news_categorys` ON `news`.categoryid = `news_categorys`.id

WHERE

`news`.categoryid = '{$_GET['categoryid']}'

AND `news`.title LIKE '%{$_GET['keyword']}%'";

//执行分页

$result = mysql_query($sql);

if(!$result)

{

die(mysql_error());

}

$total_num = mysql_num_rows($result);

$per_num  = 2;

$now_page=isset($_GET['now_page'])?$_GET['now_page']:1;

$offset = $per_num*($now_page-1);

$pages = ceil($total_num/$per_num);

if($now_page==1){

$prv_page = 1;

}else{

$prv_page = $now_page - 1;

}

if($now_page==$pages){

$next_page = $pages;

}else{

$next_page = $now_page + 1;

}

$sql .= "limit {$offset},{$per_num}";

$result = mysql_query($sql);

if(!$result)

{

die(mysql_error());

}

$rows = array();

while($row = mysql_fetch_assoc($result))

{

$rows[] = $row;

}

$tree = getTree();

//1.读取新闻分类

function getTree($pid = 0,$typeTree = array(),$level = 0){

$list = getList($pid);

foreach($list as $l){

$levelStr = '';

for($i=0;$i

$levelStr.='|-';

}

$levelStr .= '';//$levelStr = $levelStr.''

$l['name'] = $levelStr.$l['name'];

$typeTree[] = $l;

//逐层深入递归

$typeTree = getTree($l['id'],$typeTree,$level+1);//获取下一级分类

//$level 指子分类层级

}

return $typeTree;

}

function getList($pid = 0)

{

//按新闻分类表的  父id查找 子分类列表

$sql = "select * from news_categorys where parentid = '{$pid}' limit 100";

$query = mysql_query($sql);

if(!$query)

{

//有错报错

die(mysql_error());

}

$lists = array();

//在结果集里取一行

while($row = mysql_fetch_assoc($query))

{

$lists[] = $row;

}

return $lists;

}

?>

请选择新闻类别:

全部新闻

" =$op['id']==$_GET['categoryid']?'selected="selected"':''?>>=$op['name']?>

"/>

var_dump($rows);

?>

« First" title="Previous Page">« Previous

$number_head = '

$class = '" class="';

$title = '" title="';

$num_l = '">';

$num_r = '

';

$tail = '... ';

if($pages-5<=0){

for($i=1;$i<=$pages;$i++){

$current_class = ($i==$now_page)?'number current':'number';

echo $number_head.$i.$class.$current_class.$title.$i.$num_l.$i.$num_r;

}

}

if(($now_page-1<3) and ($pages-5>0)){

for($i=1;$i<=5;$i++){

$current_class = ($i==$now_page)?'number current':'number';

echo $number_head.$i.$class.$current_class.$title.$i.$num_l.$i.$num_r;

}echo $tail;

}

if(($now_page-1>=3) and ($pages-5>0) and (($pages-($now_page+2))<=0) ){

echo $tail;

for($i=4;$i>=0;$i--){

$j = $pages-$i;

$current_class = ($j==$now_page)?'number current':'number';

echo $number_head.$j.$class.$current_class.$title.$j.$num_l.$j.$num_r;

}

}

if(($now_page-1>=3) and ($pages-5>0) and (($pages-($now_page+2))>0) ){

echo $tail;

for($i=2;$i>=-2;$i--){

$j = $now_page-$i;

$current_class = ($j==$now_page)?'number current':'number';

echo $number_head.$j.$class.$current_class.$title.$j.$num_l.$j.$num_r;

}echo $tail;

}

?>

" title="Next Page">Next »" title="Last Page">Last »

 

《分组分页。。。》

header("Content-Type:text/html; charset=utf8");

mysql_connect("localhost","root","");

mysql_select_db("e1215_cms");

mysql_query("set names utf8");

$sql = "select * from  `news`";

$relust = mysql_query($sql);

if(!$relust)

{

die(mysql_error());

}

$total_num = mysql_num_rows($relust);

$per_num = 5;

$now_page = isset($_GET['now_page'])?$_GET['now_page']:1;

$offset = ($now_page-1) * $per_num;

$pages = ceil($total_num/$per_num);

$sql = "select * from `news` limit {$offset},{$per_num}";

echo $sql;

$relust = mysql_query($sql);

if(!$relust)

{

die(mysql_error());

}

$rows = array();

while($row = mysql_fetch_assoc($relust))

{

$rows[] = $row;

}

foreach($rows as $row)

{

echo $row['content'];

echo "
";

}

?>

var_dump($pages);

$show_num = 2;

$start = $now_page - ($show_num / 2);

$end = $now_page + ($show_num / 2);

$start = $start < 1?1:$start;

$end = $end > $pages?$pages:$end;

for($i=$start;$i<=$end;$i++):?>

=$i?>

$show_num = 4;

$start = $now_page - ceil($show_num/2);

$start = $start < 1 ? 1 : $start;

$end = $now_page + ceil($show_num/2);

$end = $end > $pages ? $pages : $end;

/*for($i=$start;$i<=$end;$i++):?>

=$i?>

代码重构:

header("Content-Type:text/html; charset=utf8");

//todo 1. 建一个新闻分类下拉框    关键字搜索文本框     提交按钮

//按分类  和  关键字  来搜索

//2.后台接受  分类id     关键字

$categoryid = isset($_GET['categoryid'])?$_GET['categoryid']:'';

$keyword = isset($_GET['keyword'])?$_GET['keyword']:'';

//3.连接数据库

mysql_connect('211.147.14.57','e1215cms_4','111111');

mysql_select_db('e1215cms_4');

mysql_query("set names utf8");

//5.增加查询条件

$where = ' where  1';

if($categoryid)$where  .= " and categoryid = '{$categoryid}'";

if($keyword)$where  .= " and title like '%{$keyword}%'";

//4.写sql查询语句

//先写 全部  查询   不带条件

$sql = "select  *  from   news  {$where}";

echo $sql;

//7.执行sql查询

$result = mysql_query($sql);

if(!$result)

{

die(mysql_error());

}

$rows = array();

while($row = mysql_fetch_assoc($result))

{

$rows[] = $row;

}

//6.调用新闻分类函数

include("news.fun.php");

$tree = getTree();

?>

全部新闻

 foreach($tree as $op):?>

" =$categoryid==$op['id']?' selected="selected"':''?>>=$op['name']?>

 endforeach;?>

"/>


 

 var_dump($rows)?>

function  pages()

{

}

//1.读取新闻分类

function getTree($pid = 0,$typeTree = array(),$level = 0){

$list = getList($pid);

foreach($list as $l){

$levelStr = '';

for($i=0;$i

$levelStr.='|-';

}

$levelStr .= '';//$levelStr = $levelStr.''

$l['name'] = $levelStr.$l['name'];

$typeTree[] = $l;

//逐层深入递归

$typeTree = getTree($l['id'],$typeTree,$level+1);//获取下一级分类

//$level 指子分类层级

}

return $typeTree;

}

function getList($pid = 0)

{

//按新闻分类表的  父id查找 子分类列表

$sql = "select * from news_categorys where parentid = '{$pid}' limit 100";

$query = mysql_query($sql);

if(!$query)

{

//有错报错

die(mysql_error());

}

$lists = array();

//在结果集里取一行

while($row = mysql_fetch_assoc($query))

{

$lists[] = $row;

}

return $lists;

}

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值