Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP/MySQL] Sprawdzenie ile jest rekordów w przedziale 21 dni
taqu
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 30.04.2006

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


Witam,


Użytkownik wprowadza umowę i po akceptacji administratora muszę sprawdzić czy w ciągu dowolnych 21 dni NIE OSTATNICH wprowadził np: 6 umów.

Może macie jakiś pomysł?

Jedyne co przychodzi mi do głowy to:

- Pobrać pierwszą umowę i dodać do niej 21 dni.
- Sprawdzić czy końcowa data nie jest większa od dzisiaj
- Zliczyć ile jest umów w przedziale [umowa pierwsza, umowa pierwsza+21 dni]
- Potem pobrać drugą itd.


Może macie jakiś mniej łopatologiczny pomysł ?smile.gif
Go to the top of the page
+Quote Post
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




A nie prościej pójść "od końca"? Pobierz sobie umowy z datą. Wybierz pierwszą umowę. Sprawdź czy wymagana ilość umów jest większa niż wszystkich umów klienta. Jeśli tak - nie spełnia warunku. z mostu. Jeśli umów jest więcej to weź pierwszy element i sprawdź czy element będący tyle umów od niego ile trzeba, by był ostatnią umową, czyli X-1 istnieje, a jeśli tak - porównaj daty. Jeśli różnica większa niż wymagane 21 dni - odrzuć i zapętlij się. Jeśli element do którego porównujemy nie istnieje - zakończ algorytm.

Czemu tak? Zauważ, że nigdy w pętli nie ma sensu iść do ostatniego elementu ale tyle od końca ile masz mieć umów. W teorii można by pokombinować, by puścić na poziomie bazy jako zapytanie, gdzie obliczymy różnicę daty między aktualnym elementem a przesuniętym względem niego o jakiś offset. Nie jestem jednak pewien czy napisanie takiego będzie proste bez uciekania się do funkcji.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
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 Aktualny czas: 22.08.2025 - 07:24