PHP& MySQL - 如何按天计算访问量

时间:2017-01-20 16:47:41

标签: php mysql joomla

我找到了一张名为#__products_visits的表来记录访问次数。其结构是:

id
product_id
product_name
date

计数器脚本在访问时插入记录。因此,每行代表数据库的单次访问。现在,我想计算白天的访问次数,并按天获取访问次数。这是一个Joomla!组件,所以查询最好是在Joomla!类。

限制位的WHERE条件切换器:

$date_range = $_REQUEST['date'];

switch($date_range) {
    case 1:
    $scope = ' >= DATE_SUB(CURDATE(), INTERVAL 1 DAY)';
        break;
    case 2:
    $scope = ' >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)';
        break;
    case 3:
    $scope = ' >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)';
        break;
    case 4:
    $scope = ' >= DATE_SUB(CURDATE(), INTERVAL 365 DAY)';
        break;
    case 5:
    $scope = ' <= CURDATE()';
        break;
    default:
    $scope = ' >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)';
    break;
}

到目前为止我选择的函数:

// Count cart rows
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query
    ->select('*')
    ->from($db->quoteName('#__product_visits'))
    ->where($db->quoteName('date') . $scope);
$db->setQuery($query);
$results = $db->loadObjectList();
// And here is where I've been stopped :-)

2 个答案:

答案 0 :(得分:1)

如果你的日期是&#39;是一个真正的日期类型变量,这是有效的 - 不知道你对INTERVALS做了什么

SELECT date_format(`date`,'%Y-%m-%d') as DateVisited, count(*) from #__products_visits group by DateVisited

答案 1 :(得分:0)

用户3741598的帮助我认为的方式是:

$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query
    ->select('date_format(`date`,"%Y,%m,%d") as DateVisited, COUNT(*) as row')
    ->from($db->quoteName('#__product_visits'))
    ->where($db->quoteName('date') . $scope)
    ->group($db->quoteName('DateVisited'));
$db->setQuery($query);
$results = $db->loadObjectList();

然后我用foreach

中提取了组数
$x = $result->DateVisited;

以及每个群组的访问次数:

$y = $result->row;