php příkaz pro součet stažení pouze za posledních 14dní

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
ricardo15
Člen | 5
+
0
-

Zdravím,
potřeboval bych pomoci s úpravou kódu pro zobrazení záznamů s největším počtem pouze za posledních 14 dní.

<?php

public function getTopDownloads($limit = 20)
    {
        return $this->dibi->select("F.*, COUNT(FSD.id) as total_downloads, FROM_UNIXTIME(FSD.created, '%d/%m/%Y %h:%m:%s') as created")
            ->from("fangates F")
            ->leftJoin("fangates_stats_downloads FSD")
            ->on("F.id = FSD.fangates_id")
            ->where('F.sample_packs = %i', FALSE)
            ->orderBy("total_downloads")->desc()
            ->groupBy("F.id")
            ->fetchAll(NULL, $limit);
    }
?>

Do této funkce bych potřeboval zakomponovat, aby zobrazil pouze záznamy s největším počtem stažení za posledních 14 dní.

Najde se někdo kdo pomůže?
Děkuji

Editoval ricardo15 (18. 1. 2016 9:51)

Mysteria
Člen | 797
+
0
-

Bez struktury databáze ti těžko někdo poradí. Nicméně, jestli jsme to správně pochopil, tak abys mohl dělat nejvyšší počet stažení za posledních X dní, tak bys musel mít nějakou tabulku, kde by sis evidoval datumy a časy všech stažení pro všechny soubory. Z toho by to pak šlo získat.

ricardo15
Člen | 5
+
0
-

Díky za odpověď, struktura tabulky je níže:

tabulka fangates (hlavní tabulka s záznamy pro stažení)
id, name, slug, active, created, file_url, sample_packs

tabulka fangates_stats_downloads (druhá tabulka evidující jednotlivá stažení)
id, ip, created, fangates_id

created je int atribut do kterého se zapisuje funkce php time()

Editoval ricardo15 (18. 1. 2016 9:50)

pata.kusik111
Člen | 78
+
0
-

Stačí přidat další where podmínku. Něco ve stylu:

->where("FSD.created >= %i", (new \DateTime("- 14 days"))->getTimestamp())
ricardo15
Člen | 5
+
0
-

Díky moc

Mysteria
Člen | 797
+
+1
-

To ale není to samé ne? Je rozdíl mezi nejvíce stahovanými soubory za posledních 14 dní (tzn. ze všech souborů se vezme kolikrát byly staženy za posledních 14 dní) a mezi nejvíce stahovanými soubory mladší než 14 dní (tzn. vzít jenom soubory mladší 14 dní a seřadit je dle počtu stažení).
Já odpovídal na první variantu, kolega výše odpověděl na tu druhou.

ricardo15
Člen | 5
+
0
-

Ano, to je pravda, ale FSD.created je hodnota času stažení, takže si myslím, že je to tak správně, tozn. největší počet stažení za posledních 14 dní.