viamarimar
2.12.2016, 21:17:43
Chce odliczyć 60min od teraz
60 min minie za:
<?php
$data_now = date("02-12-2016 21:16:00");
?>
Problem w tym że efekt tego kodu to:
60 min minie za: 68 ...
a chce by bylo w dół 53 ,.. 32 aż do 0. Nie za bardzo widze problem w tym kodzie? Ktoś wie co nie tak?
nospor
2.12.2016, 22:32:02
Nie sadzisz, ze godzine wypadaloby dodawac do twojego czasu bazowego - od tej wartosci odejmowac czas aktualny? 2 sekundy pomyslynku
viamarimar
2.12.2016, 23:02:47
$data_now = date("Y-m-d G:i:s");
O to ci chodzi? Chyba nie..
nospor
2.12.2016, 23:05:45
Napisalem dokladnie co masz zrobic. Po prostu to zrob. To naprawde jest proste, masz napisane krok po kroku. Wpierw zrealizuj pierszy, potem drugi i tak po malu do mety
viamarimar
2.12.2016, 23:13:07
//dodaje +1 godzine do bazowego, czyli tego czasu narzuconego?
//czas aktualny
$data_now = date("Y-m-d G:i:s");
//od tej wartosci odejmowac czas aktualny ? (od czasu bazowego odejmuje czas aktualny)
//wynik chcialbym w minutach.
W ktorym kroku jest blad? W odejmowaniu czasu?
Niree
2.12.2016, 23:14:39
Co Ty tworzysz

Cytat
Chce odliczyć 60min od teraz
Jeżeli chcesz odliczyć czas co np. minutę, to musisz albo uruchomić CRON albo użyć JS.
nospor
2.12.2016, 23:15:20
Czego w tym zdaniu
Cytat
godzine wypadaloby dodawac do twojego czasu bazowego
nie rozumiesz?
Niree
2.12.2016, 23:19:24
Cytat(nospor @ 2.12.2016, 23:15:20 )

Czego w tym zdaniu
nie rozumiesz?
To i tak do niczego nie prowadzi. On chce wynik "minie za:", a nie "minie o godzinie:". A do tego potrzeba JS, który wykonywałby co minutę pomiar aktualnego czasu i odejmował od tego.
viamarimar
2.12.2016, 23:20:02
Wystarczy mi to bez odświeżania zrobić.
Chce minie za np 22min ale po odsiwezeniu za 21 np.
Wiec nie wydaje mi sie zeby tu byl CRON czy js potrzebne.
Tylko czy musze z bazy korzystac zeby ta informacja co min sie odswiezala i wyswietla?
nospor
2.12.2016, 23:21:11
@NIree i to mu wlasnie podalem. Przeczytaj caly algorytm a nie tylko pierwszy krok.... Kurcze, piatek i wszyscy wylaczaja myslenie czy jak?
Niree
2.12.2016, 23:22:35
Wynik: 2016-12-2 00:22:00 (biorąc pod uwagę, że aktualnie jest godzina 23:22).
nospor
2.12.2016, 23:24:52
@Niree ale to do kogo bylo? Bo ani to do mnie ani do autora watku. Na glos myslisz czy jak ?
Niree
2.12.2016, 23:25:02
Cytat
Tylko czy musze z bazy korzystac zeby ta informacja co min sie odswiezala i wyswietla?
Odświeżanie 'live' zrobisz tylko w JS i to jeszcze z ajaxem.
Musiałbyś zapisywać czas wejścia na stronę do bazy oraz zarejestrować każde kolejne wejście. Potem tylko sprawdzać z bazy, czy minęło te 60 minut od ostatniego wejścia (nawet odświeżenia strony), a jak nie to wyświetlać pozostały czas.
@nospor, może nie załapałem wątku
viamarimar
2.12.2016, 23:34:29
Już pisałem nie chce live, nie chce odświeżenia.
Mam date A(stała/narzucona) i date B(teraz). Chce obliczyc czas pomiedzy jedna i druga. Wynik wyswietlic w minutach. Po kliknieciu klawisza F5, zeby dalej sprawdzalo czy roznica jeszcze nie jest d1<=d2 a wtedy ma liczyc od nowa. Czy te zapisy powinny byc w bazie robione, czy bez bazy bedzie sie to kasowac? No i jak to wyliczyc?
Majac taki kod:
$result = round(($data - $data_now) / 60
,0
);
Dostaje zwrot:
-437782 //unix timestamp
jak ztobic z tego ilosc min pomiedzy dwoma datami?
nospor
3.12.2016, 00:01:39
Podalem ci gotowy algorytm na to a ty usilnie go ignorujesz
viamarimar
3.12.2016, 00:14:26
Nie ignoruje, aczkowilek nie dociera on do mnie.
nospor
3.12.2016, 00:15:44
Temu zapytalem sie czego nie rozumiesz w kroku pierwszym. Do tej pory nie uzyskalem na to odpowiedzi
viamarimar
3.12.2016, 00:22:07
Cytat
Nie sadzisz, ze godzine wypadaloby dodawac do twojego czasu bazowego - od tej wartosci odejmowac czas aktualny?
Rozpisalem jak ja to widze.
1. godzine dodac do twojego czasu - chodzi o do ze mam ten jakis czas XX-XX-XXX XX:XX:XX np ta 21...i sorttime dodac +1? ok..
2. .. - od tej wartosci odjac czas aktualnu -od jakiej wartosci, tej powyzej? no ok, juz to robilem, byc moze nawert dobrze.
3. sorttotime(data) - sortotime(data) wychodzi czas w unix, jak zaminic go na min? bo o ten efekt chodzi
nospor
3.12.2016, 00:26:30
tylko widzisz, ty do tej pory caly czas dodajesz godzine do aktualnego czasu a nie do czasu bazowego. Nadal nie pokazales kodu, gdzie dodajesz godzine do czasu bazowego...
Jak zamienic sekundy na minuty? Kurcze, idz spac bo twoje szare komorki juz dawno spia :/
viamarimar
3.12.2016, 00:31:36
//dodanie do kodu bazowego? bazowy to dla ciebie ta data wpisywana?
//może masz racje przespie sie z problemem..
ah jesli o tamto chodzilo
$data = strtotime("2016-02-02 23:49:00"); //to bazowe z poprzedniego przykladu, tylko zmieniam sobie dane, zeby rozncia przy odejmowaniu byla mniejsza
Niree
3.12.2016, 01:06:24
Może podaj tą datę bazową i czas :-)
viamarimar
3.12.2016, 22:34:37
Siadając dziś do problemu na świeżo, zrobiłem od razu. Jednakże rzeczywiście mam problem z tym co ty Niree wspomniałeś już wczoraj.
Tzn. Mamy 60min czas leci 60 50... 20 10.. itd. nastepuje 0 w bazie robi sie update na dacie ( bo tak to sobie umyslilem, ze data bazowa jest przechowywana w kolumnie w bazie), aczkolwiek by wykonac update trzeba odświeżyć stronę.
Pytanie jak wykonac UPDATE w js( bo wspomniales ze tak sie da) bez uzycia CRONA? Co 60min, ew jak uruchomic skrypt co 60min z pomoca js? Da sie tak?
SmokAnalog
3.12.2016, 23:34:51
Przede wszystkim powiedz co chcesz zrobić, co robi Twój skrypt. Bez technicznych szczegółów, opowiedz o projekcie.
A to dlatego, że być może pomysł na odświeżanie z poziomu JS jest zły dla Twojego projektu. A może wcale nie.
Pyton_000
4.12.2016, 10:30:24
A po co w JS. Przy kolejnym odświeżeniu sprawdzasz czy ilość min wyliczona <0, jeśli tak to robisz update w BD zapisując swoją datę bazową + 60 min, i operujesz już na nowej danej.
Niree
4.12.2016, 16:05:21
Podaj aktualny kod, jaki masz.
viamarimar
5.12.2016, 14:29:48
Obecnie mam coś takiego:
<div class="container">
<?php
$query1= "SELECT * FROM `set`";
$result= mysqli_query
($link,$query1) or
die(mysqli_error
()); $row = mysqli_fetch_array($result);
$data_now = date("Y-m-d H:i:s"); // czas aktualny
$result = $data_base_s - $data_now_s;
$stay = abs($expire - 60
) ;
if($data_base_s <= $data_now_s && $expire<=60){
echo "Mineło: ". $expire; echo "Do końca tury zostało: ". $stay;
}
else{
$query1= "SELECT rok FROM `set`";
$result= mysqli_query
($link,$query1) or
die(mysqli_error
()); $row = mysqli_fetch_array($result);
$v = $row['rok']+1;
$query1 = "UPDATE `set` SET data = NOW() ,rok=(".$v.")";
$result= mysqli_query
($link,$query1) or
die(mysqli_error
()); }
//38 37 36 ..
//1 2 3
?>
</div>
Kluczowe było wyznaczenie tej linijki:
echo "Do końca tury zostało: ". $stay;
Czyli wlasnie odliczanie do tylu
//38 37 36 .. Co godzine od nowa
Cała idea:
Gdy zmienia sie tura co 60 min, zmienia sie rok +1 a tura zaczyna od nowa liczyc 60 min w dol.
Na ten moment wymyslilem
<meta http-equiv="refresh" content="3600">
aczkolwiek ten sposob jest slaby chyba.
nospor
5.12.2016, 14:34:58
$data_base = date($row['data'],strtotime("1 hours",time())); //czas bazowy
Ale zdajesz sobie sprawe, ze ty nadal dodajesz godzine do czasu aktualnego a potem jako format dla date() podstawiasz date bazowa? Ta linijka nie ma zadnego sensu, rownie dobrze mogles napisac:
$data_base = $row['data'];
co da identyczny efekt.
viamarimar
5.12.2016, 17:50:40
Tak, zobaczyłem to printujac zawartości zmiennych. Chodzi mi teraz bardziej o to jak z tym odświeżaniem tego zadziałać.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.