PHP世纪论坛

 找回密码
 立即注册
搜索
查看: 317|回复: 0

Thinkphp 后台文章置顶 方法 个人总结 感觉 不是太好

[复制链接]

12

主题

12

帖子

108

积分

版主

Rank: 7Rank: 7Rank: 7

积分
108
发表于 2016-9-23 18:40:09 | 显示全部楼层 |阅读模式

Tinkphp 文章置顶

HTML
<tr>
  <td>{$i}</td>
  <td>{$vo.info_title}</td>
  <td>{$vo['info_time']|date='Y-m-d',###}</td>
  <td>
    <a title="置顶" class=" btn btn-mini btn-info js_edit" href="{:U("admin/new/update?id=$vo[id]&&top=1")}">置顶</a>
    <a title="编辑" class=" btn btn-mini btn-info js_edit" href="{:U("admin/new/update?id=$vo[id]")}">编辑</a>
    <a title="删除" class=" btn btn-mini btn-danger js_del" href="{:U("admin/new/del?id=$vo[id]")}">删除</a>
  </td>
</tr>

PHP
$query = $info->where("id=$id")->select();
$num = $query[0]['istop'];//查询 数据库 istop的值

$query = $info->order('istop desc')->limit(1)->select();
$maxval = $query[0]['istop']; //查询数据库 istop 最大的值

/*
第一种情况:

如果$num 的值为 0  ,说明该字段没有被设置过。
修改这条记录istop值,数据表中istop的最大值加一
查询这一条数据按istop排序。

*/
if ($num == "0") {
    $info->query("update b_info set istop = $maxval + 1 where id ='$id'");
    $list = $info->query('select * FROM (SELECT * FROM b_info ORDER BY istop DESC)b_info WHERE info_type= 1 ORDER BY istop DESC');
    $this->assign('list', $list);
    $this->display('index');
/*
另一种情况:

就是已经设置过置顶的文章 istop的值肯定不会为0;
所以必须还要处理被设置过得文章。
同样 如果istop 不等0,那么查询数据表中istop最大值
然后修改这最大值加一,
然后在按istop进行排序

*/
} elseif ($num != "0") {
    $info->query("update b_info set istop = $maxval + 1 where id ='$id'");
    $list = $info->query('select * FROM (SELECT * FROM b_info ORDER BY istop DESC)b_info WHERE info_type= 1 ORDER BY istop DESC');
    $this->assign('list', $list);
    $this->display('index');
}



第二种文章置顶的方法

1、数据库中设置一个mtime(修改时间)
    当修点击置顶按钮时更新mtime字段。
注:时间格式为 Y-m-d H:i:s;
2、每次点击更新按钮进行更新mtime字段,然后按更新时间排序。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|PHP世纪论坛 ( 豫ICP备15004666号-2 )

GMT+8, 2018-6-25 08:09

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表