Mateostin
9.09.2016, 07:46:38
Witam, mam taki problem... Chce uzyskać taki efekt, że jak dodam wpis do MYSQL z funkcja automatycznego ustawienia daty oraz czasu to gdy wpis ma mniej niż 30 minut żeby wyświetlał się napis "NEW"
no i teraz tak... wiem ze to banalnie proste ale nie moge sobie z tym poradzic

Wpis dodaje i mam pole z data i czasem, natomiast nie mam pojecia jak zrobic ten warunek zeby spradził czy wpis ma mniej niz 30 minut.
bardzo prosze o pomoc
kapslokk
9.09.2016, 07:56:10
Pyton_000
9.09.2016, 07:56:29
eee...
if data_wpisu >= data - 30 min
lub
if data - data_wpisu <= 30
lukaskolista
9.09.2016, 09:09:09
Proszę:
<?php
// Tutaj wstaw wartość z kolumny w bazie danych
$dateFromDataBase = '2016-09-09 07:10:27';
$now = new \DateTime();
$date = new \DateTime($dateFromDataBase);
echo ($date >= $now->modify('-30 minutes')) ?
'NEW' : 'OLD';
Mateostin
9.09.2016, 10:31:17
Dziekuje CI bardzo, to rzeczywiście pomogło! alee czy zamiast NEW moge wstawic jakas zmienna ktora bedzie GIFem ?
bo nie moge wsadzic tam zmiennej, jest jakies rozwiazanie na to?
trueblue
9.09.2016, 10:35:58
A nie lepiej zrobić to od razu w zapytaniu?
SELECT *, DATE_ADD(czas, INTERVAL 30 MINUTE)>= NOW() AS nowy FROM tabela
lukaskolista
9.09.2016, 10:52:46
Nie lepiej, ponieważ przenosisz logikę związaną z wyświetlaniem informacji użytkownikowi do bazy danych, co już samo w sobie jest złe. Baza danych powinna być w miarę możliwości generyczna, a nie implementować jakieś detale związane zwłaszcza z UI.
trueblue
9.09.2016, 11:07:36
A co w tym złego jeśli nigdy nie będę zmieniał czasu określającego?
Jak będę chciał wybrać top 10 użytkowników ostatnio zalogowanych, to mam też wyciągać wszystkie rekordy z bazy?
Pyton_000
9.09.2016, 11:29:50
@trueblue tutaj raczej chodzi że taka operacja może być spokojnie przeprowadzona przy wyświetlaniu rekordu, ale już top10 to tak jak napisałeś, powinna być zrealizowana na bazie.
Chociaż ja osobiście też nie widzę wielkiego problemu ustalenia flagi na wynikach z BD (aczkolwiek zależy to od rozmiaru słownika)
trueblue
9.09.2016, 11:34:35
Pyton_000,
no, powinno, tyle, że implementacji stronicowania wyników jest tyle, ile silników bazodanowych (tak uogólniając). Trochę więc i w tym przypadku trudno zachować generyczność.
Rozumiem ideę, ale moim subiektywnym zdaniem, nie zawsze warto.
lukaskolista
9.09.2016, 13:06:32
@trueblue
Widzę, że nie czujesz żadnej różnicy pomiędzy ustawianiem po stronie bazy danych flagi służącej jedynie do wyświetlenia odpowiedniego GIFa na stronie, a implementacją logiki sortowania (niezbędnej do pobrania top X), która akurat musi być przeprowadzona po stronie bazy danych. Cóż, nie chciałbym przejąć po Tobie projektu.
trueblue
9.09.2016, 13:44:46
lukaskolista,
pisałem o stronicowaniu zapytań, które zgodnie z Twoją sugestią - zachowania zasad generyczności, nie jesteś raczej w stanie zapewnić.
Czyli implementacja zapytania SELECT * FROM tabela LIMIT 0,10 po stronie bazy danych, nie jest generyczna.
lukaskolista
9.09.2016, 13:50:01
Odniosłem się do Twojej analogii odnośnie tego, że robienie takich warunków po stronie bazy jest złym pomysłem:
Cytat
Jak będę chciał wybrać top 10 użytkowników ostatnio zalogowanych, to mam też wyciągać wszystkie rekordy z bazy?
Nie wiem co według Ciebie stronnicowanie ma do tego IFa. Z Twojej wypowiedzi jednoznacznie wynika, że nie ma różnicy.
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.