폼메일 질문드립니다.

폼메일 질문드립니다.

QA

폼메일 질문드립니다.

본문

if ($mail) {
    check_token();

    $from_name  = "예약상담";
    $from_email = "mail@mail";
    $email = explode(",", $mail);
 $sub = "이름 : $name \n 나이 : $wr_1 \n 성별 : $wr_3 \n 연락처 : $phone-$phone2-$phone3 \n 직업 : $wr_4 \n 주거지역 : $city \n 상담종류 :$wr_2 \n 상담내용 : $wr_content";
    for ($i=0; $i<count($email); $i++)
        mailer($from_name, $from_email, trim($email[$i]), "예약상담", $sub);

    echo <<<HEREDOC
    <SCRIPT type="text/javascript">
        alert("예약상담이 접수 되었습니다.");
    </SCRIPT>
HEREDOC;
}

$token = get_token();

 

<input type="checkbox" name="wr_2" value="jsp" onclick="javascript:checkBoxClick()">JSP<br>
<input type="checkbox" name="wr_2" value="js2p" onclick="javascript:checkBoxClick()">JSP2<br>
<input type="checkbox" name="wr_2" value="jsp3" onclick="javascript:checkBoxClick()">JSP3<br>
<input type="checkbox" name="wr_2" value="jsp4" onclick="javascript:checkBoxClick()">JSP4<br>
<input type="checkbox" name="wr_2" value="jsp5" onclick="javascript:checkBoxClick()">JSP5<br>

 

위 소스는 상담신청 폼인데요.

신청하면 메일로 접수가 됩니다.

그런데 wr_2 부분을 다중선택이 되게 해야하는데요.

현재는 여러개를 체크해도 마지막 체크한 내용만 메일로 옵니다.

wr_2에 체크한 값이 모두 메일로 오게 하려면 어떻게 해야하는지 회원님들 도움을 부탁드립니다.

꾸벅~

 

 

이 질문에 댓글 쓰기 :

답변 2

php에서는 name이 같을 경우 제일 마지막 것만 값이 넘어갑니다(asp는 다름).

이름을 배열로 해서 넘기거나 아니면 아예 이름을 다르게 해서 넘기거나 둘 중 하나 선택하셔야 합니다.

 

name="wr_2[]" 이렇게 전부 바꾸셔서 실제 받는 페이지에서

$wr2 = implode(", ", $_POST['wr_2']);

이렇게 해서 받으시는 게 제일 편합니다. 

어떻게 찍으셨는지 모르겠지만
$wr2 = implode(", ", $_POST['wr_2']);
echo $wr2;
이렇게 하면 체크한 값들이 ,(콤마)로 연결되어서 문자열이 됩니다.
implode() 함수 자체가 배열을 문자열로 바꾸는 역할을 합니다.
Array라고 나온 건 implode 함수를 안 쓰셨거나 $wr2 변수를 안 찍고 $wr_2를 찍었기 때문이 아닐까 싶네요.


<input type="checkbox" name="wr_2[]" value="jsp" onclick="javascript:checkBoxClick()">JSP<br>
<input type="checkbox" name="wr_2[]" value="js2p" onclick="javascript:checkBoxClick()">JSP2<br>
<input type="checkbox" name="wr_2[]" value="jsp3" onclick="javascript:checkBoxClick()">JSP3<br>
<input type="checkbox" name="wr_2[]" value="jsp4" onclick="javascript:checkBoxClick()">JSP4<br>
<input type="checkbox" name="wr_2[]" value="jsp5" onclick="javascript:checkBoxClick()">JSP5<br>

 


 
$from_name  = "예약상담";
$from_email = mail@mail;
$email = explode(",", $mail);
check_token();
 
for ($i=0; $i<count($wr_2); $i++)
{
    // 실제 값을 넘김
    $var = $_POST['wr_2'][$i];
    $sub = "이름 : $name \n 나이 : $wr_1 \n 성별 : $wr_3 \n 연락처 : $phone-$phone2-$phone3 \n 직업 : $wr_4 \n 주거지역 : $city \n 상담종류 :$var \n 상담내용 : $wr_content";
  mailer($from_name, $from_email, trim($email[$i]), "예약상담", $sub);
}
    echo <<<HEREDOC
    <SCRIPT type="text/javascript">
        alert("예약상담이 접수 되었습니다.");
    </SCRIPT>
HEREDOC; 
 

 

 

요렇게 하면 잘될껍니다.

약간의 설명을 하자면 php에선 wr_2값이 []사용을 하게되면 배열로 넘어갑니다.

참고로 asp에선 구분자를 포함해서 넘어갑니다. php에선 배열로 넘어가기때문에..

요런식으로 해서 구분하여 for 문을 사용하셔서 돌리시면 됩니다.

이부분은 그누보드에서도 보시면 비슷한 예가 잘 나와있습니다.

 

선택한 wr_2값이 배열로 넘아가기땜문에 선택한 크기 만큼 for문을 사용하여 배열을 변수로 담아서

원하는 곳에 assign을 하시면 됩니다.

 

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 123,736 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT