Diskuze: PHP date, odpočítavanie a zobrazovanie
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 8 zpráv z 8.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Riešenie cez AJAX bude pri viacerých časoch a každú sekundu extrémne náročné. Budeš rád, ak ti server potiahne pár používateľov.
Jediná možnosť, ktorá pripadá do úvahy je použiť JavaScript. Istotne sa nájde nejaká knižnica, ktorá to zvládne.
Dobre teda, A čo ten syntax odpočítania času ? Aktuálny - tento z db a jeho výpis ?
Na začiatku ten čas pošli ku klientovi presne tak ako ho máš uložený v DB a v browseri ho potom budeš počítať, či už nejakou knižnicou alebo si spravíš funkciu.
Ešte jedina mimotoázka Ako selectnem počet užívateľov z db ktorý majú posledný login do siedmych dní ? Takže vlastne niečo takéto ?
$sql5 = "SELECT * FROM tb_users WHERE last_login>NOW() do 7 dní";
Last login je čas kedy sa naposledy prihlásil. Ja chcem získať počet ľudí, čo sa na stránku prihlásili za posledných 7 dní Hľadám to už pol hodinku na gooogli ale nikde nevidím možnosť nastaviť ,,o´´
V PHP mám napísanú takúto funkciu:
function sub($interval, $datetime = '') {
if(empty($datetime))
$datetime = $this->now();
$time = strtotime('-' . $interval, strtotime($datetime));
return date($this->format, $time);
}
napr.
sub('7 day', time); // Odpocita 7 dni
ale dá sa to aj priamo v mysql query:
SELECT * FROM tb_users WHERE last_login >= DATE_SUB(NOW(), INTERVAL 30 DAY)
// Pre istotu tu dám celú triedu z PHP lebo tá funkcia sama o sebe nefunguje
<?php
/*
* wrinche. Modern, powerful and user friendly CMS.
* Computes date and time in MySQL format.
* Version: 0.1.4
* Authors: lamka02sk
*/
namespace App\Helpers;
class DateTime {
/**
* @var string
* Default datetime format
*/
public $format = 'Y-m-d H:i:s';
/**
* @param string $format
* Change the result datetime format
* @return bool
*/
public function setFormat(string $format) {
$this->format = $format;
return true;
}
/**
* @return false|string
* Return current datetime
*/
public function now() {
return date($this->format);
}
/**
* @param $interval
* @param string $datetime
* Subtract interval from current datetime
* @return false|string
*/
public function sub($interval, $datetime = '') {
if(empty($datetime))
$datetime = $this->now();
$time = strtotime('-' . $interval, strtotime($datetime));
return date($this->format, $time);
}
/**
* @param $interval
* @param string $datetime
* Add interval to current time
* @return false|string
*/
public function add($interval, $datetime = '') {
if(empty($datetime))
$datetime = $this->now();
$time = strtotime('+' . $interval, strtotime($datetime));
return date($this->format, $time);
}
}
To nebudes potrebovat v php, kdyz to posles na zacatku jak pise Samuel - vytisknes klientovi v php do nejake JS promenne, pripadne jako atribut nejakeho prvku, pak udelas u klienta setInterval a v nem odectes od planovaneho aktualni cas, vytisknes pomoci JS
Urobil som to jednoducho cez select - tam potrebujem selecnuť tieto veci len na titulnej stránke takže nato nepotrebujem takéto zložité funkcie Selectujem tam počet online hráčov, počet registrovaných a počet aktívnych. Predošlé veci som už mal ale tu nastal problém no ten interval pomohol Ono keby som to vedeľ ako sa to volá tak to nájdem hned Ale už budem vedieť do budúcnosti no Ďakujem
Zobrazeno 8 zpráv z 8.