Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Problem z strlen
dopal
post 23.01.2018, 10:02:01
Post #1





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 9.02.2009

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


Witam,

Mam taki problem. Pobieram sobie z bazy ( niestety nie moja, nie mam wpływu na jej strukturę ) dane na podstawie poniższego zapytania.
  1. $query3a="SELECT DADWNZ, DADWIM, DADWPS FROM OSOBY WHERE ID='$id_gen'";
  2. $result3a = odbc_exec($connect, $query3a) or die( odbc_error());
  3.  
  4. $naz_bk1a = trim(odbc_result($result3a, 1));
  5. $imi_bk1a = trim(odbc_result($result3a, 2));
  6.  
  7.  
  8. $pes_bka1 = trim(odbc_result($result3a, 3));
  9.  

Problem pojawia się przy $pes_bka1. Zmienna ta pobiera pole pesel z tabeli. Gdy pesel był w postaci 11 cyfr np. 98010112345 nie było problemu. Problem pojawiał się z osobami urodzonymi w roku 2000 i kolejnymi latami, gdyż na początku peselu
widnieją cyfry 00 np. 00110112345, a w zmiennej wyświetla się 110112345.

wiec pomyślałem, że będę zliczał znaki i dodawał brakujące 0 na początku
  1.  
  2. if (strlen ($pes_bka1==11) ){
  3.  
  4. $r_tekst = '00'.$pes_bka1.'';
  5. }
  6. elseif (strlen ($pes_bka1==10)){
  7.  
  8. $r_tekst = '0'.$pes_bka1.'';
  9. }
  10. elseif (strlen ($pes_bka1==9)){
  11.  
  12. $r_tekst = '0'.$pes_bka1.'';
  13. }
  14. else {
  15.  
  16. $r_tekst = ''.$pes_bka1.'';
  17. }
  18.  
  19. echo $r_tekst;
  20.  


Ale przy takim zapisie mi to niestety nie działa i wyświetla taką ilość znaków jak pobrał z bazy. Ktoś wie w czym może być problem lub jak to inaczej zrobić?
Go to the top of the page
+Quote Post
trueblue
post 23.01.2018, 10:04:32
Post #2





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

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


http://php.net/manual/en/function.str-pad.php
https://dev.mysql.com/doc/refman/5.7/en/str...l#function_lpad

Zmień typ pola na znakowy.


--------------------
Go to the top of the page
+Quote Post
dopal
post 23.01.2018, 10:51:36
Post #3





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 9.02.2009

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


Cytat(trueblue @ 23.01.2018, 10:04:32 ) *

Jesli chodzi o zmianę typu pola w bazie, to nie mogę tego zrobić.

Jeśli robię
  1. echo strlen ($pes_bka1);

To wyświetla mi się zliczona ilość znaków ze zmiennej np. 11 czy 9
Pytanie dlaczego przy stosowaniu warunków nie są wprowadzane zmiany i dodane np. 00

Ten post edytował dopal 23.01.2018, 11:02:00
Go to the top of the page
+Quote Post
trueblue
post 23.01.2018, 11:12:51
Post #4





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

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


Sprawdzałeś linki, które podałem?


--------------------
Go to the top of the page
+Quote Post
dopal
post 23.01.2018, 11:14:17
Post #5





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 9.02.2009

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


Cytat(trueblue @ 23.01.2018, 11:12:51 ) *
Sprawdzałeś linki, które podałem?

tak
Jeśli miałeś ma myśli zmianę typu pola w bazie, to napisałem, że nie mogę tego zrobić. Chyba, że coś innego masz na myśli. Jeśli tak to nie rozumiem co.
Go to the top of the page
+Quote Post
trueblue
post 23.01.2018, 11:14:50
Post #6





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

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


Przejrzyj je jeszcze raz. Dokładnie.


--------------------
Go to the top of the page
+Quote Post
dopal
post 23.01.2018, 11:26:14
Post #7





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 9.02.2009

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


Cytat(trueblue @ 23.01.2018, 11:14:50 ) *
Przejrzyj je jeszcze raz. Dokładnie.

Ok. Chyba działa snitch.gif
Przynajmniej w jednym miejscu ( mało istotnym ). Teraz to przetestuję w istotnym miejscu programu.
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 Wersja Lo-Fi Aktualny czas: 10.05.2025 - 21:02