![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 44 Pomógł: 1 Dołączył: 12.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Chciałbym cyklicznie (co roku) wyświetlać z bazy danych "jakiś tekst" w określonym terminie, np.: - od 01 września do 01 listopada; - od 10 grudnia do 30 stycznia. Proszę o przykład skryptu, który by to wykonał. Pozdrawiam. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
w bazie dać termin wyświetlanai od do i do warunku wrzucić
limit w razie nakładających się textów ;p sądze że pomogłem i że to wystarczy ![]() -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 44 Pomógł: 1 Dołączył: 12.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
Super! myślałem o czymś w tym stylu, ale w tym przypadku musiałbym co roku aktualizować ROK w dacie, a zależy mi by tego nie robić:(
Czy jest jakieś rozwiązanie? ![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
i leci po miesiacach ;] chociaż... to wszystko zalezy jakie wpisy będziesz tam dawać bo styczeń to wkońcu jedynka a grudzień to 12 więc jakbyś mógł bardziej zdefiniować przykład w sensiej co dokładnie chcesz uzyskać bo tak ogólnego zapytania chyban ie ma ;] Ten post edytował melkorm 25.09.2008, 20:23:52 -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 44 Pomógł: 1 Dołączył: 12.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
A jak będzie od 13 stycznia do 20 czerwca? To jak zrobić?
![]() |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 86 Pomógł: 18 Dołączył: 28.04.2008 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 44 Pomógł: 1 Dołączył: 12.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
Wszystko było by dobrze, gdyby wyświetlanie dotyczyło tego samego roku, a jak mamy wyświetlić np.:
- od 15 grydnia do 10 stycznia to taki skrypt niezadziała prawidłowo dlatego chodzi mi o coś co będzie wyświetlało dany rekord w przedziale czasowym na podstawie dnia i miesiąca. Chyba trochę zakręciłem, ale mam nadzieje, że mnie rozumiecie:) |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 86 Pomógł: 18 Dołączył: 28.04.2008 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
ja wyświetlisz dzień bez roku?
![]() -------------------- |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 86 Pomógł: 18 Dołączył: 28.04.2008 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
ja wyświetlisz dzień bez roku? ![]() ![]() ale o co chodzi? ![]() 'z' wyświetla który dzisiaj mamy dzień roku jak chcemy żeby coś się działo w styczniu to 'z' musi być mniejsze od 31 Czego nie rozumiecie? nie ma znaczenia jaki rok. Ma tylko w latach przestępnych trzeba dodać sobie 1 dzień w lutym :] Można npisać na to prostą funkcje sprawdzającą rok |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
ta, ale wtedy w bazie musisz trzymać dni od którego do którego coś ma się dziać, a jeżeli coś ma się dziać od grudnai do lutego ?
czyli w stylu 345 - 22 ? (dni) => w phpiem ozan dać warunek i będzie smigać ale wtedy w tablcy muszą być wrzucone dni ... a ja mam już prawie zapytanie ![]() -------------------- |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 44 Pomógł: 1 Dołączył: 12.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
W tym samym roku Twoja funkcja będzie dobra i wszystko będzie super działać, lecz jeżeli zakres dotyczy dni znajdujących się w RRRR oraz RRRR+1 to zadziała?
Rok ma powiedzmy 365 dni. jeżeli chcemy wyświetlić coś między 360 dniem 2008 roku i 31 dniem 2009 roku, to jak to zrobić? tak by trzymało się kupy i by przestrzegać tego o czym pisałem wyżej (nie brać pod uwagę aktualizacji w bazie roku danego rekordu). Wszystko było by okej gdyb nie to, że zakres dotyczyć będzie także miesięcy i dni z różnych RRRR. Macie pomysł na zapytanie do bazy lub skrypt? |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 86 Pomógł: 18 Dołączył: 28.04.2008 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
To ja już nie rozumiem..
Masz konkretne lata? Jeżeli rok nie ma znaczenia to dzień w roku jest najlepszym rozwiązaniem chyba że masz od 1.12.2004 do 2.11.2008 to już nie będzie dobrze |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Mamy - nie używać formatu daty typu DD MM RRRR tylko przestawić się na unixowy znacznik czasu, czyli to, co zwraca w php funkcja time() - w bazie robisz pole integer i śmiga jak burza, a wyszukiwanie pomiędzy dwiema datami jest banalne. Doceniłem to, kiedy robiłem terminarz i trzeba było duplikować czy przesuwać zadania - zadanie od 10.30 do 12.45 nie mogło kolidować z żadnym innym w tym terminie - dochodzą święta ruchome i nieruchome - pełna tragedia. A dodanie np. do daty miesiąca i dwóch tygodni? Strtotime - i jest. Nie wyobrażam sobie powrotu do daty typu DATETIME.
|
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Tak, myslałem o tym
![]() -------------------- |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 44 Pomógł: 1 Dołączył: 12.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
Wyświetlanie będzie cykliczne co roku. Poniżej podaję przykłady:
od 1 stycznia do 31 stycznia; od 10 lutego do 15 czerwca; od 15 lutego do 11 maja; od 10 grudnia do 15 stycznia; Zgodnie z tym co mówisz chcesz abym w bazie zapisywał dwie zmienne (numery dni danych dni miesiąca). Problem może pojawićsię w roku przestępnym:( Mówisz, że masz gotową funkcję na tą sytuację:) Jeśli można to poproszę. Dla upewnienie podaję przykład jak zinterpretowałem Twoją odpowiedź:
Jak wygląda Twoj skrypt? Ten post edytował bikebog 25.09.2008, 22:02:17 |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 86 Pomógł: 18 Dołączył: 28.04.2008 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
przecież pisałem Ci całą funkcję:
To robi coś jeżeli dzisiaj jest dzień miedzy któryś grudnia, a 13 stycznia aby sprawdzić czy dzisiaj mamy rok przestępny to
Ten post edytował hateman 25.09.2008, 22:37:46 |
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 44 Pomógł: 1 Dołączył: 12.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
Rozumiem, że przy pobieraniu rekordów z bazy i puszczaniu tej funkcji w pętli skrypt będzie wydajny?;-)
OK, No to wariant w PHP już mamy, czy można to teraz przenieść na SQL? ![]() Pozdrawiam |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
A ja próbowałbym tak:
W bazie danych zapisane startDate, endDate. Właściwie dowolnie jak, byle by się dało wyciągnąć miesiąc i dzień. Ja bym zapisał jako timestamp z rokiem 1970 ![]() I teraz Kod SELECT * FROM table WHERE (DATEDIFF(endDate,startDate) > 0 AND MONTH(startDate) >= MONTH(NOW()) AND DAY(startDate) >= DAY(NOW()) AND MONTH(endDate) <= MONTH(NOW()) AND DAY(andDate) <= DAY(NOW())) OR (DATEDIFF(endDate,startDate) < 0 AND MONTH(startDate) <= MONTH(NOW()) AND DAY(startDate) <= DAY(NOW()) AND MONTH(endDate) >= MONTH(NOW()) AND DAY(andDate) >= DAY(NOW())) Tak na pałę trochę ![]() [edit] Już widzę, że jest źle ![]() Kod SELECT * FROM table WHERE (DATEDIFF(endDate,startDate) > 0 AND MONTH(startDate) >= MONTH(NOW()) AND DAY(startDate) >= DAY(NOW()) AND MONTH(endDate) <= MONTH(NOW()) AND DAY(andDate) <= DAY(NOW())) OR (DATEDIFF(endDate,startDate) < 0 AND (MONTH(startDate) >= MONTH(NOW()) AND DAY(startDate) >= DAY(NOW())) OR (MONTH(endDate) <= MONTH(NOW()) AND DAY(andDate) <= DAY(NOW()))) Tak chyba lepiej... gdzieś na pewno nawiasy pogubiłem Ten post edytował Mchl 25.09.2008, 23:06:50 |
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Kod DATEDIFF() returns expr1 – expr2 expressed as a value in days from one date to the other. expr1 and expr2 are date or date-and-time expressions. kolega niechce mieć dat w bazie, tzn. lat (roku) :] Więc datediff nei zadziała ![]() a o to SQL :
Z założeniem że dni nie nachodzą na siebie i są podane dni a nie daty ![]() edit -> literówka Ten post edytował melkorm 25.09.2008, 23:27:46 -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 21:41 |