实现随机标题

瞎弄一上午,最终把本来用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 ;
 }

经测试可行,节省一条数据库查询

10

这篇文章有1条评论

发表评论