테스트 사이트 - 개발 중인 베타 버전입니다

우편번호 숫자 -> 문자열 치환 채택완료

coDribble 6년 전 조회 3,353

우편번호를 3자리 - 4자리 끊어서 받아와서 $member['mb_zip1'], $member['mb_zip2'] 로 불러오게끔 수정을 했는데...

 

앞에 0으로 시작하면 0은 제외가 되는 이슈가 생겨서

 

숫자를 문자열로 치환하는 방법을 검색 후 수정해봤는데... 적용이 되질 않아 문의 남겨봅니다ㅠㅠㅠ

 

우편번호 검색기능은 제거하고 직접 입력해서 데이터를 받는데

 

회원가입작성에서 9230995 라고 우편번호에 입력을 받으면

 

923995 로 출력이 됩니다..;;

 

db 에 저장된 값도 923995 로 저장되는걸 보니 애초에 문자열로 저장을 해줘야 할거 같아서

 

register_form_update 페이지에서 수정해봤는데 적용이 안되고있습니다ㅠㅠㅠ

 

</p>

<p>$mb_zip1        = isset($_POST['mb_zip'])           ? substr(trim($_POST['mb_zip']), 0, 3) : "";

$mb_zip2        = isset($_POST['mb_zip'])           ? substr(trim($_POST['mb_zip']), 4)    : "";</p>

<p>

 

strval() 로 문자열로 변환 방법도 써보고

홑따옴표를 데이터 양끝에 넣어서 문자열로 만들어 사용하라는 글도 있어서 그것도 해봤는데...

 

홑따옴표 사용시 홑따옴표까지도 문자열로 인식이 되어 이상하게 출력되는건지는 모르겠지만...

 

뒤 4자리가 0995 로 출력은 되는데 앞 3자리에서 마지막 자리수가 짤립니다...;;

 

</p>

<p>// output 923995</p>

<p>$mb_zip1        = isset($_POST['mb_zip'])           ? '\''.substr(trim($_POST['mb_zip']), 0, 3).'\'' : "";

$mb_zip2        = isset($_POST['mb_zip'])           ? '\''.substr(trim($_POST['mb_zip']), 4).'\''    : "";</p>

<p> </p>

<p>// output 920995</p>

<p>$mb_zip1        = isset($_POST['mb_zip'])           ? substr(trim('\''.$_POST['mb_zip'].'\''), 0, 3) : "";

$mb_zip2        = isset($_POST['mb_zip'])           ? substr(trim('\''.$_POST['mb_zip'].'\''), 4)    : "";</p>

<p>

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
세크티
6년 전

우편번호가 무조건 7자리로 넘어오나요? 그럼 아래처럼 해보시고, mb_zip 데이터형식이char(3)일텐데요. 이것도 char(4)로 바꾸셨나요?

$mb_zip1        = isset($_POST['mb_zip'])           ? substr(trim($_POST['mb_zip']), 0,3) : "";
$mb_zip2        = isset($_POST['mb_zip'])           ? substr(trim($_POST['mb_zip']), -4)    : "";
로그인 후 평가할 수 있습니다

답변에 대한 댓글 4개

c
coDribble
6년 전
넵! mysql 에서 mb_zip1 은 char(3) mb_zip2 는 char(4) 로 바꿔준 상태에서 안되고 있던거라....

오... 출력이 잘됩니다..ㅠㅠㅠ 혹시 4 와 -4 의 차이를 알수 있을까요...??

4는 앞에 3자리는 잘라내고 4번째 자리부터 쭉 뽑아내는거고,
-4는 뒤에서 부터 4자리만 잘라내서 뽑아오는거로 알고 있는데...

거꾸로 했을때는 0까지 출력되는 이유를 아시나요...??ㅠㅠㅠㅠ
세크티
6년 전
-4는 뒤에서 4개입니다.
세크티
6년 전
substr(trim($_POST['mb_zip']), 4) 는 01234 5번째부터 끝까지구요
c
coDribble
6년 전
@세크티 -4를 3으로 바꿔보니 동일하게 0까지 출력이 되네요...

4로 되어있어서 말씀하신거 처럼 5번째 자리수부터 출력이 돼서 995가 출력이 된거였나봅니다...;;

제가 substr 에 대해 제대로 이해를 못하고 있었네요;;

[code]
$mb_zip2 = isset($_POST['mb_zip']) ? substr(trim($_POST['mb_zip']), 3) : "";
[/code]

이렇게 바꿔주니... 잘나오네요... 감사합니다!!ㅠㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

Rido
6년 전

디비의 구조를 확인해 보시는게 좋을거 같습니다.

디비가 int형인경우 앞의 0이 빠지는걸지도 모르겠네요

int라면 char나 varchar를 이용해보세요

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

c
coDribble
6년 전
db의 자료형(?)은 건드리지 않고 자리수라고 하나요..?? 기존에 char(자리수) 이렇게 되어있는거에서 자리수만 3, 4로 바꿔준 상태였습니다ㅠㅠㅠ

위에 @세크티 님 답변처럼 뒤 4자리수 저장되는 $mb_zip2 에서 -4를 넣으니 출력은 잘 되고 있습니다...

해결은 했지만 원인이 궁금해지네요;; 4와 -4 차이인데... 뒤에서부터 자르는건 0이 출력된다는게...

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인