Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Jak wyświetlić informacje która ważna jest w odpowiednim czasie.
brzanek
post
Post #1





Grupa: Zarejestrowani
Postów: 429
Pomógł: 0
Dołączył: 8.11.2012

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


Witam w bazie danych mam tabelę ostrzeżenia z terminem ważności.
Czyli ostrzeżenie ważne
Od 2015-10-23 04:00 do 2015-10-23 15:00
(IMG:http://s18.postimg.org/p9vwi6ieh/baza.png)
Jak na stronie wyświeltlić to ostrzeżenie ale tylko w momencie ważności ostrzeżenia. Czyli teraz jak mamy 2015-10-22 15:55 to ostrzeżenie nie pojawia się dopiero jak będzie 2015-10-23 04:00 i znika po upływie czasu 2015-10-23 15:00.
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




..where wart1 between wart2 and wart3 ?
Go to the top of the page
+Quote Post
brzanek
post
Post #3





Grupa: Zarejestrowani
Postów: 429
Pomógł: 0
Dołączył: 8.11.2012

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


Czyli czy odecna data wraz z godziną jest w przedziale ost_startdzien ost_startgodzina do ost_enddzien ost_endgodzina?
Ale jak stworzyć takie zapytanie?

Zrobiłem tak
  1. SELECT * FROM tabela_ostrzezenia WHERE date('Y-m-d') BETWEEN ost_startdzien AND ost_enddzien ORDER BY ost_id DESC LIMIT 1

Ale nie działa.
Go to the top of the page
+Quote Post
trueblue
post
Post #4





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


WHERE CURDATE()
Docelowo NOW(), a w warunkach CONCAT(data,' ',godzina)
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




uzywasz phpowego date() w mysql... php a mysql to dwie rozne rzeczy i nie wspoldziela metod
Go to the top of the page
+Quote Post
brzanek
post
Post #6





Grupa: Zarejestrowani
Postów: 429
Pomógł: 0
Dołączył: 8.11.2012

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


No jasne
  1. SELECT * FROM tabela_ostrzezenia WHERE CURDATE() BETWEEN ost_startdzien AND ost_enddzien ORDER BY ost_id DESC LIMIT 1

Dzięki

Oczywiście działa
Ale jak zrobić aby jeszcze w przedziale była godzina?
Teraz jest
  1. SELECT * FROM tabela_ostrzezenia WHERE CURDATE() BETWEEN ost_startdzien AND ost_enddzien ORDER BY ost_id DESC LIMIT 1

czyli od daty do daty. Jak do tego dołożyć jeszcze jednen warunek że od dnia tego i tej godziny do dnia tego i do tejgodziny.
w przedziale ost_startdzien ost_startgodzina do ost_enddzien ost_endgodzina?

Ten post edytował brzanek 22.10.2015, 16:26:26
Go to the top of the page
+Quote Post
trueblue
post
Post #7





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Wczoraj Ci podałem rozwiązanie.

P.S. Lepiej by było gdybyś datę i godzinę przechowywał w jednym polu.
Go to the top of the page
+Quote Post
brzanek
post
Post #8





Grupa: Zarejestrowani
Postów: 429
Pomógł: 0
Dołączył: 8.11.2012

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


Cytat(trueblue @ 23.10.2015, 16:34:29 ) *
Wczoraj Ci podałem rozwiązanie.

P.S. Lepiej by było gdybyś datę i godzinę przechowywał w jednym polu.

Wiem, że lepiej by było ale już nie chcę zmieniać tego w bazie.
PS. Możesz mi powiedzieć jak to zapisać bo coś mi nie wychodzi.

Zrobiłem tak ale nie działa
  1. SELECT * CONCAT(ost_startdzien, ost_startgodzina or ost_enddzien, ost_endgodzina) FROM tabela_ostrzezenia WHERE CURDATE() NOW() ORDER BY ost_id DESC LIMIT 1
Go to the top of the page
+Quote Post
trueblue
post
Post #9





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Zmieniasz tylko warunek, wszystko przed WHERE zostaje tak jak było. NOW() to data+godzina, zastąpi CURDATE().
Go to the top of the page
+Quote Post
brzanek
post
Post #10





Grupa: Zarejestrowani
Postów: 429
Pomógł: 0
Dołączył: 8.11.2012

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


No więc dałem tak
  1. SELECT * FROM tabela_ostrzezenia WHERE NOW() CONCAT(ost_startdzien, ost_startgodzina or ost_enddzien, ost_endgodzina) ORDER BY ost_id DESC LIMIT 1

Ale nie działa.
Go to the top of the page
+Quote Post
trueblue
post
Post #11





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Skoro wcześniej miałeś BETWEEN, to dlaczego teraz usunąłeś? Nadal przecież masz porównać obecny czas z przedziałem.
Go to the top of the page
+Quote Post
brzanek
post
Post #12





Grupa: Zarejestrowani
Postów: 429
Pomógł: 0
Dołączył: 8.11.2012

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


Tak też nie działa
  1. SELECT * FROM tabela_ostrzezenia WHERE NOW() CONCAT(ost_startdzien, ost_startgodzina or ost_enddzien, ost_endgodzina) BETWEEN ost_startdzien AND ost_enddzien ORDER BY ost_id DESC LIMIT 1
Go to the top of the page
+Quote Post
trueblue
post
Post #13





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


  1. SELECT * FROM tabela_ostrzezenia WHERE NOW() BETWEEN CONCAT(ost_startdzien,' ',ost_startgodzina) AND CONCAT(ost_enddzien,' ',ost_endgodzina) ORDER BY ost_id DESC LIMIT 1
Go to the top of the page
+Quote Post
brzanek
post
Post #14





Grupa: Zarejestrowani
Postów: 429
Pomógł: 0
Dołączył: 8.11.2012

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


Coś to nie chce mi zadziałać.
Go to the top of the page
+Quote Post
trueblue
post
Post #15





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


A czym się objawia niedziałanie?
Go to the top of the page
+Quote Post
brzanek
post
Post #16





Grupa: Zarejestrowani
Postów: 429
Pomógł: 0
Dołączył: 8.11.2012

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


Tym że przy takim zapytaniu
  1. SELECT * FROM ".DB_OSTRZEZENIA." WHERE NOW() BETWEEN ost_startdzien AND ost_enddzien ORDER BY ost_id DESC LIMIT 1

Działa ale tylko w przedziale daty a nie daty i czasu
(IMG:http://s27.postimg.org/4i4mmx7yb/image.png)
A przy tym
  1. SELECT * FROM ".DB_OSTRZEZENIA." WHERE NOW() BETWEEN CONCAT(ost_startdzien,' ',ost_startgodzina) AND CONCAT(ost_enddzien,' ',ost_endgodzina) ORDER BY ost_id DESC LIMIT 1

Nic się nie wyświetla.
(IMG:http://s18.postimg.org/8ayuex86h/image.png)

Ten post edytował brzanek 23.10.2015, 19:46:02
Go to the top of the page
+Quote Post
trueblue
post
Post #17





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


A jest w bazie rekord, dla którego aktualna godzina zawiera się w przedziale czasowym?
Go to the top of the page
+Quote Post
brzanek
post
Post #18





Grupa: Zarejestrowani
Postów: 429
Pomógł: 0
Dołączył: 8.11.2012

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


AJJJJ masz rację, miałem ustawione od 21:00 dzisiaj.
Dzięki za pomoc, plusik leci w twoją stronę.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 00:39