最近搞这个自动取消置顶的东西,非常之烦

一开始方案是采取读出两次数据 ,一组是置顶不过期数据,一组是所有数据。然后进行数组匹配,第二个数组中不在第一个数组的数据累加到第一个数组后头。当文章数目仅仅就10来篇的时候也就罢了,倘若上百篇,这么大的二维数组循环匹配太消耗资源。

想了想,还是放弃了这种方式,实在不可取。最终去在mysql手册中找了控制流程函数IF,终于解决了这个问题。

函数表达式:IF(expr1,expr2,expr3)
如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2; 否则返回值则为 expr3。IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。

举个例子就很好理解

mysql > SELECT IF(1>2,'yes ','no');
          > 'yes'

数据库表结构设计:

id: int(11)
title: varchar(255)
istop: tinyint(1) //这个是是否置顶:1表示置顶;0表示非置顶
topdeadline: int(10) //置顶截止时间,时间戳格式..
…… //更多的字段

PHP中操作Mysql:

//这里有额外的要求,当置顶截止时间为空时,代表永久置顶。
$timestamp = mktime(); //获取当前时间戳
//置顶为1时,截止时间大于当前时间或者 截止时间为0,定义一个字段为top为其赋值
$sql = "SELECT id, title,
IF(istop=1 AND (topdeadline>" . $timestamp . " OR topdeadline=0), 1, 0) AS top,1
FROM article ORDER BY id DESC";

在敏捷回顾会议中引导使用ORID

头一次接触ORID方法在2015年的一次敏捷回顾上,但是还不知道它,当天围坐在小会议室中通过该方法总结迭代开发经验,使我很有收获。ORID工作法很好理解,几乎一听就会,只是日常工作中我们总会选择更偷懒的方法,而忽略了总结过程中思考和逻辑的重要性。根据百度百科,ORID是一种...… Continue reading

生产环境Linux部署

Published on July 12, 2017

SVN 迁移到 GitLab

Published on June 17, 2017