개발/php

[php] 다중checkbox 선택 / 삭제처리

lmhstyle 2019. 10. 16. 17:41
반응형

 

--- comp.php파일 <- list 부분

 

 

<script type="text/javascript">

function revcheck(theform) {
        for( var i=0; i<document.myform.url_num.length; i++) {
            var ele = document.myform.url_num[i];
            if(ele.name == 'url_num')
                ele.checked = !ele.checked;
        }
        return;
    }

    //체크된 목록 삭제
    function del() {
        j = 0;
        var cnt = 0;
        var a = new Array();
        var chk = document.forms.myform;

        for (i=0; i< chk.length; i++) {
            if(chk[i].checked) {
                j = 1;
                a[cnt] = chk[i].value;
                cnt = cnt+1;
            }
        } //end of for

        if (j == 0) {
            alert("목록을 체크하여 주십시요")
            return false;
        } else {
            ans = confirm("체크목록을 '삭제' 합니다.")
            if(ans == true) {
            //return true;
            var acnt = a;
            document.myform.action ="delete_ok.php?chk="+acnt;
            document.myform.target = "_self";
            document.myform.submit();
            }else {
                return false;
            } // end of ans
        } // end of if
    }

</script>

 

<!-- form이름 -->

<form name="myform" method="post">

<!--체크박스 전체 선택 할 버튼 -->

<a href='javascript:revcheck(this.form)'>전체</a>

<!-- 각 행마다 존재하는 체크박스 -->

<?

   for문 개행

?>

<input type="checkbox" name="url_num" value="<?=$list_row['no']?>">

<?

   }

?>

</form>

 

 

 

--- delete_ok.php <-- 삭제sql부분

 

   $no = explode(',',$no);          <-- 넘어오는값이 1,2,3.... 으로 한문장으로 오기에 explode함수를써서 ,로

                                                구분 후 배열상태로 만듬

    $nocnt = count($no);          <-- 배열의 갯수를 구하고

    for($i = 0; $i < $nocnt; $i++){  <-- 배열의 갯수만큼 for문을 돌림 / 돌아갈때마다 delete 시행
        $delete_sql = "delete from cm where no = :no";
        $delete_stt=$conn->prepare($delete_sql);
        $delete_stt->execute(
            array(
                ':no'=> $no[$i]
            )
        );
    }

 

 

 

다른소스는 생략하고 필요한 소스만 작성함.

-----------------------------------------------21.08.23 부연설명-----------------------------------------------

delete_ok.php 에서 explode 하는 $no 변수는 comp.php에서 넘어오는 삭제할 해당 글의 글번호임,

<input type="checkbox" name="url_num" value="<?=$list_row['no']?>">

에서 담겨있는 no값을 가져오는것임.

$no = explode(',',$no);  <-- 를 실행하게되면 $no 안에 , 로 이어붙인 게시글번호 ex) 1,2,3,4 들이 

$no[0] = 1

$no[1] = 2

$no[2] = 3

$no[3] = 4

으로 나눠지게되며

 

그 no[]의 개수를  count함수를 이용해서 $nocnt에 담게되고

for 문을 이용해서 $nocnt의 값 만큼 delete문이 실행됨.

본문에는 같은페이지에서 실행하기에 안써있지만

delete문이 있는 페이지로 값을 넘겨서 실행할때는

글 번호를 넘길떄 [$i]도 같이 적어서 실행시켜줘야함.

for($i = 0; $i < $nocnt; $i++){  <-- 배열의 갯수만큼 for문을 돌림 / 돌아갈때마다 delete 시행
        $conn = db연결

        $conn->delete($nocnt[$i], $conn);

        $conn->disconnect();
 }

 

 

반응형