![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 98 Pomógł: 1 Dołączył: 7.08.2005 Skąd: Górny Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Witam
Zastanawiam się nad generacją unikalnego numeru umowy, ale ciężko mi na cokolwiek sensownego wpaść. Otóż - mam w bazie tabelę osoby z danymi osób o następującej strukturze: id, nazwisko, skrot Przykładowe dane w tabeli: 1 | Imię Nazwisko | IM 2 | Jan Kowalski | JK itd. Dodaję z pewnego formularza do tabeli umowy. Wybieram osobę z tabeli osoby i chcę dodawanej umowie nadać unikalny numer w następującej formie XXXXYYZZ, gdzie: XXXX - numer umowy począwszy od 0001 (ważne, żeby te 0 też się wpisywały) YY - skrót osoby wybranej z bazy osoby ZZ - dwie ostatnie cyferki roku - czyli np. 07 Problem mój polega na tym, że nie za bardzo wiem jak się za takie coś zabrać. Zwrócić uwagę należy na to, że jeśli dla pierwszej wpisywanej umowy wybiorę skrót IM, to numer umowy powinien być następujący: 0001IM07, jeśli będę wprowadzała drugą umową, w której wybiorę znowu tę samą osobę - to numer powinien być 0002IM07. Wpisuję trzecią umowę, ale teraz wybieram inną osobę - to numer powinien być 0001JK07, przy czwartej umowie i pierwszej osobie: 0003IM07. Krótko mówiąc - każda osoba ma swoją unikalną numerację, która od każdego nowego roku leci od 0001. Jak to wykonać ze strony technicznej? Jakie pola dodać do bazy danych, aby była łatwość wyciągania danych (np. wszystkie umowy dla IM, gdzie rok jest 2007), oraz aby dobrze szło wyszukiwać umowy wpisując np. 1234IM07? Jakieś pomysły? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
a chcialem zauwazyc ze Kowalskich i Nowakow jest w tym kraju miliony i nawet zdarza sie ze maja tak samo na imie.
wiec jak bedziesz mial Jan Kowalski ze Śląska Jan Kowalski z Katowic to bedziesz mial takie same dwa identyfikatory umow i co wtedy?? |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 98 Pomógł: 1 Dołączył: 7.08.2005 Skąd: Górny Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Identyfikatory będę sobie sam ustalał i NIE dopuszczę do takiej sytuacji (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Identyfikatory będę sobie sam ustalał i NIE dopuszczę do takiej sytuacji (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) troche bez sensu nie lepiej zrobic to jakos z glowa zeby pozniej sobie jej nie zawracac bo jak ci ta baza urosnie to potem mozesz tego nie ogarnac i bedziesz sobie w brode plul |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 98 Pomógł: 1 Dołączył: 7.08.2005 Skąd: Górny Śląsk Ostrzeżenie: (0%) ![]() ![]() |
To nie jest moim problem - tym bardziej, że tych osób z identyfikatorami w bazie będzie dokładnie 6.
Więc jakiś pomysł na rozwiązanie mojego powyższego problemu? |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 656 Pomógł: 3 Dołączył: 26.10.2005 Skąd: Częstochowa Ostrzeżenie: (0%) ![]() ![]() |
o jejq... wystarczy substr aby rozdzielić cyfry do powiększenia, dodać +1 i spowrotem złożyć w całość
nie testowałem, pisałem z głowy, ale myśle, że powinno chulać ;P Ten post edytował misiek172 26.02.2007, 16:59:54 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 98 Pomógł: 1 Dołączył: 7.08.2005 Skąd: Górny Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Bardzo mi pomógł Twój post, dzięki.
Teraz mam problem z bazą danych, otóż jak wprowadzam pierwszy raz do bazy, ze skrótem powiedzmy JK, to wszystko jest fajnie: wychodzi 0001JK07, drugi raz z tym samym - super 0002JK07. Jednakże, gdy trzeci raz wprowadzę z innym skrótem, np. MN => 0001MN07, bardzo dobrze. Problem zaczyna się, gdy chcę wprowadzić teraz 4 raz - ponownie ze skrótem JK, to zamiast 0003JK07 - wprowadza mi znowu 0001JK07. Przypuszczam, że problem jest w zapytaniu do bazy, może dodać jakieś nowe pole trzeba? Oto zapytanie:
Kod generujący:
Jak temu z kolei zaradzić? |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 576 Pomógł: 14 Dołączył: 9.11.2005 Ostrzeżenie: (20%) ![]() ![]() |
Przygotowałbym sobie baze danych nastepująco :
Tabela umowa : | ID_umowa | ID_kontrahent | Identyfikator | Numer_umowy | Rok | Pole identyfikator nie jest w sumie niezbędne bo identyfikator możesz trzymać w tabeli Kontrahent - później przy wyswietlaniu umowy pobierać identyfikator. Teraz łatwo możesz dodawać kolejne wpisy - wyciagasz z bazy najwyzszy numer umowy przypisany do danego kontrehenta inklementujesz go o 1 i tworzysz nowy wpis do bazy. Pozdrawiam |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 98 Pomógł: 1 Dołączył: 7.08.2005 Skąd: Górny Śląsk Ostrzeżenie: (0%) ![]() ![]() |
No dobra mniej więcej podobnie mam skonstruowaną bazę.
Jednak problemem jest w jaki sposób mam wyciągnąć tej najwyższy identyfikator. |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 576 Pomógł: 14 Dołączył: 9.11.2005 Ostrzeżenie: (20%) ![]() ![]() |
Już pisze :
Tworzysz sobie funkcje ktora wybiera kontrahentow z bazy i wyswietla w polu select :
wywolujesz nastepujaco :
Odbierasz sobie ID kontrahenta - wybierasz najwyzszy nr z bazy
I tyle robisz teraz nowy wpis do bazy |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 83 Pomógł: 1 Dołączył: 18.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Według mnie to trochę głupie, skoro masz pewność, że tych osób będzie tylko 6 to nie lepiej samemu dodać te indentyfikatory zamiast sie tyle pocić ?
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 656 Pomógł: 3 Dołączył: 26.10.2005 Skąd: Częstochowa Ostrzeżenie: (0%) ![]() ![]() |
Może w czymś pomoże...
Tą funkcją w moim skrypcie podaje sobie nastepny numer w kolejności. mój format danych np: '326/2007'
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 23:46 |