Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Porównywanie dat
cent4
post
Post #1





Grupa: Zarejestrowani
Postów: 415
Pomógł: 0
Dołączył: 24.12.2008

Ostrzeżenie: (10%)
X----


Mam coś takiego:
  1. $data_dzisiejsza=date("Y-m-d");
  2. $miesiac="4";
  3. echo "data dzisiejsza: ".$data_dzisiejsza;
  4. $data_mniejsza=date("Y-m-d",strtotime("-".$miesiac." months"));
  5. echo "<br>data mniejsza: ".$data_mniejsza;
  6. if ($data_dzisiejsza>$data_mniejsza) echo "<br />dzisiejsza mniejsza od mniejszej";

Czy dobrze rozumiem porównywanie dat?
Czy to tak się robi?
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




Dat nie porównuje się jako tekst jak ty to robisz. Daty się porównuje np. jak liczba czyli np. timestamp, który zwraca np. strtotime
Go to the top of the page
+Quote Post
cent4
post
Post #3





Grupa: Zarejestrowani
Postów: 415
Pomógł: 0
Dołączył: 24.12.2008

Ostrzeżenie: (10%)
X----


Ok już rozumiem, a jak to wpiąć w zapytanie SQL:
  1. $SQL = "SELECT m.id, m.Med, m.Kat, m.Nr_id, m.Autor, m.Tytul, m.Wydawnictwo, m.Miasto, m.Rok, m.Opis, m.Obcojezyczne, e.id, e.Med, e.Kat, e.Data_wpr FROM media AS m JOIN egzempl AS e ON e.med = m.med AND e.kat = m.kat AND e.nr_id = m.nr_id WHERE "(strtotime('e.Data_wpr')>=strtotime($data_wczesniejsza))"
Go to the top of the page
+Quote Post
nospor
post
Post #4





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




sql to nie php.......
w sql możesz normalnie porównywać daty.
Go to the top of the page
+Quote Post
cent4
post
Post #5





Grupa: Zarejestrowani
Postów: 415
Pomógł: 0
Dołączył: 24.12.2008

Ostrzeżenie: (10%)
X----


W bazie są dane typu: "2011-08-02" - jak zatem porównywać to z wybraną opcją z formularza - od 1 do 36 - to miesiące, zmienna "$miesiac"...
Żeby wyszukał wszystkie rekordy gdzie gdzie e.Data_wpr>=daty obecnej pomniejszonej o $miesiac?

Ten post edytował cent4 2.08.2011, 20:13:33
Go to the top of the page
+Quote Post
nospor
post
Post #6





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




http://dev.mysql.com/doc/refman/5.5/en/dat...-functions.html
PIerwszy przykład na tej stronie, która notabene jest manualem, odpowiada na Twoje pytanie.
Cytat
Here is an example that uses date functions. The following query selects all rows with a date_col value from within the last 30 days:
mysql> SELECT something FROM tbl_name
-> WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= date_col;
Go to the top of the page
+Quote Post
cent4
post
Post #7





Grupa: Zarejestrowani
Postów: 415
Pomógł: 0
Dołączył: 24.12.2008

Ostrzeżenie: (10%)
X----


Wszystko powoli się wyjaśnia ale nadal coś jest nie tak:
  1. $SQL = "SELECT m.id, m.Med, m.Kat, m.Nr_id, m.Autor, m.Tytul, m.Wydawnictwo, m.Miasto, m.Rok, m.Opis, m.Obcojezyczne, e.id, e.Med, e.Kat, e.Data_wpr FROM media AS m JOIN egzempl AS e ON e.med = m.med AND e.kat = m.kat AND e.nr_id = m.nr_id WHERE DATE_SUB(CURDATE(),INTERVAL '.$miesiac.' MONTH) <= e.Data_wpr;


Jak daję wartość z palca - wszystko działa ok:
  1. $SQL = "SELECT m.id, m.Med, m.Kat, m.Nr_id, m.Autor, m.Tytul, m.Wydawnictwo, m.Miasto, m.Rok, m.Opis, m.Obcojezyczne, e.id, e.Med, e.Kat, e.Data_wpr FROM media AS m JOIN egzempl AS e ON e.med = m.med AND e.kat = m.kat AND e.nr_id = m.nr_id WHERE DATE_SUB(CURDATE(),INTERVAL 24 MONTH) <= e.Data_wpr;
Go to the top of the page
+Quote Post
nospor
post
Post #8





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




Cent, chlopie.... zapoznaj się z podstawami i poducz trochę jak się wstawia zmienne do tekstów :/
Go to the top of the page
+Quote Post
cent4
post
Post #9





Grupa: Zarejestrowani
Postów: 415
Pomógł: 0
Dołączył: 24.12.2008

Ostrzeżenie: (10%)
X----


Wstyd przyznać ale próbuję już wszystkiego: "..", '..', "", '' i dalej nic.
Ale w końcu jestem w dziale przedszkole ;-)
Go to the top of the page
+Quote Post
nospor
post
Post #10





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




".."
Akurat to wlaśnie jest poprawne w tym przypadku...

Jeśli nadal ci nie działa to:
Temat: Jak poprawnie zada pytanie

Ten temat powinieneś już chyba znać na pamięć.
Go to the top of the page
+Quote Post
cent4
post
Post #11





Grupa: Zarejestrowani
Postów: 415
Pomógł: 0
Dołączył: 24.12.2008

Ostrzeżenie: (10%)
X----


W firebugu dostałem info: Could not execute query.Something is wrong in your syntax obok ') <= e.Data_wpr
a jest tak jak było wcześniej ".."
Go to the top of the page
+Quote Post
nospor
post
Post #12





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




W linku co ci podalem, było jeszcze napisane byś robił:
echo $SQL;
Czy naprawdę tak cięzko dostosować się do tych paru prostych napisanych po polsku wskazówek?

Cytat
a jest tak jak było wcześniej ".."
Nie, wcześnie było '..'. A ma być ".."
Dostosuj się do wskazówek i pokaż lepiej kod jaki masz teraz.
Go to the top of the page
+Quote Post
cent4
post
Post #13





Grupa: Zarejestrowani
Postów: 415
Pomógł: 0
Dołączył: 24.12.2008

Ostrzeżenie: (10%)
X----


Działa - ta zmienna była przekazywana przez sesje i zapomniałem na początku pliku dać: session_start();.
Po Twoich sugestiach - wyechowałem tę zmienną przed SQL i po i w ogóle jej nie było - co jest oczywiste bo sesja nie była obsługiwana.
Dzięki już działa.
Go to the top of the page
+Quote Post
nospor
post
Post #14





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




Cytat
o Twoich sugestiach - wyechowałem tę zmienną przed SQL i po i w ogóle jej nie było - co jest oczywiste bo sesja nie była obsługiwana.

Moją sugestią było przedewszystkim, byś zastosował się do wszystkich wskazówek.

A jedną z nich jest wyświetlanie wszystkich błędów. Gdybyś je włączył to byś dostał błędy o tym, że ta zmienna nie istnieje.
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: 18.09.2025 - 06:15