maksik
23.10.2013, 17:40:27
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
23.10.2013, 18:12:15
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
23.10.2013, 18:20:02
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
23.10.2013, 18:31:59
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
23.10.2013, 18:43:12
tylko jak robić reset inkrementacji?
no_face
23.10.2013, 19:41:03
Nie wiem dlaczego ale napisze Ci trzeci raz jak to zrobic. Chyba za duzo kawy dzis wypilem i nie mam na co sil spozytkowac

$konf_miesiac = 10; // pobieram zmienna konfiguracyjna uzywanego miesiaca z bazy
if ($konf_miesiac == date("n")) // czy miesiac z bazy jest rowny aktualnemu miesiacu {
// jezeli jest rowny oznacza to, ze nadal mamy ten sam miesiac, abstrahujac od absencji calorocznej
$nr = 4; // pobieramy z bazy nr inkrementacyjny, dla przykladu 4
$nr++; // inkrementujemy go
// mamy 5/10/2013
// zapisujemy do bazy nr, czyli 5
}
else
{
// 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
$nr = 1; // resetujemy nr, czyli recznie ustawiamy 1 by numerowalo od poczatku
// mamy 1/11/2013
// zapisujemy 11 w bazie dla zmiennej konf uzywanego miesiaca 11
// zapisujemy w bazie nr inkrementacyjny rowny 1
}
phpion
24.10.2013, 10:52:06
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.