这样的数据库表示,可以实现吗??//可以还有如何实现24小时内的同一IP点击只算一次 //同一IP+cookie(设定24小时)/+用户信息

解决方案 »

  1.   

    程序首先取今日的日期,并记录在今日浏览量这个字段内,每次向表里面插入数据的时候,与表内的日期做比较,如果不相同,将今日浏览量的数据复制到昨日浏览量这个字段,今日浏览量置为1.表结构:
    表名:hitCount
    name(栏目名称),todayHitCount(昨日访问量),yesterdayHitCount(今日访问量),dateNow(当前日期)$date = date("Y-m-d");
    $sql = "select * from hitCount";/*以下为查询代码,略*/
    ...
    $hitCount为查询出的记录集
    /**/if($hitCount['dateNow'] != $date){
      $sql_insert = "insert into hitCount(`yesterdayHitCount`) values('".$hitCount['dateNow']."')";
      mysql_query($sql);
      $sql_update = "update hitCount set todayHitCount = 1";
    }
      

  2.   

    todayHitCount(昨日访问量),yesterdayHitCount(今日访问量)这个写反了.以上代码仅供参考,实际你查日期的时候还要where一下你所插入的栏目名称
      

  3.   

    感谢~~~ 只是 dateNow 如何更新的问题如果它 取 date("Y-m-d");的值 则不会出现 $hitCount['dateNow'] != $date 的状态
      

  4.   

    上面有个insert用错了.应该用update.首先,你先将所有栏目名称insert好.比如有这2条数据.
    name(栏目名称)|todayHitCount(今日访问量)|yesterdayHitCount(昨日访问量)|dateNow(当前日期)
    yahoo         |0                        |0                            |2007-02-08
    sina          |0                        |0                            |2007-02-08
    当有用户访问yahoo了,你先select这个表,从记录集里面取出这个$hitCount['dateNow'],也就是2007-02-08,与date("Y-m-d")比较一下,如果相等,直接update一下yahoo这条数据的todayHitCount字段.
    "update hitCount set `todayHitCount` = `todayHitCount`+1 where name = 'yahoo'";
    如果不相等的话,就证明已经过了一天了,那么就update下yesterdayHitCount,将它的值改为todayHitCount的.然后将todayHitCount字段置为1并且将dateNow这个字段置为date("Y-m-d")."update hitCount set `todayHitCount` = 1,`yesterdayHitCount` = ".$hitCount['todayHitCount'].",`dateNow` = ".date('Y-m-d')";这样就可以了.date("Y-m-d")总是在变的,而字段dateNow是不可能总与他相等的.
      

  5.   

    最后这个也需要加个where name = 'yahoo';我最近老是丢三落四的."update hitCount set `todayHitCount` = 1,`yesterdayHitCount` = ".$hitCount['todayHitCount'].",`dateNow` = ".date('Y-m-d') where name = 'yahoo'";