Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: char to intiger , intiger to char
Forum PHP.pl > Forum > PHP
Stratoliner
Witam. Nie jestem pewien czy to pytanie nie powinno byc w przedszkolu ale:

Mam numery dokumentów zapisane w bazie jako charakter np. 00000125
Te numery muszą kolejno narastać i o ile nie mam problemu z obliczeniem jaki ma być kolejny nr to jest problem by go zapisać w bazie na odpowiednich miejscach tzn:
Jeśli wynikiem jest np. 99 to zapisuje mi w bazie jako 99 a powinien jako 0000099 bo ta kolumna jest charakter ( wypełnia od lewej ).
Napisałem funkcję która przed wynik obliczeń dołoży ciąg „0” ale nie wiem jak połączyć te zera z wynikiem by powstał ciąg znaków który będę mógłzabisac do bazy.
Mam:

  1. function f_model_numer_dok_nastepny($filia,$kodins)
  2. {
  3. $db = connect($filia);
  4. $query = "select CAST(serbloczki.nrdokdo AS integer)-serbloczki.pozostalo+1 numernastepny
  5. FROM
  6. public.serbloczki,
  7. public.pracownicy
  8. WHERE
  9. serbloczki.kodpuz = pracownicy.kodpuz AND
  10. ipracownicy.kodins = '".$kodins."';";
  11. $result = pg_query($query) or die('Nieprawidłowe zapytanie: ' . pg_last_error());
  12. $line = pg_fetch_array($result, null, PGSQL_ASSOC);
  13. if ($line < 10)
  14. {
  15. $line = $line['numernastepny'];//wynikiem ma być np 0000009 zrobiłem np. $line = ‘00000’. $line = $line['numernastepny'].; ale oczywiście nie działa…
  16. }
  17. elseif ($line < 100)
  18. {
  19. $line = $line['numernastepny'];//wynikiem ma być np 0000099
  20. }
  21. elseif ($line < 1000)
  22. {
  23. $line = $line['numernastepny'];//wynikiem ma być np 0000999
  24. }
  25. elseif ($line < 10000)
  26. {
  27. $line = $line['numernastepny'];//wynikiem ma być np 0009999
  28. }
  29. elseif ($line < 100000)
  30. {
  31. $line = $line['numernastepny'];//wynikiem ma być np 0099999
  32. }
  33. elseif ($line < 1000000)
  34. {
  35. $line = $line['numernastepny'];//wynikiem ma być np 0999999
  36. }
  37. return $line['numernastepny'];
  38. }
  39.  
  40.  


Czy ma ktoś pomysł jak to zapisać?
A może jest inny niż powyższy pomysł na zapisanie w char cyfr od prawej?
nospor
A wystarczyło zajrzeć do manuala..... ludzie lubią sobie sami szkodzić...
http://php.net/manual/en/function.str-pad.php
thek
Pytanie tylko po co zrzucać to na skrypt, skoro baza danych też potrafi to robić samodzielnie? Zobacz kiedy można użyć ZeroFill i jak to działa.
Stratoliner
Faktycznie:
  1. return str_pad($line['numernastepny'], 7, "0", STR_PAD_LEFT);


Załatwiło sprawę!
Dzięki !
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.