ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (기능추가4-6) 댓글삭제기능 구현(백엔드)
    프로젝트/프로젝트_사진첩 2023. 9. 17. 17:46

    image_display230906.php

        $sql2 = "SELECT * FROM comment WHERE image_id={$filtered_id}";
        $result2 = mysqli_query($conn, $sql2);
        while ($row = mysqli_fetch_array($result2)){
            $delete_box = '
            <form class="delete_box" action="process_comment_delete.php" method="POST" onsubmit="if(!confirm(\'정말 삭제하시겠습니까?\')) {return false;}">
                <input type="hidden" name="id" value="'.$row['id'].'">
                <input type="hidden" name="page_id" value="'.$_GET['id'].'">
                <input id="delete_submit" type="submit" value="X">
            </form>
            ';
            $escaped_comment = htmlspecialchars($row['comment']);
            $comment_list = $comment_list."<li class='float_left'>{$escaped_comment}</li>{$delete_box}";
        }

    delete_box를 삽입한 후 댓글간 간격을 맞추도록 css를 설정함

    form.delete_box{
        margin-left : 7px;
        display:block;  //block속성을 이용해서 x박스이후 줄바꿈이 되도록 설정함
        margin-bottom:5px; //댓글 사이의 간격을 조정
    }

    process_comment_delete.php

    <?php
    $conn=mysqli_connect("localhost:81","root","password","project_memories");

    settype($_POST['id'], "integer");
    $filtered = array(
        'id'=>mysqli_real_escape_string($conn, $_POST['id']),  //comment테이블의 id값
        'page_id'=>mysqli_real_escape_string($conn, $_POST['page_id'])
    //원래 페이지로 되돌아가기위한 id값(image테이블의 id값)
    );
    $sql = "DELETE FROM comment
            WHERE id = {$filtered['id']};
    ";
    $result = mysqli_query($conn, $sql);
    if($result == false){
        echo "삭제하는 과정에서 문제가 생겼읍니다.";
        error_log(mysqli_error($conn));
    } else {
        header("Location: image_display230906.php?id=".$filtered['page_id']); //원래페이지로 리다이렉트하는 함수
    }
    ?>

    comment table / image_id키는 image테이블의 외래키이다.

    느낀점>

    -delete box를 백엔드로 어떻게 구현할지, 테이블은 어떤식으로 구성할지 고민을 많이 했다. 

    하지만 comment테이블의 id값을 그대로 받아온다는 생각을 하지 못했었는데, 코드를 보다가 그 생각이 문득 떠올랐다.

    테이블을 또 나누고, 바꾸고할 생각에 머리가 아팠었는데 있는것을 그대로 활용하여 기능을 구현해서 기분이 좋았다.

Designed by Tistory.