poster_stat_model.class.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. defined('IN_PHPCMS') or exit('No permission resources.');
  3. pc_base::load_sys_class('model', '', 0);
  4. class poster_stat_model extends model {
  5. function __construct() {
  6. $this->db_config = pc_base::load_config('database');
  7. $this->db_setting = 'default';
  8. $this->table_name = 'poster_'.date('Ym');
  9. parent::__construct();
  10. if(!$this->db->table_exists($this->table_name)) {
  11. $this->create_table();
  12. }
  13. }
  14. /**
  15. * 按月份创建表
  16. */
  17. private function create_table() {
  18. $data_info = pc_base::load_config('database', $this->db_setting);
  19. $charset = $data_info['charset'];
  20. $sql = "CREATE TABLE IF NOT EXISTS `".$this->table_name."` (
  21. `id` int(10) unsigned NOT NULL auto_increment,
  22. `pid` smallint(5) unsigned NOT NULL default '0',
  23. `siteid` smallint(5) unsigned NOT NULL default '0',
  24. `spaceid` smallint(5) unsigned NOT NULL default '0',
  25. `username` char(20) NOT NULL,
  26. `area` char(40) NOT NULL,
  27. `ip` char(15) NOT NULL,
  28. `referer` char(120) NOT NULL,
  29. `clicktime` int(10) unsigned NOT NULL default '0',
  30. `type` tinyint(1) unsigned NOT NULL default '1',
  31. PRIMARY KEY (`id`),
  32. KEY `pid` (`pid`,`type`,`ip`)
  33. ) ENGINE=MyISAM DEFAULT CHARSET=".$charset." ;";
  34. $this->db->query($sql);
  35. }
  36. /**
  37. * 根据查询的日期,改变查询的表
  38. * @param string $tablename 表名
  39. */
  40. private function change_table($tablename = '') {
  41. if ($tablename) $this->table_name = $this->db_tablepre.'poster_'.$tablename;
  42. }
  43. /**
  44. * 获取所有广告统计表,并形成下来框
  45. * @param string $year 查询的月份
  46. * @return boolen/string
  47. */
  48. public function get_list($year = '') {
  49. $year = isset($year) ? $year : '';
  50. if($year) {
  51. $this->change_table($year);
  52. }
  53. $this->change_table($year);
  54. $diff1 = date('Y', SYS_TIME); //当前年份
  55. $diff2 = date('m', SYS_TIME); //当前月份
  56. $diff = ($diff1-2010)*12+$diff2;
  57. $selectstr = '';
  58. for($y=$diff;$y>0;$y--) {
  59. $value = date('Ym', mktime(0, 0, 0, $y, 1, 2010));
  60. if($value<'201006' || !$this->db->table_exists($this->db_tablepre.'poster_'.$value)) break;
  61. $selected = $year==$value ? 'selected' : '';
  62. $selectstr .= "<option value='$value' $selected>".date("Y-m", mktime(0, 0, 0, $y, 1, 2010));
  63. }
  64. return $selectstr;
  65. }
  66. }
  67. ?>