Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Generowanie ciągu cyfr.
Forum PHP.pl > Forum > PHP
subtelny
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 : )
phpion
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
webdice
  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.
thek
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 :/
subtelny
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 : )

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