Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> chronologiczne generowanie numerów
maksik
post
Post #1





Grupa: Zarejestrowani
Postów: 206
Pomógł: 0
Dołączył: 26.09.2012

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


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
no_face
post
Post #2





Grupa: Zarejestrowani
Postów: 346
Pomógł: 23
Dołączył: 28.11.2004

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


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.
Go to the top of the page
+Quote Post
maksik
post
Post #3





Grupa: Zarejestrowani
Postów: 206
Pomógł: 0
Dołączył: 26.09.2012

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


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
Go to the top of the page
+Quote Post
no_face
post
Post #4





Grupa: Zarejestrowani
Postów: 346
Pomógł: 23
Dołączył: 28.11.2004

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


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.
Go to the top of the page
+Quote Post
maksik
post
Post #5





Grupa: Zarejestrowani
Postów: 206
Pomógł: 0
Dołączył: 26.09.2012

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


tylko jak robić reset inkrementacji?
Go to the top of the page
+Quote Post
no_face
post
Post #6





Grupa: Zarejestrowani
Postów: 346
Pomógł: 23
Dołączył: 28.11.2004

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


Nie wiem dlaczego ale napisze Ci trzeci raz jak to zrobic. Chyba za duzo kawy dzis wypilem i nie mam na co sil spozytkowac (IMG:style_emoticons/default/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. }


Ten post edytował no_face 23.10.2013, 19:42:09
Go to the top of the page
+Quote Post
phpion
post
Post #7





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.09.2025 - 22:56