ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [php] 다중checkbox 선택 / 삭제처리
    개발/php 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();
     }

     

     

    반응형
Designed by Tistory.