Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Generowanie ciągu cyfr.
subtelny
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 9.12.2009

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


Witam serdecznie.

Mam pewien problem z wymyśleniem systemu, który będzie generował kod, za pomocą wyciągniętego wcześniej z bazy danych id.

Usiłuję, aby skrypt generował ciąg 13 znaków:

x yyyyyyyyyyyy, gdzie x to kategoria, do której należy dany przedmiot, y to ciąg cyfr wygenerowany z id.

Przykładowo:

1 000000000678

Co będzie oznaczało (przykładowo): Kategorię "Zupki chińskie" (1), produkt o id 678.

Zależy mi zwłaszcza na podpowiedzi, jak "wypełnić" zerami ten ciąg cyfr.

Byłbym wdzięczny za wszystkie podpowiedzi.

Pozdrawiam : )
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
phpion
post
Post #2





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




Cytat(subtelny @ 2.03.2010, 14:04:12 ) *
Zależy mi zwłaszcza na podpowiedzi, jak "wypełnić" zerami ten ciąg cyfr.

str_pad
Go to the top of the page
+Quote Post
webdice
post
Post #3


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




  1. <?php
  2.  
  3. $productId = 678;
  4. $categoryId = 1;
  5.  
  6. print $categoryId . str_pad( $productId, 13 - strlen( $categoryId ), '0', STR_PAD_LEFT );
  7.  
  8. ?>


EDIT:

  1. <?php
  2.  
  3. $productId = 678;
  4. $categoryId = 1;
  5.  
  6. print $categoryId . sprintf( '%0' . ( 13 - strlen( $categoryId ) ) . 'd', $productId );
  7.  
  8. ?>


Skrypt bierze pod uwagę kategorię powyżej id 9.
Go to the top of the page
+Quote Post
thek
post
Post #4





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




Ciąg na pewno jest 13 znakowy? bo jak dla mnie to przy 10 i więcej kategoriach Ci się system może "rozjechać" jeśli nie przewidzisz tego odpowiednio. Musisz mieć jakiś delimiter kategorii i produktu inny od zer bo inaczej jak rozróżnisz czy ciąg poprawny wedle definicji "13-znakowy kod"
1100000000678
to kategoria 11 i produkt 678, czy może
to kategoria 1 i produkt 100000000678
A co dopiero się będzie działo gdy kategorie zamienią się na setki lub tysiące? Horror.
Chyba łapiesz ideę dlaczego skrypt w obecnej postaci jest lekko mówiąc "nieskalowalny"? Zwyczajnie ograniczasz liczbę kategorii do maksymalnie 9 :/


--------------------
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
subtelny
post
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 9.12.2009

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


Maksymalnie 10 ; ) Zero też możemy liczyć do naszego kodu. Otóż kategorii nie będzie więcej jak 10, więc 13 cyfrowy kod jest całkowicie wystarczający. Nie muszę się o to martwić. Dziękuję serdecznie za pomoc : )

Go to the top of the page
+Quote Post
thek
post
Post #6





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




Chyba że tak. Troche ograniczasz możliwość rozwoju tego w przyszłości, ale skoro wystarcza to i nie przewidujesz zmian to może być. Mój post był tylko w ramach dodatku, który miał Ci uświadomić możliwy do zaistnienia problem.


--------------------
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: 21.08.2025 - 14:57