테스트 사이트 - 개발 중인 베타 버전입니다

신청폼 게시판에 [제출하기]기능 적용하기 채택완료

동물원 8개월 전 조회 1,412

여분필드를 활용해서 신청폼을 만들어서 사용하고 있습니다.

신청폼 작성까지는 완성을 했는데요.

 

추가적으로 적용할 사항이 있어서 문의 드립니다.

신청폼 작성 상태에서는 수정이 가능하고,

검토를 다 마치고  최종적으로 [제출하기]버튼을 누르고나면

이후에는 열람만 가능하고, 더 이상 수정을 할 수 없도록 적용하고 싶습니다.

 

즉, [제출하기] 버튼을 누르면 여분필드(ex. wr_10) 상태를 (0:제출전 => 1:제출완료)로 표시하고,

wr_10 의 값이 1일때 는 수정이 불가하게 하면 될 것 같은데요.

이렇게 적용하려면 어떻게 코드를 작성해야 할까요?

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트
8개월 전

<?php if($view['wr_10'] == '1') { ?>
<a>제출완료</a>
<?php } else { ?>
<a href="<?php echo G5_BBS_URL; ?>/write.php?bo_table=form01&w=u&wr_id=<?php echo $view['wr_id'];?>">수정하기</a>
<?php } ?>
이렇게 하면 작동 될 것입니다.

write.skin.php 파일에서는
<?php if($write['wr_10'] == '1' && $w == 'u') alert('제출완료된 건은 수정이 불가합니다.'); ?>
이렇게 하면 더이상 수정이 불가능 할 것입니다

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

glitter0gim
8개월 전

신청폼에서 "제출하기" 버튼을 누르면 wr_10 값을 1로 설정하고,

이후에는 수정이 불가능하도록 제한하는 기능을 구현.

프론트엔드에서는 "제출하기" 버튼 클릭 시 AJAX 요청을 통해 wr_10을 업데이트하며,

수정 페이지(write.php 또는 write_update.php)에서는 wr_10 == 1이면 수정을 차단 됨.

입력 필드 UI에 수정 불가 상태임를 명확히 표기함은 필수.

 

※ 그누_최신_구조 베이직 스킨 기준,  wr_10을 반영하는 예시. = = =

 

*bbs/submit_final.php  새로 생성/추가, wr_10 = 1로 업데이트

- AJAX 요청으로 wr_10을 업데이트하도록 처리함.

- 관리자와 글 작성자만 제출 가능.

</p>

<p><?php

include_once('./_common.php'); // 그누보드5 공통 파일 포함</p>

<p>// 로그인 체크

if (!$is_member) {

    die("로그인이 필요합니다.");

}</p>

<p>// POST 데이터 받기

$wr_id = isset($_POST['wr_id']) ? (int) $_POST['wr_id'] : 0;

$bo_table = isset($_POST['bo_table']) ? trim($_POST['bo_table']) : '';</p>

<p>if (!$wr_id || !$bo_table) {

    die("잘못된 접근입니다.");

}</p>

<p>// 현재 작성자 확인

$sql = "SELECT mb_id FROM `g5_write_{$bo_table}` WHERE wr_id = '$wr_id'";

$row = sql_fetch($sql);</p>

<p>if (!$row) {

    die("해당 게시글이 존재하지 않습니다.");

}</p>

<p>// 본인 확인 (관리자는 제외)

if ($row['mb_id'] !== $member['mb_id'] && !$is_admin) {

    die("본인만 제출할 수 있습니다.");

}</p>

<p>// 게시글 제출 상태 변경

$sql = "UPDATE `g5_write_{$bo_table}` SET wr_10 = 1 WHERE wr_id = '$wr_id'";

sql_query($sql);</p>

<p>echo "success";

?></p>

<p>

 

 

*"제출하기" 버튼을 클릭하면 submit_final.php로 AJAX 요청을 보낼 수 있도록,

/skin/board/basic/write.skin.php 수정 - - -

<?php if ($write['wr_10'] == '0') { ?>
    <button type="button" id="submit_final">제출하기</button>
<?php } else { ?>
    <span id="submit_status">제출완료</span>
<?php } ?>

<script>
document.getElementById('submit_final')?.addEventListener('click', function() {
    if (!confirm("최종 제출하시겠습니까? 제출 후에는 수정이 불가능합니다.")) return;

    let xhr = new XMLHttpRequest();
    xhr.open("POST", "<?php echo G5_BBS_URL; ?>/bbs/submit_final.php", true);
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xhr.send("wr_id=<?= $write['wr_id'] ?>&bo_table=<?= $bo_table ?>");

    xhr.onload = function() {
        if (xhr.status == 200 && xhr.responseText === "success") {
            alert("제출이 완료되었습니다.");
            document.getElementById('submit_final').remove();
            document.getElementById('submit_status').innerText = "제출완료";
        } else {
            alert("제출에 실패하였습니다.");
        }
    };
});
</script>

 

*제출된 글(wr_10 == 1)은 수정할 수 없도록 write.php 및 write_update.php에서 차단.

/bbs/write.php -

<?php if ($write['wr_10'] == '1' && $w == 'u') { ?>
    <script>
        alert("제출된 글은 수정할 수 없습니다.");
        history.back();
    </script>
<?php exit; } ?>

- /bbs/write_update.php -

if ($write['wr_10'] == '1') {
    die("제출된 게시글은 수정할 수 없습니다.");
}

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

s
sinbi Expert
8개월 전

값 존재 시 인풋태그에 readonly 속성 추가하는 방식으로 하시면 될 듯.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인