php příkaz pro součet stažení pouze za posledních 14dní
- ricardo15
- Člen | 5
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
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
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
Stačí přidat další where podmínku. Něco ve stylu:
->where("FSD.created >= %i", (new \DateTime("- 14 days"))->getTimestamp())
- Mysteria
- Člen | 797
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.