awek520
18.12.2014, 14:52:20
Witam.
Piszę taki mały skrypt polegający na odliczaniu czasu rzeczywistego.
Chodzi o to.. że gdy klikniemy np w link to wykona się zapytanie do bazy i skrypt zacznie odliczac czas (podany w bazie mysql)
W bazie będą dwa rekordy. Czas rzeczywisty zmieniający się po kliknięciu w link + drugi rekord z czasem np. 30min. (czas potrzebny do zmiany)
Po 30 min jakieś powiadomienie że czas się skończył + kolejne zapytanie do mysql że coś zostało zmienione.
Oczywiście odliczanie w js.
Czy można to tak zrobic?
Jak sie do tego zabrac.? W JS jestem bardzo slaby a potrzebuje tylko tego skryptu.
Pozdrawiam
rad11
18.12.2014, 15:38:34
Musisz w tym wypadku uzyc AJAX`a. Po kliknieciu w odnosnik dodajesz aktualnie klikniety czas i aktualny czas + 30minut. Mozesz dac warunek po kliknieciu ktory bedzie sprawdzac czy data aktulana >= data+30minut jesli sie rowna lub jest wieksze to wtedy robisz zmiane.
awek520
18.12.2014, 19:27:18
Mam taki kodzik:
<a href="?action=stacje&pts=1">241 - CZAS AKTUALNY</a>
<?php
if($_GET['pts']!=''){
if ($_GET['pts']==1){
$pociagi=mysql_query("SELECT * FROM pociagi WHERE gracz=$_SESSION[id] AND id = 241");
$czas_aktualny=date('Y.m.d, H:i:s'); $czas_potrzebny = date('Y.m.d, H:i:s', strtotime('+30 minutes'));
mysql_query("UPDATE pociagi SET czas_aktualny='$czas_aktualny', czas_potrzebny='$czas_potrzebny' WHERE id='241'"); echo '<br><br>Czas zmieniony <b>'.$czas_aktualny.'</b>
<br><br>
Pociąg dojedzie do celu o <b>'.$czas_potrzebny.'</b>';
}
}
?>
1. Chciałbym teraz się zapytac czy jak zmienie czas na kompie to czy tamten czas także sie zmieni?
2. I jak zrobic te odejmowanie czasu + zapytanie mysql.
3. Czy jesli ktoś nie bedzie zalogowany to czy zapytanie także dojdzie do celu ?
timon27
19.12.2014, 08:53:37
1. Nie, czas pobierany jest na serwerze.
2. Niepotrzebnie używasz funkcji date - zamienia ona czas unix na wersję "czytelną dla ludzi" która trudniej przetwarzać.
Uzyj time(), to po prostu odejmiesz te dwie liczby i będziesz miał wynik w sekundach. Funkcji date używaj tylko przy wyświetlaniu.
Reszta to logiczne myślenie.
3. tak, jeśli to nie jest w ifie sprawdzającym zalogowanie
awek520
19.12.2014, 13:00:28
Zmieniłem to na time.. no ale teraz pytanie jak to wyswietlic ? bo narazie to wyświetla w formie " Czas zmieniony 1418990376 "
Turson
19.12.2014, 13:03:04
Java !== Javascript
nospor
19.12.2014, 13:04:59
Niepotrzebnie zamieniales to na time... rzekome datetime wcale nie jest trudniejsze do przetwarzania...
No ale skoro juz zamieniles na time, to teraz przed wyswietleniem masz uzyc date() by zamienic to na wersje czytelną dla ludzi
awek520
19.12.2014, 13:19:10
Zrobiłem to trochę inaczej..
Oto kodzik:
<?php
if($czas_aktualny >= $czas_potrzebny) {
echo 'Czas dobiegł konca - edycja mysql'; }
else {
echo 'do konca czasu pozostało: ....'; }
?>
Chciałbym zapytac jeszcze jak obliczyc ten czas.. szukam po forach i nic.. a niby taki banał ; /
Yhy, działa tylko jak zmieniamy czas.. po odswieżeniu strony już nie działa ;/
rad11
19.12.2014, 13:22:37
Ten czas to ktory? potrzebny? Jak potrzebny to przeciez obliczales go i dodawales do bazy a czas aktualny to przeciez date("Y-m-d H:i:s").
awek520
19.12.2014, 13:24:52
Teraz to Cię nie rozumiem.. chciałem poprostu w if sprawdzic czy czas aktualny jest taki sam lub większy od czasu potrzebnego.. no ale nie bardzo się to udało
aa już chyba wiem.. jak zrobic zapytanie czas_potrzebny - czas_aktualny.. tak żeby wiedziec ile czasu pozostało do czas_potrzebny
rad11
19.12.2014, 13:35:22
Ale probujesz isc jak kon pod gore przeciez masz juz czas potrzebny do zmiany w bazie danych, porownuj go tak:
if(date('Y-m-d H:i:s') >= $czas_potrzebny){
}
a jesli zrobisz ta operacje o ktorej Ty mowisz to otrzymasz tylko roznice ktora pokazuje Ci ile zostalo do zmiany.
awek520
19.12.2014, 13:39:26
Ok zrobiłem tak jak napisałeś..
<?php
if(date('Y-m-d H:i') >= $czas_potrzebny){
}
else {
}
?>
Tylko mówię że gdy klikam jakąś podstronę to zamiast w tym momencie przez 30 min wyswietlac liczymy to wyświetla koniec
rad11
19.12.2014, 13:41:36
A co pokazuje var_dump($czas_potrzebny);
awek520
19.12.2014, 13:43:20
Pusty jest - NULL
rad11
19.12.2014, 13:44:40
No to masz odpowiedz na pytanie , a if dobrze pokazuje bo date('Y-m-d H:i:s') jest wieksze od NULL.
awek520
19.12.2014, 13:46:00
To czemu wyświetla się pusty jak dane są zapisane i wyświetlane dobrze ?
rad11
19.12.2014, 13:47:56
Moze dlatego
popraw na(usun przecinek i kropki):
awek520
19.12.2014, 13:51:44
No zmieniłem.. i przy aktualizacji dobrze "wypluwa" dane na var_dump no ale po przejsciu w inna na poprzednią stronę znów to samo.. i "koniec"
rad11
19.12.2014, 13:56:19
A czy na tej innej stronie tez sprawdzasz ten czas?
awek520
19.12.2014, 13:58:19
Chodzi mi o stronę główną - home.php
Ten skrypt znajduję się też na niej - tylko na _GET
To jest ta sama strona - więc powinno działac
rad11
19.12.2014, 14:01:19
Wklej caly nowy kod ktory sie znajduje w home.php
awek520
19.12.2014, 14:02:57
<a href="?action=stacje&pts=1">241 - CZAS AKTUALNY</a>
<?php
if($_GET['pts']!=''){
if ($_GET['pts']==1){
$pociagi=mysql_query("SELECT * FROM pociagi WHERE gracz=$_SESSION[id] AND id = 241");
$czas_aktualny=date('Y-m-d H:i');
mysql_query("UPDATE pociagi SET czas_aktualny='$czas_aktualny', czas_potrzebny='$czas_potrzebny' WHERE id='241'"); echo '<br><br>Czas zmieniony <b>'.$czas_aktualny.'</b>
<br><br>
Pociąg dojedzie do celu o <b>'.$czas_potrzebny.'</b>';
}
}
if(date('Y-m-d H:i') >= $czas_potrzebny){
echo 'koniec<br><br><br>'; }
else {
echo 'liczymy<br><br><br>'; }
?>
rad11
19.12.2014, 14:04:28
zrob var dumpa przed ifem i powiedz co pokazuje.
awek520
19.12.2014, 14:07:55
W tym _GET gdy klikam link wskazuje:
string(16) "2014-12-19 14:12"
- zmieniłem narazie czas na 5min
a w głownej podstronie null
rad11
19.12.2014, 14:11:25
Powiniennes pobrac czas potrzebny z bazy danych a nie ze zmiennej tak wogole sprobuj tak zrobic zobaczymy co dalej.
awek520
19.12.2014, 14:16:11
Działa : ) Niby takie proste

Mam jeszcze pytanie..
Czy można wyświetlic date i godzine z bazy ale bez sekund ?
'.$czas['czas_potrzebny'].'
rad11
19.12.2014, 14:17:14
Tak mozna:
Popraw na takie cos.
awek520
19.12.2014, 14:19:22
Dodałem też rok i date ale wyszlo coś takiego..
1970-01-01 01:33
PS.
Dziękuje bardzo.. wszystko dział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.