Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] DATETIME operowanie na danych, Np. wyświetlenie wpisów z dzisiaj, inne podobne
poczatkujacy99
post 29.06.2012, 04:32:24
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 29.06.2012

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


Witam,


Mam problem taki mam bazę i w niej wpisy. Każdy wpis jest informację typu DATETIME kiedy został dodany. Chciałbym aby skrypt wyświetlił mi wszystkie dzisiejsze wpisy, po naciśnięciu np. +1 lub -1 wyświetlił wpisy z dnia poprzedniego lub dnia następnego. (próbowałem na CURDATE() i NOW() ale nie działa)

Inny problem to By wyświetliło 3 wydarzenia poprzednie, 1 trwające i 3 wydarzenia następne. (W bazie jest data_poczatek i data_koniec) Tu pewnie dałbym sobie radę, ale gdyby dało się DATETIME przerobić na uniksowy znacznik czasu wtedy od data_poczatek wyswietlam wydarzenia o < liczbie sekund od niej, a potem, a z drugiej strony wyswietlam wydarzenia o wiekszej liczbie sekund. Trwające to takie, gdzie aktualny czas jest pomiędzy data_poczatek a data_koniec. Nie wiem czy dobrze kombinuje. Ale nie wiem jak DATETIME tak przerobić i aktualną datę.
Go to the top of the page
+Quote Post
Shido
post 29.06.2012, 08:19:31
Post #2





Grupa: Zarejestrowani
Postów: 121
Pomógł: 22
Dołączył: 22.06.2012

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


Opcje widze 2.

1/
Jak sądze Date dodaje automatycznie baza danych, nie znam się na operacjach na takiej dacie, więc osobiscie pozbyłbym się tego, a date dodawał skryptem np takim:
  1. $d = date("d");
  2. $m = date("m");
  3. $r = date("Y");
  4. $tsa = mktime(0, 0, 0, $m, $d, $r);

Wtedy oleje ci godziny i wyszukiwanie z danego dnia zrobisz jedynie porównując to co masz w bazie z lekko zmodyfikowanym tym samym skryptem.

2/
Jeżeli zalezy ci na godzinach, to opcja druga opcja jest taka, żeby napisać skrypt który:
- obliczy o której zaczał się dzień
- obliczy o której skończy(ł) się dzień
i wyciągnął z bazy przy pomocy:
  1. `data` >= '$data_start' AND `data` <= '$data_koniec'


--------------------
Sorka za błędy ort. jak coś dajcie znać na PW to popoprawiam.
Go to the top of the page
+Quote Post
poczatkujacy99
post 29.06.2012, 10:35:15
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 29.06.2012

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


Zrobiłem to tak:
  1. $d = date("d");
  2. $m = date("m");
  3. $r = date("Y");
  4. $start = mktime(0,0,0,$m,$d,$r);
  5. $stop = mktime(23,59,59,$m,$d,$r);
  6. echo $start;
  7. echo ("<br><br>");
  8. echo $stop;
  9. echo ("<br><br>");
  10. echo date("F j, Y, g:i a", mktime(0,0,0,$m,$d,$r));
  11. echo ("<br><br>");
  12. echo date("F j, Y, g:i a", mktime(23,59,59,$m,$d,$r));
  13. $result=mysql_query("select * from wpisy order by id WHERE `date` >= '$start' AND `date` <= '$koniec'", $conn);


niżej kod wyświetlający, ale nie dałem go bo działa dobrze. I teraz jaki do daje efekt?
Cytat
1340920800

1341007199

June 29, 2012, 12:00 am

June 29, 2012, 11:59 pm

Czyli przedział jest dobry, a w bazie na pewno są dzisiaj jakieś wpisy. W bazie data jest przechowywana jako DATETIME. Dlaczego mimo to nie wyświetliło ani jednego wpisu?
Go to the top of the page
+Quote Post
Shido
post 29.06.2012, 11:19:58
Post #4





Grupa: Zarejestrowani
Postów: 121
Pomógł: 22
Dołączył: 22.06.2012

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


Sprawdziłem teraz jak dokładnie wyglada ten format Datatime i wyszło mi że to coś takeigo: 2012-06-29 12:15:00

Więc w tym przypadku zrób tak:
  1. $d = date("d");
  2. $m = date("m");
  3. $r = date("Y");
  4. $data = $r.'-'.$m.'-'.$d;
  5. $result=mysql_query("SELECT * FROM wpisy ORDER BY id WHERE `date` LIKE '$data%'", $conn);

Sądze że to powinno zadziałać.
Bo wyszukujesz w tabeli wszystkiego co zaczyna sie zmienną data czyli na dziś: 2012-06-29

Ten post edytował Shido 29.06.2012, 11:21:33


--------------------
Sorka za błędy ort. jak coś dajcie znać na PW to popoprawiam.
Go to the top of the page
+Quote Post
poczatkujacy99
post 29.06.2012, 11:36:39
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 29.06.2012

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


Cytat
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE `date` LIKE '2012-06-29%' ' at line 1


Taki błąd wyskakuje.
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: 29.07.2025 - 12:35