Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: odpowiednia funkcja
Forum PHP.pl > Forum > PHP
laresistance

Mam daty w tabeli zapisywane typu text w formacie YYYY/MM (np 2012/04)
w tabeli są 4 kolumny data_bookowania, data_od, data_do, ilosc
Teraz musze napisać a php pętlę, w któej będzie wykonywana akcja
jeśli data_do jest większa od daty_od to zwieksz licznik dla kazdego miesiaca z przedzialu o ilosc
Tabelą wyjściową jest tabela o kolumnach data_bookowania miesiac_zainteresowania_ ilosc

Przykład:
wiersz w tabeli to 2012/02 2012/03 2012/06 35
czyli pętla przechodząc przez ten wiersz wie, że data 2012/06 jest wieksza niz 2012/03 i zwieksza licznik dla każdego zmiesiaca_zainteresowania oprócz pierwszego czyli 2012/04, 2012/05, 2012/06 o ilosc 35

Teraz pierwszym problemme jest zapis z textu jak to porozdzielać tak by php mógł porónać wielkości? Nie może być string tylko int
Drugi problrm jak miałaby wyglądać taka pętla
IceManSpy
Szkoda, że tak trzymasz daty - może w przyszłości powodować to problemy i bez sensu komplikować życie. Ale do rzeczy.

Problem pierwszy: funkcja explode: http://php.net/manual/en/function.explode.php - wybierzesz sobie odpowiednie miesiące (tylko sprawdź, cyz nie będzie w przyszłości problemów z przejściem między latami np 2012/2013)
Jeśli miałbyś daty to: funkcja strtotime: http://php.net/manual/en/function.strtotime.php zwróci Ci timestampa - porównaj te 2 wartości.

Drugi problem: jeśli będziesz patrzył tylko na miesiące to wygląda to mniej więcej tak (jeśli nic nie pomyliłem):
  1. while(true)
  2. {
  3. if(miesiac_koniec == miesiac_aktualny)
  4. {
  5. break;
  6. }
  7. else
  8. {
  9. aktualizacja;
  10. }
  11. }
  12.  
lukaskolista
Cytat
Nie może być string tylko int
Oczywiscie, ze moze to byc string. PHP ma wbudowany mechanizm porownywania dat wlasnie w postaci stringa. Nastepnym razem zanim napiszesz niepotrzebny temat... rusz sie i zrob prosty test w postaci
  1. var_dump('2012/04' > '2012/03');
  2. var_dump('2012/04' < '2012/03');
i wszystko bedzie jasne. Programowanie nie polega na pisaniu tematow na forum, a na samodzielnym rozwiazywaniu problemow. Rozumiem jakis powazny problem, ale zwykly warunek...
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.