瞎弄一上午,最终把本来用js实现随机标题变成数据库读取随机标题。
我这里读的数据是平时的一句话Twitter ,相对于之前从js文件随机读取,现在明显就比较灵活和方便,只是添加了点服务器的压力。
下面是之前js随机标题的示例代码:
<script>
//指定条目数
tips = new Array(2);
//条目内容
tips[0] = 'All things are difficult before they are easy.' ;
tips[1] = '人类最大的错误,在于不敢承担圣人的心。' ;
tips[2] = '妇女能顶半边天。' ;
index = Math.floor(Math.random() * tips.length);
window.document.title += " - "+tips[index];
</script>
其中tips数组可以自己扩展,相对的更改Array(*)就ok!
因为觉得如果一旦这些tips多了,上千条上万条,那这样子js文件相对也大起来了,还不如从数据库读取。
下面是从数据库随机读取的关键代码:
/**随机标题**/
function titletip() {
$count =$this->db->fetch_row($this->db->query ( "SELECT count(*) FROM emlog_twitter " ));//统计记录数
$rad =mt_rand(1,$count[0]); //随机一个$rad
$result =$this->db->query ("SELECT * FROM emlog_twitter where id=". $rad );
$row = $this->db->fetch_array($result );
$tip =$row['content'];
return $tip ;
}
//$this->db是我new 的一个 new MySql(DB_HOST, DB_USER, DB_PASSWD,DB_NAME);
这样只要在view里调用titletip()方法就可以得到随机的一条标题了!
$blogtitle = $blogtitle.' - '.$titletip;
这样子就能实现我们所要的功能了,平时唠叨的一句话Twitter就可能随机成为标题,
但就是有一个问题,如果删除某条Twitter后,它的这个ID是占着的,如果凑巧随机到这个ID,那么显示的内容就是空了,所以还要在数据库处理,是删除后的ID内容不为空。
12 月1号更新 :在网上看到SELECT * FROM emlog_twitter order by rand() limit 1
因此可以把之前的
function titletip() {
$count =$this->db->fetch_row($this->db->query ( "SELECT count(*) FROM emlog_twitter " ));//统计记录数
$rad =mt_rand(1,$count[0]); //随机一个$rad
$result =$this->db->query ("SELECT * FROM emlog_twitter where id=". $rad );
$row = $this->db->fetch_array($result );
$tip =$row['content'];
return $tip ;
}
改为
function titletip() {
$result =$this->db->query (" SELECT * FROM emlog_twitter order by rand() limit 1 “ );
$row = $this->db->fetch_array($result );
$tip =$row['content'];
return $tip ;
}
经测试可行,节省一条数据库查询
这篇文章有1条评论