Skip to main content

Bug du module de statistiques – Prestashop

 |  Administrator
Module statistique et Prestashop

Le module de statistique « Visiteurs en ligne » de Prestashop comporte une erreur au niveau de la requête SQL qui ne renvoi donc aucun résultats.

Pour corriger le problème remplacez les 2 fonctions du fichier modules/statslive/statslive.php :

private function getCustomersOnline()
    {
        return Db::getInstance()->ExecuteS('
        SELECT u.id_customer, u.firstname, u.lastname, pt.name as page
        FROM `'._DB_PREFIX_.'connections` c
        LEFT JOIN `'._DB_PREFIX_.'connections_page` cp ON c.id_connections = cp.id_connections
        LEFT JOIN `'._DB_PREFIX_.'page` p ON p.id_page = cp.id_page
        LEFT JOIN `'._DB_PREFIX_.'page_type` pt ON p.id_page_type = pt.id_page_type
        INNER JOIN `'._DB_PREFIX_.'guest` g ON c.id_guest = g.id_guest
        INNER JOIN `'._DB_PREFIX_.'customer` u ON u.id_customer = g.id_customer
        WHERE cp.`time_end` IS NULL
        AND TIME_TO_SEC(TIMEDIFF(NOW(), cp.`time_start`)) < 900
        GROUP BY c.id_connections
        ORDER BY u.firstname, u.lastname');
    }
   
    private function getVisitorsOnline()
    {
        return Db::getInstance()->ExecuteS('
        SELECT c.id_guest, c.ip_address, c.date_add, c.http_referer, pt.name as page
        FROM `'._DB_PREFIX_.'connections` c
        LEFT JOIN `'._DB_PREFIX_.'connections_page` cp ON c.id_connections = cp.id_connections
        LEFT JOIN `'._DB_PREFIX_.'page` p ON p.id_page = cp.id_page
        LEFT JOIN `'._DB_PREFIX_.'page_type` pt ON p.id_page_type = pt.id_page_type
        INNER JOIN `'._DB_PREFIX_.'guest` g ON c.id_guest = g.id_guest
        WHERE (g.id_customer IS NULL OR g.id_customer = 0)
        AND cp.`time_end` IS NULL
        AND TIME_TO_SEC(TIMEDIFF(NOW(), cp.`time_start`)) < 900
        GROUP BY c.id_connections
        ORDER BY c.date_add DESC');
    }

Par :

private function getCustomersOnline()
    {   
        $today = date('Y-m-d H:i:s');
        return Db::getInstance()->ExecuteS("
        SELECT u.id_customer, u.firstname, u.lastname, pt.name as page
        FROM `"._DB_PREFIX_."connections` c
        LEFT JOIN `"._DB_PREFIX_."connections_page` cp ON c.id_connections = cp.id_connections
        LEFT JOIN `"._DB_PREFIX_."page` p ON p.id_page = cp.id_page
        LEFT JOIN `"._DB_PREFIX_."page_type` pt ON p.id_page_type = pt.id_page_type
        INNER JOIN `"._DB_PREFIX_."guest` g ON c.id_guest = g.id_guest
        INNER JOIN `"._DB_PREFIX_."customer` u ON u.id_customer = g.id_customer
        WHERE cp.`time_end` IS NULL
        AND TIME_TO_SEC(TIMEDIFF('".$today."', cp.`time_start`)) < 900
        GROUP BY c.id_connections
        ORDER BY u.firstname, u.lastname");
    }
   
    private function getVisitorsOnline()
    {
        $today = date('Y-m-d H:i:s');
        return Db::getInstance()->ExecuteS("
        SELECT c.id_guest, c.ip_address, c.date_add, c.http_referer, pt.name as page
        FROM `"._DB_PREFIX_."connections` c
        LEFT JOIN `"._DB_PREFIX_."connections_page` cp ON c.id_connections = cp.id_connections
        LEFT JOIN `"._DB_PREFIX_."page` p ON p.id_page = cp.id_page
        LEFT JOIN `"._DB_PREFIX_."page_type` pt ON p.id_page_type = pt.id_page_type
        INNER JOIN `"._DB_PREFIX_."guest` g ON c.id_guest = g.id_guest
        WHERE (g.id_customer IS NULL OR g.id_customer = 0)
        AND cp.`time_end` IS NULL
        AND TIME_TO_SEC(TIMEDIFF('".$today."', cp.`time_start`)) < 900
        GROUP BY c.id_connections
        ORDER BY c.date_add DESC");
    }

Souscrire à Notre Lettre d’Information