redxill
30.11.2019, 09:27:20
Witam,
w bazie mam 25 roznych dat oczywiscie format unixowy, w jaki sposob moge obliczyc roznice miedzy tymi czasami? Chodzi o roznice miedzy 1 i2, 2 i 3, 3 i 4, i tak az do 24 i 25
Nie wiem jak sie do tego zabrac, jest jakis poradnik, albo przynajmniej jakies slowa kluczowe dzieki ktorym nabiore wiecej informacji jak mam w ogole zaczac?
Prosze was o pomoc
Pozdrawiam
trueblue
30.11.2019, 09:47:44
Słowa kluczowe: pętla for, różnica dwóch elementów.
redxill
30.11.2019, 11:55:21
a co jesli bede mial nieokreslona liczbe czasow w bazie?
trueblue
30.11.2019, 11:57:21
To nadal te same słowa kluczowe.
Tomplus
30.11.2019, 12:59:19
to zamiast for, użyj foreach albo while
redxill
30.11.2019, 13:48:38
Metoda while mam wyjete wszystkie czasy z bazy:
$polacz = mysqli_query($db_conn,'SELECT * FROM `date` ');
while($row=mysqli_fetch_array($polacz)) {
echo $row['time'].'</br>'
}
1 czas 1574354720-- roznica do 2 czas = 3600
2 czas 1574351120-- roznica do 3 czas = 3600
...
24 czas 1574315120--roznica do 25 czas = 3600
25 czas 1574311520--
tego nie wiem jeszcze
teraz potrzebuje roznice jakos wydobyc z tej tabeli, z czasami, ale nie wiem dalej jak sie za to wziasc?
trueblue
30.11.2019, 14:22:23
A musisz pobierać po jednym wierszu?
Jest metoda mysqli_fetch_all. Pobierzesz wszystkie wiersze naraz. Pętla for przy ograniczeniu z count.
Różnica między wierszem i+1, a wierszem i. Nad ostatnią wartością nie ma się co zastanawiać, bo... jest ostatnia, więc nie ma już kolejnego, prawda?
viking
30.11.2019, 14:26:20
A dodatkowo na podstawie czego wyliczasz ten czas bo w zapytaniu nie ma żadnego order by więc wyniki są losowe.
redxill
30.11.2019, 14:42:43
To jest testowa tabela i nie ma w niej nic wiecej, z pewnoscia w przyszlosci bedzie conajmniej oder by id.
Nie chce pobierac po jednym wierszu tylko wzystkie danego typu, wyswietlana jest teraz cala lista od 1 do 25 i potrzebuje dodac kolumne z boku jaka jest roznica miedzy kazdym nastepnym czasem, bedzie to bodajrze czas logowania?

Chodzi o to jak mam rozbrac te $row['time'] na pojedyncze i obliczyc roznice miedzy nimi?
trueblue
30.11.2019, 14:56:39
Już Ci napisałem.
Pobierasz wszystkie wiersze poprzez mysqli_fetch_all. Pętlę tworzysz od 0 do count($tablica).
W pętli obliczasz różnicę między następnym elementem, a aktualnym.
viking
30.11.2019, 16:17:06
CREATE TABLE IF NOT EXISTS `docs` (
`id` int(6) UNSIGNED NOT NULL,
`date` timestamp NOT NULL,
PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;
INSERT INTO `docs` (`id`, `date`) VALUES
(1, '2019-11-30 15:10:28'),
(2, '2019-11-29 14:15:33'),
(3, '2019-11-28 22:22:12'),
(4, '2019-11-27 09:09:41'),
(5, '2019-11-26 12:15:18');
SELECT
*,
TIMESTAMPDIFF(MINUTE,
(SELECT MAX(date) FROM docs WHERE date < t.date),
date
) AS minutediff
FROM docs AS t
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.