Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Mysql][PHP] Wyświetlanie wyników z przedziału datowego.
Forum PHP.pl > Forum > Przedszkole
Rewil
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?
vokiel
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.
Rewil
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?
vokiel
Wywal to:
  1. $zal = mysql_fetch_array($idzapytania);

Tu do zmiennej $zal pobierasz pierwszy wiersz wyniku
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.