Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> char to intiger , intiger to char
Stratoliner
post
Post #1





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 11.03.2013

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


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?

Ten post edytował Stratoliner 11.03.2013, 08:12:11
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A wystarczyło zajrzeć do manuala..... ludzie lubią sobie sami szkodzić...
http://php.net/manual/en/function.str-pad.php


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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





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




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.


--------------------
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
Stratoliner
post
Post #4





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 11.03.2013

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


Faktycznie:
  1. return str_pad($line['numernastepny'], 7, "0", STR_PAD_LEFT);


Załatwiło sprawę!
Dzięki !
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: 22.08.2025 - 02:04