![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 1 335 Pomógł: 34 Dołączył: 9.11.2005 Skąd: Wrocław Ostrzeżenie: (10%) ![]() ![]() |
Hi,
chciałem spytać jak zrobić zapytanie, aby pokazywało mi dane tylko z danego miesiąca, a mianowicie jeżeli mamy wrzesień, to żeby wyświetlało tylko dane z września.
Datę w bazie mam przykładowo tak: 20.09.2007, 22:42:30 w polu text. Z góry dziękuję za pomoc. -------------------- > > > Tworzenie stron < < <
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 319 Pomógł: 118 Dołączył: 26.11.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
bez sens zapisywac date w postaci tekstowej, jesli juz to int i za pomoca funkcji time(), a jak nie to date mysql wstawic
teraz to musisz rozbijac to za pomoca explode i wogole kupa roboty, serwer nie nadazy popraw to lepiej, jak zapiszesz date np. za pomoca funkcji time to pozniej mozesz ja wyswietlac w taki sam sposob -------------------- scriptun.com. Startup z poradnikami do gier ttp.zone i ttpzone.pl
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 335 Pomógł: 34 Dołączył: 9.11.2005 Skąd: Wrocław Ostrzeżenie: (10%) ![]() ![]() |
No i powiedzmy, że teraz mam datę np. taką w bazie w polu INT: 1191302400
I teraz jak mam zrobić, żeby wyświetlić tylko newsy z tego miesiąca, który właśnie jest? -------------------- > > > Tworzenie stron < < <
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 319 Pomógł: 118 Dołączył: 26.11.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
przy wyswietlaniu rekordow, sprawdzasz miesiac:
-------------------- scriptun.com. Startup z poradnikami do gier ttp.zone i ttpzone.pl
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 335 Pomógł: 34 Dołączył: 9.11.2005 Skąd: Wrocław Ostrzeżenie: (10%) ![]() ![]() |
Dzięki
![]() @edit: Zrobiłem i trochę nie za bardzo działa ![]() W bazie mam dwa newsy o datach: 1171002000 - 20.10.2007, 07:20:15 oraz 1190265615 - 20.9.2007, 07:20:15
Ten post edytował in5ane 2.10.2007, 19:40:30 -------------------- > > > Tworzenie stron < < <
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 590 Pomógł: 40 Dołączył: 11.01.2007 Skąd: Centrum Ostrzeżenie: (0%) ![]() ![]() |
Zamiast sprawdzać datę na poziomie php sprawdzaj ją w poziomie bazy poprzez dobrze stworzone zapytanie.
Skoro masz zapisany timestamp w postaci INT to wykorzystaj coś takiego: - sprawdzasz jaki masz aktualnie miesiac - sprawdzasz ile miesiac ma dni - generujesz znacznik czasu dla 1szego danego miesiaca ( czyli mktime(0,0,0,$miesiac,1,$rok) ) - generujesz znacznik czasu dla ostatniego danego miesiaca - tworzysz zapytanie do bazy - wyswietlasz rekordy. -------------------- 404
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 1 335 Pomógł: 34 Dołączył: 9.11.2005 Skąd: Wrocław Ostrzeżenie: (10%) ![]() ![]() |
Nie bardzo to rozumiem:
- generujesz znacznik czasu dla 1szego danego miesiaca ( czyli mktime(0,0,0,$miesiac,1,$rok) ) - generujesz znacznik czasu dla ostatniego danego miesiaca Zrobiłem to tak:
I druga rzecz, jak z tego stworzyć zapytanie? -------------------- > > > Tworzenie stron < < <
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 590 Pomógł: 40 Dołączył: 11.01.2007 Skąd: Centrum Ostrzeżenie: (0%) ![]() ![]() |
A czego tu nie rozumieć
![]() Poza faktem, że znaczniki które stworzyłeś to znaczniki pierwszego i dwunastego dnia miesiąca określonego w zmiennej $dni_miesiac. Zakładając, że miesiąc dostajesz z formularza w postaci cyfr z zakresu 1-12 ( styczeń - grudzień ) i chcesz pokazać newsy z dni od 1 do ostatniego dnia wybranego miesiąca wykonujesz następujące czynności: - obliczasz znacznik czasu dla pierwszego dnia wybranego miesiąca - czyli mktime" title="Zobacz w manualu PHP" target="_manual // sprawdź jaka jest kolejność parametrów w tej funkcji - sprawdzasz ile dni ma dany miesiąc - date" title="Zobacz w manualu PHP" target="_manual z odpowiednim parametrem - wartość z poprzedniego kroku wstawiasz do mktime i obliczasz znacznik czasu ostatniego dnia miesiąca - tworzymy zapytanie ... skoro data wpisania newsa to też znacznik czasu w postaci INT to po prostu sprawdzasz czy data wpisania newsa jest >= od znacznika_start i czy jest <= od znacznika_stop ... albo jakoś tak ![]() -------------------- 404
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 2.10.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem po co wyciągasz wszyskie rekordy z bazy, skoro potrzebujesz tylko z danego miesiąca. Mając date w postaci DATETIME
Kod $miesiac = date('m');
$query = "SELECT * FROM page_news WHERE status = '2' AND MONTH(datadodania) = $miesiac ORDER BY id DESC LIMIT 10"; Ten post edytował Inzabi 3.10.2007, 13:31:55 |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 1 335 Pomógł: 34 Dołączył: 9.11.2005 Skąd: Wrocław Ostrzeżenie: (10%) ![]() ![]() |
No coś to nie bardzo działa, popróbuje jednak cienkiego
![]() -------------------- > > > Tworzenie stron < < <
|
|
|
--phpion.com-- |
![]()
Post
#11
|
Goście ![]() |
Inzabi dobrze prawi! Poczytaj o [url="http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html"MySQL 5.0 Reference Manual :: 11.6 Date and Time Functions[/url]. Wybieranie wszystkich rekordów i sprawdzanie daty w PHP jest po prostu absurdalnie bez sensu...
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 1 335 Pomógł: 34 Dołączył: 9.11.2005 Skąd: Wrocław Ostrzeżenie: (10%) ![]() ![]() |
Czy to jest tylko do PHP5 i MySQL5 ?
Bo jeżeli tak, no to jednak będę musiał zrobić tak jak cienki podał. -------------------- > > > Tworzenie stron < < <
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 2.10.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
PHP nie ma nic do zapytań SQL i działa to też na starszych wersjach.
http://dev.mysql.com/doc/refman/4.1/en/dat...#function_month |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 1 335 Pomógł: 34 Dołączył: 9.11.2005 Skąd: Wrocław Ostrzeżenie: (10%) ![]() ![]() |
Zrobiłem tak:
i nie śmiga.. nic nie pokazuje. Takie mam daty w bazie: 1191449216 i 1191449093 -------------------- > > > Tworzenie stron < < <
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 2.10.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Pisałem, że to zadziała tylko dla formatu DATE, DATETIME.
W twoim przypadku musisz zrobić konwersję
|
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 1 335 Pomógł: 34 Dołączył: 9.11.2005 Skąd: Wrocław Ostrzeżenie: (10%) ![]() ![]() |
Nadal nie idzie, chociaż teraz wyświetla rekordy, ale wszystkie.
Daty mam takie: 04.10.2007, 00:04:53 - 972086460 21.10.2000, 02:01:00 - 1191449093 -------------------- > > > Tworzenie stron < < <
|
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 2.10.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Widzę że nie przejrzałeś treści pod linkami, które ci podaliśmy, tam masz wszystko.
To samo co zrobiłeś z MONTH zrób dla YEAR. |
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 1 335 Pomógł: 34 Dołączył: 9.11.2005 Skąd: Wrocław Ostrzeżenie: (10%) ![]() ![]() |
Dzięki
![]() -------------------- > > > Tworzenie stron < < <
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 16:04 |