본문 바로가기
PHP

[PHP] 체크박스를 이용한 삭제 시 고려해야할 점

by 개발하자구 2023. 3. 14.

(adm폴더의 boardgroup_list.php를 참고해서 만듦)

 

zcompany.list.php에서 체크박스 삭제 시 고려해야할 점.

 

사용자가 볼 수 있는 zcompany.list.php 페이지에서 현재는 삭제버튼 한 개 밖에 없어서 상관없지만, 그 외의 버튼이 여러개 일 경우 formaction을 상황에 따라 다르게 나중에 문제가 될 수 있다.

그래서 일반적인 form 태그에 action을 주는게 아니라

상황에 맞는 버튼을 클릭할 시(onclick) javascript 함수로 가서 거기서 action도 주고 post, submit도 주게 만든다.

 

이렇게 하면 javascript내에서 method방식도 상황에 따라 post나 get을 바꿀 수 있다.

 

중요한 점은 name을 chk_wr_id이 아닌 chk_wr_id[]로 주는데 이는 배열을 의미한다.

name="chk_wr_id[]"

 

하지만 서버에서 받을 때는  chk_wr_id[]가 아닌

$_POST['chk_wr_id'];

로 받는다.

 

참고)

버튼을 누를 때 마다 그에 맞는 상황에서의 문구를 바꿔주고 싶을 때 사용하는 방법.

document.pressed=this.value

 

<button type="submit" value="선택삭제" onclick="document.pressed=this.value">선택삭제</button>

(skin폴더의 list.skin 참조 )

 

 

 

참고2)
< javascript>

폼에 접근하는 방법.

 

name으로 접근 = > document.( name)

var f = document.myForm; // 폼이름으로 접근

var f = document.forms[0]; // 첫번째 폼

 

var birth = document.getElementsByName("birth")[0].value;

// 객체의 이름(name) 속성을 이용하여 접근

var age = document.getElementById("age").value;

// id 속성 접근

 

 

 

그리고 나서 자바 스크립트를 거쳐서 submit을 했다면, 이제 submit한 요소들을 받아 delete 처리하는 delete.php로 이동.

 

현재 delete.php에는 view.php에서 사용하는 delete구문이 하나 들어가 있음($cid를 이용한 1개 게시물 삭제 ).

 

여기서 밑그림 그리기!

 

방법1. view.php에서 사용하는 deletelist.php에서 사용하는 체크박스 delete를 분리해서 별개의 삭제 구문으로 사용하기.

 

방법2. view.php에서 사용하는 deletelist.php에서 사용하는 체크박스 delete를 혼용해서 한 구문으로 녹여내서 사용하기.

 

 

방법2. 를 상세히 풀면

 

if((int)$cid!=0){ // $cid가 존재하는 view.php에서 넘어왔다는 뜻.

 

      $tmp_array[0] = $cid; // array [0번]에 굳이 담는 이유는 sql구문을 1개로 view.phplist.php를 같이 사용하기 위해서..

 

} else {       // 여기에는 $(int)cid==0인 것들이 들어오는데 그 중에서 배열(list.php에서 넘어오는..)로 넘어오는 것들도 함께           포함되어 있다.

       if (isset($_POST['chk_wr_id']) && is_array($_POST['chk_wr_id'])){     // list.php에서 넘어오는 배열을 확인해줘줌.

                    $tmp_array = $_POST['chk_wr_id'];             // 체크박스에서 표시된 값들을 $tmp_array라는 곳에 넣어줌

} else {

alert("잘못된 접근입니다.", $href_list);                 // view.php에서 잘못넘어온 $(int)cid==0인 것들도 여기서 걸러냄.

return;

}

 

if((int)$cid!=0){  
    // zocmpany.view.php 삭제 (zocmpany.list.php 삭제와 함께 같은 방식으로 삭제하려면 이렇게 해야한다. 참고로 $cid가 존재하는 view.php에서 넘어왔다는 뜻.)
    $tmp_array[0] = $cid;   
} else {
    // zocmpany.list.php 삭제
    if (isset($_POST['chk_wr_id']) && is_array($_POST['chk_wr_id'])){
        $tmp_array = $_POST['chk_wr_id'];
    } else {    
        alert("잘못된 접근입니다.", $href_list);
        return;
    }
}

 

여기서부터는 tmp_arraycount 하고 나서 for문을 이용해 배열을 한 개씩 풀어내어 sql문에 집어 넣는다.

$chk_count = count($tmp_array);
//echo "몇개냐 : ".$chk_count. "<br>";
for ($i=0; $i < $chk_count; $i++) {         
    //echo $tmp_array[$i]."<br>";    
    $sql = " delete from zcompany where id = '$tmp_array[$i]' ;";   
    sql_query($sql);  
    //echo $sql."<br>";  +sql_query($sql);    
}