회원들 핸드폰번호 일괄로 하이픈을 넣는 방법이 있을까요?
본문
회원가입할때 회원들의 핸드폰번호를 받고잇는데,
mb_hp 에서
하이픈이 있는 경우와 하이픈이 없는 경우가잇어서요
하이픈이 없는 경우에 일괄적으로 하이픈을 전부 넣으려면 어떻게 해야할까요?
답변 4
간략하게 이런식이면 될거같네요
그냥 회원목록을 쭉 불러오고
다시 넣어주면 됩니다.
<?php
$sql = " select * from {$g5['member_table']} ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++) {
$mb_hp = hyphen_hp_number($mb_hp); // 하이픈을 붙인다. (그누보드5 기본 내장 함수)
// 새 연락처로 update
$sql = " update {$g5['member_table']} set mb_hp = '{$mb_hp}' where mb_id = '{$row['mb_id']}' " ;
sql_query($sql);
}
?>
방법은 몇가지가 있는데
회원의 ID와휴대폰번호를 추출해서
전체회원의 정보를 일괄변환하는 쿼리를 만들어서 수정하는게 가장빠릅니다.
또다른 방법은
update문으로 replace를 하되
전체회원의 휴대폰번보필드의 값에서 -을 전부 제거하고
다시 전체회원의 휴대폰번호필드의 숫자를 3,4,4 패턴으로 재구성는
update member테이블
set hp = concat(substr(hp, 0,3), '-',concat(substr(hp, 3,4)), '-',concat(substr(hp, 7,4)))
와 같은 쿼리를 만들어서
위의 내용은 샘플입니다.
실제 자리수가 0부터가 맞는지 1부터가 맞는지 4자리인지는
select substr(hp,0,3), substr(hp,3,4), substr(hp7,4), hp from 멤버테이블
와 같은 형태로 조회를 해서 이상 유무를 체크하셔서 진행하시면됩니다.
윗분들처럼 php에서 수정하는 방법도 있고
입력받을때 자바스크립트 적용을 해줘도 됩니다
<script>
function validatePhone(str) {
var tmp = '';
str = str.replace(/[^0-9]/g, '');
if (str.length < 4) {
tmp = str;
} else if (str.length < 7) {
tmp += str.substr(0, 3) + '-' + str.substr(3);
} else if (str.length < 11) {
tmp += str.substr(0, 3) + '-' + str.substr(3, 3) + '-' + str.substr(6);
} else {
tmp += str.substr(0, 3) + '-' + str.substr(3, 4) + '-' + str.substr(7);
}
return tmp;
}
</script>
데이터를 수정하는 방식보단 - 없이 모든 데이터를 받은후 php 정규표현식으로 디스플레이하는방식이 맞을듯합니다