
Mam przygotowany licznik js, pobieram wartość z bazy danych i chcę, aby jen js pokazywał mi przyrost co 1 sek.
Kod w php mam ptaki:
$mLA = $this -> db -> query('SELECT `rawMaterials`, `lastAction` FROM `users` WHERE `id` = '. $this -> account -> id .' ')->fetch(); $czas = $this -> init ->time - $mLA['lastAction']; if($czas > 0 ){ //obliczamy, ile surowca doliczyć za każdą sekundę $rawMat = 1; $this -> tmplData['variables']['upSur'] = $rawMat; $this -> tmplData['variables']['rawMaterials'] = $mLA['rawMaterials'] + ( $rawMat*$czas ); $this -> db -> exec('UPDATE `users` SET `rawMaterials`=( `rawMaterials`+ '. ( $rawMat*$czas ) .' ), `lastAction` = '. $this->init->time .' WHERE `id`='. $this -> account -> id .' LIMIT 1');
Wartości upSur i rawMaterials wysyłam do javascript, dokładnie do kodu:
function materials(ilosc,przyrost,surowiec){ var wynik = ilosc+przyrost; console.log(" ilość="+ilosc+", surka={{ rawMaterials }}"); $("#"+surowiec+"").html(wynik.toFixed()); // przypisanie tekstu timera do odpowiedniego elementu html setTimeout(function() { materials(wynik,przyrost,surowiec); }, 1000); } $(document).ready(function() { materials( {{ rawMaterials }}, {{ upSur }}, 'rawMaterials' ); });
I zegar zaczyna prawidłowo odliczać, ale niestety- po odświeżeniu strony zamiast "utrzymać" odliczona wartość- mam ją raz większą niż powinna być, raz mniejszą.
Teoretycznie przyrost ustawiłem na 1szt na sek- więc ile sekund upłynęło tyle powinno się doliczyć, a mimo to coś nie bangla, czy możecie mi podpowiedzieć, co nie działa właściwie?
Jak oceniacie, czy wg. was kod licznika jest prawidłowy czy nie do końca?
Teraz dodałem taki kod:
var surka = {{ rawMaterials }}; var przyrost = {{ upSur }}; function materials(){ surka = surka+przyrost; $("#rawMaterials").html(surka); }
i to wywołuję kodem:
setInterval( materials, 1000);
ale dalej to samo.

Wychodzi na to, że odliczanie php inaczej pracuje niz w javascriptcie, czy to możliwe?