Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: chronologiczne generowanie numerów
Forum PHP.pl > Forum > PHP
maksik
Witam

Chciałbym dodawać do tabeli wpisy które generowały by się chronoligcznie co miesiąc mniej więcej tak jak jest to przy fakturach

'chronoligczny numer'/miesiąc/rok


/miesiąc/rok - wiadomo jak z aktualnej daty można generować do tego identyfikatora ale jak unikalny numer tworzyć, aby był chronoliczny, nie powtarzał się i zliczał od nowa wraz z początkiem miesiąca?
no_face
Potrzebujemy dwoch zmiennych konfiguracyjnych. Jedna bedzie numerem, ktore bedziesz inkrementowal przy kazdej generacji faktury, druga to nr miesiaca. Jezeli aktualny nr miesiaca rozni sie od tego z konfiguracji, reset zmiennej konfiguracyjnej, w ktorej przechowywales nr. ... itd.
maksik
tak ale z auto increment jest tak, że powiedzmy będe miał 1/10, 2/10, 3/10 w jednym miesiącu
a dalej będzie 4/11, 5/11, 6/11, 7/11 itd
a chodzi o to aby każdy miesiąc incrementował się od początku
no_face
Wracamy do tego co napisane zostalo wyzej. Bedzie druga zmienna konf., ktora zainicjujesz aktualnym miesiacem. Pozniej juz tylko sprawdzasz czy aktualny miesiac to ten sam co w bazie. Jezeli tak to inkrementacja. Jezeli miesiac w bazie bedzie inny niz aktualny miesiac, co moze oznaczac, ze mamy nowy miesiac, robisz reset inkrementowanej zmiennej do 1 itd.
maksik
tylko jak robić reset inkrementacji?
no_face
Nie wiem dlaczego ale napisze Ci trzeci raz jak to zrobic. Chyba za duzo kawy dzis wypilem i nie mam na co sil spozytkowac smile.gif

  1. $konf_miesiac = 10; // pobieram zmienna konfiguracyjna uzywanego miesiaca z bazy
  2.  
  3. if ($konf_miesiac == date("n")) // czy miesiac z bazy jest rowny aktualnemu miesiacu
  4. {
  5. // jezeli jest rowny oznacza to, ze nadal mamy ten sam miesiac, abstrahujac od absencji calorocznej
  6. $nr = 4; // pobieramy z bazy nr inkrementacyjny, dla przykladu 4
  7. $nr++; // inkrementujemy go
  8. // mamy 5/10/2013
  9. // zapisujemy do bazy nr, czyli 5
  10. }
  11. else
  12. {
  13. // w tym przypadku miesiac sie zmienil, w bazie byl 10, a date("n") wskazuje juz nastepny czyli 11, oznacza to ze trzeba zresetowac nr inkrementacyjny i zapisac nowy miesiac do bazy
  14. $nr = 1; // resetujemy nr, czyli recznie ustawiamy 1 by numerowalo od poczatku
  15. // mamy 1/11/2013
  16. // zapisujemy 11 w bazie dla zmiennej konf uzywanego miesiaca 11
  17. // zapisujemy w bazie nr inkrementacyjny rowny 1
  18. }
phpion
Uwtórz w bazie tabelę:
invoices_numbers [year, month, counter] (podkreślone kolumny to klucz główny)
Będziesz w niej przechowywał liczniki numerów dla konkretnych lat i miesięcy. Chcąc nadać nowy numer faktury:

1. Pobierasz counter dla danego roku i miesiąca.
2. Jeśli istnieje - zwiększasz o 1, aktualizujesz licznik w bazie. W wyniku otrzymujesz kolejny numer faktury.
3. Jeśli nie istnieje - nadajesz wartość 1 i dodajesz rekord do bazy. W wyniku otrzymujesz numer faktury 1.

Tyle.
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.