Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Mysql][PHP] Wyświetlanie wyników z przedziału datowego.
Rewil
post 5.11.2009, 16:14:35
Post #1





Grupa: Zarejestrowani
Postów: 175
Pomógł: 0
Dołączył: 19.09.2009

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


Witam.

Mam date w mysql'u w formie:
(d-m-Y) np=> 2009-10-08

Następnie mam okres czasowy:
  1. $data_start = date('d.m.Y', $odejmdzien);
  2. $data_koniec = date('d.m.Y', $dodajdzien);


I potrzebuje wyświetlić wszystkie id rekordów których data znajduje się w tym przedziale.

  1. $czas1 = mktime($data_start); 'Tutaj zamienia czas na sekundy od roku 1970. (?)
  2. $czas2 = mktime($data_koniec);
  3. $czasteraz = time();

Na podstawie tego otrzumujemy taki wynik:
1257030000 01.11.2009
1257548400 07.11.2009
1257433483 Czas teraz.

Jak już mamy przedział czas na zapytanie:
  1. $zapytanie = "SELECT hourssumamin FROM time_data WHERE $czas1 < $czasteraz && $czas2 > $czasteraz && user_id = $user_id";
  2. $idzapytania = mysql_query($zapytanie);
  3. $test = mysql_fetch_array($idzapytania);
  4. echo $test[0];

I teraz powstaje takie pytanie, czy mogę robić takie działania na zapytaniu jeżeli w bazie mam format daty podany w d-m-Y, a przedział w jakim sprawdzam tą date jest w Unixowym?
Go to the top of the page
+Quote Post
vokiel
post 5.11.2009, 16:45:58
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Kombinujesz jak koń pod górkę biggrin.gif

Jakie masz pola w bazie?
Bo te Twoje porównanie to jest... Czemu porównujesz w zapytaniu $czas2 > $czasteraz skoro to są zmienne w php a nie w bazie danych?
Myślę, że chodzi Ci o pole, np POLE_Z_DATA_W_BAZIE, wtedy:

  1. $data_start = date('Y-m-d', strtotime($odejmdzien));
  2. $data_koniec = date('Y-m-d', strtotime($dodajdzien));
  3.  
  4. $zapytanie = "SELECT `hourssumamin` FROM `time_data` WHERE `POLE_Z_DATA_W_BAZIE` BETWEEN '".$czas1."' AND '".$czas2."' AND `user_id` = ".$user_id.";";



Napisz dokładnie co chcesz osiągnąć, bo jak na razie to się tylko domyślam.


--------------------
Go to the top of the page
+Quote Post
Rewil
post 6.11.2009, 18:05:33
Post #3





Grupa: Zarejestrowani
Postów: 175
Pomógł: 0
Dołączył: 19.09.2009

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


Twoje słowa dały mi do myślenia i wiem że do tego źle podszedłem. I teraz kombinuje w drugą stronę, jak to koń biggrin.gif W razie problemów jeszcze napisze, ale na razie spróbuje sam. Oczywiście leci jak najbardziej zasłużony "pomógł".

No wszystko ładnie pięknie, ale zrobił mi się jakiś nowy błąd eh...
  1. $user_id = $urow['user_id'];
  2. $zapytanie = "SELECT `hourssumamin` FROM `time_data` WHERE data_date >= '$start_date' and data_date <= '$end_date' and user_id = $user_id";
  3. $idzapytania = mysql_query($zapytanie);
  4. $zal = mysql_fetch_array($idzapytania);
  5. $ilejest = mysql_num_rows($idzapytania);
  6.  
  7.  
  8. while ($pierwsze = mysql_fetch_row($idzapytania))
  9. {
  10. for($i = 0; $i <= $ilejest; $i++){
  11. echo $pierwsze[$i];
  12. }
  13. echo "o";
  14.  
  15. }
  16. echo "[".$ilejest."]";
  17.  
  18.  
  19. ?>


Dostaje (Dla przykładu):
423o175o237o61o110o411o[7]
[1]

Czyli zawsze zjada mi jeden wpis, natomiast po wyliczeniu w mysql_num_rows ilość wpisów się zgadza.
Coś przeoczyłem w pętli, czy błąd tkwi znów gdzieś indziej? Any Ideas?

Ten post edytował Rewil 6.11.2009, 18:09:52
Powód edycji: [Ociu]: Dodałem bbCode
Go to the top of the page
+Quote Post
vokiel
post 6.11.2009, 22:19:50
Post #4





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Wywal to:
  1. $zal = mysql_fetch_array($idzapytania);

Tu do zmiennej $zal pobierasz pierwszy wiersz wyniku


--------------------
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: 18.07.2025 - 01:36