Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]wpis mniej niz 30 minut
Mateostin
post 9.09.2016, 07:46:38
Post #1





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 23.03.2016

Ostrzeżenie: (0%)
-----


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 sad.gif
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 sad.gif
Go to the top of the page
+Quote Post
kapslokk
post 9.09.2016, 07:56:10
Post #2





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


http://stackoverflow.com/questions/7636599...ates-in-minutes
Go to the top of the page
+Quote Post
Pyton_000
post 9.09.2016, 07:56:29
Post #3





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


eee...

if data_wpisu >= data - 30 min

lub

if data - data_wpisu <= 30
Go to the top of the page
+Quote Post
lukaskolista
post 9.09.2016, 09:09:09
Post #4





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

Ostrzeżenie: (0%)
-----


Proszę:
  1. <?php
  2.  
  3. // Tutaj wstaw wartość z kolumny w bazie danych
  4. $dateFromDataBase = '2016-09-09 07:10:27';
  5.  
  6. $now = new \DateTime();
  7. $date = new \DateTime($dateFromDataBase);
  8.  
  9. echo ($date >= $now->modify('-30 minutes')) ? 'NEW' : 'OLD';


Ten post edytował lukaskolista 9.09.2016, 09:46:40
Go to the top of the page
+Quote Post
Mateostin
post 9.09.2016, 10:31:17
Post #5





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 23.03.2016

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
trueblue
post 9.09.2016, 10:35:58
Post #6





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


A nie lepiej zrobić to od razu w zapytaniu?

  1. SELECT *, DATE_ADD(czas, INTERVAL 30 MINUTE)>= NOW() AS nowy FROM tabela



--------------------
Go to the top of the page
+Quote Post
lukaskolista
post 9.09.2016, 10:52:46
Post #7





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
trueblue
post 9.09.2016, 11:07:36
Post #8





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


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?


--------------------
Go to the top of the page
+Quote Post
Pyton_000
post 9.09.2016, 11:29:50
Post #9





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


@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)
Go to the top of the page
+Quote Post
trueblue
post 9.09.2016, 11:34:35
Post #10





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post
lukaskolista
post 9.09.2016, 13:06:32
Post #11





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

Ostrzeżenie: (0%)
-----


@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.
Go to the top of the page
+Quote Post
trueblue
post 9.09.2016, 13:44:46
Post #12





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post
lukaskolista
post 9.09.2016, 13:50:01
Post #13





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.04.2024 - 13:08