회원 정보 수정 페이지에 추가 이메일을 배열로 저장하려고 합니다.

회원 정보 수정 페이지에 추가 이메일을 배열로 저장하려고 합니다.

QA

회원 정보 수정 페이지에 추가 이메일을 배열로 저장하려고 합니다.

답변 3

본문

안녕하세요? 항상 도움 받고 있습니다. 감사합니다.

제가 회원 정보 수정 페이지에서 textarea 를 추가해서 줄 바꿈으로 추가 이메일을 저장했는데

*** 개인정보보호를 위한 이메일주소 노출방지 ***

이렇게 줄 바꿈 없이 한 열로 저장이 되더라고요.

textarea 에서 엔터 키를 입력하면 \n 이 저장되지 않는가요? ㅠㅠ

그래서 회원 정보 수정 페이지 입력 데이터를 저장하는 파일이 register_form_update.php 파일인 거 같아서 

아래와 같은 코드를 추가해주었습니다.

$extra_mb_email = $_POST['extra_mb_email']; // 줄 바꿈 없이 입력된 이메일 주소를 받습니다.
$extra_mb_email_array = preg_split('/\s+/', $extra_mb_email); // 이메일 주소를 콤마로 구분하여 배열로 분할합니다.
$extra_mb_email_array = array_map('trim', $extra_mb_email_array); // 이메일 주소 양쪽의 공백을 제거합니다.
$extra_mb_email = implode(',', $extra_mb_email_array);

그런데 아무 변화가 없습니다. 최소한 콤마라도 추가되어서 저장이 되어있을 줄 알았는데 말이죠.

insert 쿼리문하고 update 쿼리문하고는 관계 없이 코드만 추가해주면 될거 같은데 왜 배열로 저장이 안 되었을까요? 그리고 구분자가 없으니까 어떻게 해야 배열로 저장할 수 있을지 ㅠㅠ 처음부터 입력을 받을 때 콤마를 함께 입력해달라고 해야할까요? 왜 구분자 없이 입력값이 저장이 될까요 ㅠㅠ 어떻게 해야 하는지 좀 알려주실 수 있나요?

이 질문에 댓글 쓰기 :

답변 3


$extra_mb_email_array = str_replace("\n",",",$_POST['extra_mb_email']);

이렇게 하시면 될듯 합니다.

감사합니다. 제가 자바스크립트로 줄바꿈을 "\n" 으로 입력되게 해서 저장을 했는데 문제가 이제 view 에서 \n이 줄바꿈이 아니라 그대로 물자열로 출력이 되더라고요. 그래서 코드를

  <div class="form-group has-feedback">
<label class="col-sm-2 control-label" for="reg_mb_email"><b>E-mail 추가</b><strong class="sound_only">필수</strong></label>
<div class="col-sm-5">
<input type="hidden" name="extra_email" value="">
<textarea name="extra_mb_email" id="reg_extra_email" class="form-control" maxlength="255" style="height: 100px;"><?php echo str_replace("\n", '<br>', $member['extra_mb_email']); ?></textarea>
</div>
</div>

이렇게 수정해 주었는데도 그대로 "\n" 이 문자열로 출력이 되네요. 어떻게 해야 할까요?

그냥 화면에 출력을하면 엔터가 없는것 처럼 보일 뿐이지 엔터값은 넘어옵니다.

$extra_mb_email_array = explode("\n",$_POST['extra_mb_email']);

이렇게 배열에 저장이 되는지 확인해보세요.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 125,873
© SIRSOFT
현재 페이지 제일 처음으로