채택완료

폼메일 질문드립니다.

2016-11-17 (목) 19:00:30 3,069

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개 / 댓글 4개

채택된 답변
+20 포인트
2016-11-17 (목) 20:20:43

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

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

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

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

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

답변에 대한 댓글 3개

2016-11-17 (목) 21:06:11
또 답변주셨네요. 감사드립니다.
알려주신대로 처리하고 메일로 받아보면
상담종류 : Array 로 나옵니다.
어떻게 찍으셨는지 모르겠지만
$wr2 = implode(", ", $_POST['wr_2']);
echo $wr2;
이렇게 하면 체크한 값들이 ,(콤마)로 연결되어서 문자열이 됩니다.
implode() 함수 자체가 배열을 문자열로 바꾸는 역할을 합니다.
Array라고 나온 건 implode 함수를 안 쓰셨거나 $wr2 변수를 안 찍고 $wr_2를 찍었기 때문이 아닐까 싶네요.
2016-11-17 (목) 23:00:33
아~제가 잘못 입력했었네요.
$wr2로 하니까 이제 됩니다.!!
너무 감사합니다.
며칠 고생하던건라 너무 감사합니다.
편한밤 되세요.^^
Copy
<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>
Copy
$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을 하시면 됩니다.

답변에 대한 댓글 1개

2016-11-17 (목) 23:01:29
복스리님.
오랜만에 뵙습니다.^^
위에 분 답변으로 해결했습니다.
귀한 시간 내주셔서 감사드립니다.

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