PHP 답글 구현

김석재·2023년 3월 21일
0

PHP

목록 보기
1/6

새로운 숫자를 생성해주는 것으로 구현하려고 생각했었으나 depth가 깊어질수록 로직이 더 어려워졌고 구현하기 위한 조건들이 많이 붙기 시작했음.

중복되는 값이 없는 게시글의 no를 활용해서 부모의 게시글 no를 계속해서 받아오는 것으로 depth를 늘려나갈 수 있다는 조언을 받고 로직을 조금 바꿔보았음

해당 게시글의 답글을 달 때는 부모 게시글의 ec_no가 첫번째 depth인 parents가 되고, 답글의 답글은 부모의 ec_no값이, 답글의 답글의 답글도 부모의 ec_no값을 넣음으로서 로직을 구현할 수 있었다.

reply.php

<?PHP
include $_SERVER['DOCUMENT_ROOT']."/include/header.php";
?>
<?php
include_once $_SERVER['DOCUMENT_ROOT']. "/classes/board.class.php";

$boardHandler = new BOARD();
$row = $boardHandler->detailBoard();
?>

<br>
<br>
<br>

<html>
<head>
    <script>
        function writeCheck(){
            let writeSub = document.getElementById('subject').value;
            let writeContent = document.getElementById('content').value;
            if (writeSub.length == 0){
                alert("제목을 입력하세요")
                return false;
            }else if (writeContent.length == 0){
                alert("내용을 입력하세요");
                return false;
            } else {
                return true;
            }
        }
    </script>
</head>
<body>
<h2>답글</h2>
<? if($row['parents'] && $row['ec_depth'] && !$row['ec_de_depth']){
?>
        <h3>de_depth</h3>
    <form name="writeForm" action="/board/bExec.php" onsubmit="return writeCheck()" method="post">
        <input type="hidden" name="mode" value="write">
        <input type="hidden" name="parents" value="<?echo $row['parents']?>">
        <input type="hidden" name="depth" value="<?echo $row['ec_depth']?>">
        <input type="hidden" name="de_depth" value="<?echo $row['ec_no']?>">
        제목 : <input type="text" name="subject" id="subject" placeholder="제목을 입력하세요"><br>
        내용 : <textarea name="content" id="content" rows="4" cols="50" placeholder="내용을 입력하세요"></textarea>
        <input type="submit" value="글 등록">
    </form>
<?
}   else if(!$row['ec_depth'] && $row['parents']){?>
        <h3>depth</h3>
    <form name="writeForm" action="/board/bExec.php" onsubmit="return writeCheck()" method="post">
        <input type="hidden" name="mode" value="write">
        <input type="hidden" name="parents" value="<?echo $row['parents']?>">
        <input type="hidden" name="depth" value="<?echo $row['ec_no']?>">
        제목 : <input type="text" name="subject" id="subject" placeholder="제목을 입력하세요"><br>
        내용 : <textarea name="content" id="content" rows="4" cols="50" placeholder="내용을 입력하세요"></textarea>
        <input type="submit" value="글 등록">
    </form>
<?
}   else if(!$row['parents']){?>
    <h3>parents</h3>
    <form name="writeForm" action="/board/bExec.php" onsubmit="return writeCheck()" method="post">
        <input type="hidden" name="mode" value="write">
        <input type="hidden" name="parents" value="<?echo $row['ec_no']?>">
        제목 : <input type="text" name="subject" id="subject" placeholder="제목을 입력하세요"><br>
        내용 : <textarea name="content" id="content" rows="4" cols="50" placeholder="내용을 입력하세요"></textarea>
        <input type="submit" value="글 등록">
    </form>
<?
}?>
</body>
</html>


<?PHP
include $_SERVER['DOCUMENT_ROOT']."/include/footer.php";
?>

boardWrite() 클래스

 $parents = $_POST['parents'] ? $_POST['parents'] : "NULL";
            $depth = $_POST['depth'] ? $_POST['depth'] : "NULL";
            $de_depth = $_POST['de_depth'] ? $_POST['de_depth'] : "NULL";

            $sql = "insert into educommunity (ec_subject, ec_content, em_no, em_id, parents, ec_depth, ec_de_depth, ec_filename, ec_uploadfile) values ('" . $_POST['subject'] . "','" . $_POST['content'] . "','" . $_SESSION['no'] . "', '" . $_SESSION['id'] . "', {$parents}, {$depth}, {$de_depth}, {$fileName}, {$upload})";
            $stmt = $dbconn->prepare($sql);
            $stmt->execute();
            $row = $stmt->fetch();

0개의 댓글