새로운 숫자를 생성해주는 것으로 구현하려고 생각했었으나 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();