채택완료

리스트에서 여분필드 수정되면 메일 발송되도록 처리하고 싶은데 잘 안되네요.

리스트에서 여분필드 수정되면 메일 발송되도록 처리하고 싶은데

ajax로 값은 수정이 되는데 메일 발송은 어떻게 해야 할지 모르겠네요.

list_up.php 페이지에서 실행이 가능한건지...

검색해서 이래저래 해보는데 초보라 잘 안되네요. TT

코드수정 부탁드립니다.

Copy
<select name="wr_12" id="wr_12_<?php echo $i;?>" onchange="wr12_chk('<?php echo $i;?>','<?php echo $list[$i]['wr_id'];?>',this.value);" class="form-control form-select-sm text-center g-font-weight-700 g-pl-5 g-pr-5">

                      <option value="" >확인중</option>

                      <option value="심사중" <? if($list[$i]['wr_12'] == '심사중') echo " selected "; ?>>심사중</option>

                      <option value="심사완료" <? if($list[$i]['wr_12'] == '심사완료') echo " selected "; ?>>심사완료</option>

                      <option value="대관취소" <? if($list[$i]['wr_12'] == '취소') echo " selected "; ?>>대관취소</option>

 

  </select>

 

<script>

 var wr12_chk = function(wr_num,wr_id,field) {

    $.ajax({

        type:"post",

        url:"<?php echo $board_skin_url;?>/list_up.php",

        data:

        {

            bo_table : g5_bo_table,

            wr_num : wr_num,

            wr_id : wr_id,

            wr_12 : field

        },

        dataType:"html",

        success:function(res){

            $("#wr_12_"+wr_num).val(res);

            if(res)

                alert(res+"(으)로 변경되었습니다");

            else

                alert("변경 실패");

        }

    });

}

</script>

list_up.php

Copy
<?php

include_once("./_common.php");

include_once(G5_LIB_PATH.'/mailer.lib.php');

 

$write_table = $g5['write_prefix'].$_POST['bo_table'];

$sql = " update ".$write_table." set wr_12 = '".$_POST['wr_12']."' where wr_id = '".$_POST['wr_id']."' ";

sql_query($sql);

$sql = "select wr_12 from ".$write_table." where wr_id = '".$_POST['wr_id']."' ";

$row = sql_fetch($sql);

 

if($row['wr_12'])

  echo $row['wr_12'];

else

 echo '';

 

// 심사완료시 작성자에게 메일 

if($_POST['wr_12']=="심사완료"){  // 심사완료 상태일때만 실행

   $wr_email = $super_admin[mb_email];

    $site_name = “사이트명”; //사이트이름 

    $site_email = $wr_email; //사용자가 입력한 이메일주소

    //보내는정보

    $recv_name = $site_name; //회신이름 

    $recv_mail = $site_email; //회신메일주소 

    //받는사람정보

    $subject  =  심사가 완료되었습니다.";  //메일제목 

    $send_mail =  "$wr_email"; //받는사람메일 

    ob_start();

    if($write['wr_subject']) echo $write['wr_subject'];

    if($write['wr_content']) echo $write['wr_content'];

    $content = ob_get_contents();

    ob_end_clean();

    mailer($recv_name, $recv_mail, $send_mail,  $wr_subject, $wr_content, 1);

 };

?>
|

답변 3개 / 댓글 3개

채택된 답변
+20 포인트

안녕하세요..^^
 
list_up.php 파일은 별도로 만드신거겠죠?

$site_email = $wr_email; //사용자가 입력한 이메일주소
if($write['wr_subject']) echo $write['wr_subject'];
if($write['wr_content']) echo $write['wr_content'];

위 3줄에서

$wr_email
$write['wr_content']
$write['wr_subject']
3개의 변수의 값은 안찍힐것 같아요.
(가물가물한데.. 위 $write 변수는 bbs/write.php 파일이였나? 거기서 정의해주는걸로 알고 있거든요.)

 
해결방법은,

$sql = "select wr_12 from ".$write_table." where wr_id = '".$_POST['wr_id']."' ";
이 소스에서,

sql = "select * from ".$write_table." where wr_id = '".$_POST['wr_id']."' ";
이렇게 수정하셔서, 데이터를 가져오시고,
(ajax쓰실 정도면, 쿼리를 기본적으로 컨트롤 할 수 있을것 같아 중간에는 생략해요.)

$wr_email = $row['wr_email'];
$write['wr_content'] = $row['wr_content'];
$write['wr_subject'] = $row['wr_subject'];
이런식으로? 수정을 하셔야 되지 않을까 해요.
 
혹여 그럼에도 메일이 안된다면,
mailer(~~~)에 각각 대응하는 변수가 제대로 찍히는지 체크해보시면 될것 같아요!

ps1) 스팸메일 필수로 확인할 것
ps2) 관리자에서 메일 테스트 해볼 것 (서버쪽 문제일수도 있음)
 
말씀하신 내용을 보면, wr_12에 데이터 값이 저장이 되었다면, ajax는 기본적으로 작동이 된다는 뜻이니까..
차근차근, 각 변수에 문제가 없는지 체크해보시면 해결이 되지 않을까 싶어요!

화이팅 하시구요..^^

답변에 대한 댓글 1개

넵 감사합니다. 임의로 넣으니 메일은 잘 오네요.
변수체크를 꼼꼼히 봐야 겠습니다.
2023-03-23 (목) 17:35:08
g5_bo_table, 이게 잘못지정된거 같아요
변수명에 '<?=$bo_table?>' 이렇게 들어가야될거 같구요

// 심사완료시 작성자에게 메일
이 아래쪽도 

$wr_email; 등의 이런 변수지정한거에 값이 들어가야할텐데 지금 소스로는 변수값들이 없을거 같아요

답변에 대한 댓글 1개

g5_bo_table 지정한건 확인결과 이상없이 잘 되는데
메일쪽이 문제네요 ~
2023-03-23 (목) 16:12:16

ajax로 하면 오류찾기도 쉽지않을거 같고요 그냥 팝업처리로 하심 어떨런지

답변에 대한 댓글 1개

감사합니다. 속 편하게 그렇게 해 볼까 합니다.

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