08. write.php
게시판 글작성/수정을 담당하는 페이지입니다.
같은 페이지이지만 GET 패러미터로 idx 값을 가지고 넘어오면 수정, 없으면 신규작성 페이지로 사용합니다.
<?php include_once "_head.php"; // idx 값이 넘어왓을경우엔 글 수정으로 처리한다. if(isset($_GET['idx']) && $_GET['idx']) { $post_idx = $_GET['idx']; // 해당 게시글의 정보를 가져온다. $query = "SELECT * FROM `tbl_board_post` WHERE `post_idx` = '{$post_idx}' AND `post_status` = 'Y'"; $result = $dbcon->query($query); $view = $result->fetch_array(); // 수정일경우엔 비밀번호를 체크해야하므로 세션을 확인하여 비밀번호 체크 if( ! $_SESSION['post_check_'.$post_idx] ) { // 현재 URL을 구해온다. $reurl = urlencode(current_url()); // 패스워드 입력후 다시 돌아올 URL header('Location: password.php?idx='.$post_idx.'&reurl='.$reurl, TRUE); // 패스워드 입력폼으로 이동 } } ?>
PHP 부분입니다.
$_GET[‘idx’] 값이 넘어왓을때만 수정으로 인식하며,
수정일 경우엔 기존데이타를 가져옴과 동시에,
수정권한이 있는지 확인하기 위해 비밀번호 체크를 합니다.
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.2/summernote.css"> <form method="post" action="<?=BASEURL?>/write_ok.php" autocomplete="off" class="form-horizontal"> <input type="hidden" name="post_idx" value="<?=$post_idx?>"> <div class="panel panel-default"> <div class="panel-heading"> <h4 class="panel-title">글쓰기</h4> </div> <div class="panel-body"> <div class="form-group"> <label class="control-label col-xs-2">제목</label> <div class="col-xs-8"> <input type="text" class="form-control" name="post_title" maxlength="255" required value="<?=$view['post_title']?>"> </div> <div class="col-xs-2"> <div class="checkbox"> <label><input type="checkbox" value="Y" name="post_is_secret" <?=($view['post_is_secret']=='N')?'':'checked'?>> 비밀글</label> </div> </div> </div> <div class="form-group"> <label class="control-label col-xs-2">작성자</label> <div class="col-xs-4"> <input type="text" class="form-control" name="mem_nickname" maxlength="15" required value="<?=$view['mem_nickname']?>"> </div> </div> <div class="form-group"> <label class="control-label col-xs-2">비밀번호</label> <div class="col-xs-4"> <input type="password" class="form-control" name="mem_password" required> </div> </div> <div class="form-group"> <label class="control-label col-xs-2">내용</label> <div class="col-xs-10"> <textarea id="post_content" name="post_content"><?=$view['post_content']?></textarea> </div> </div> </div> <div class="panel-footer text-center"> <button type="submit" class="btn btn-primary">작성완료</button> <button type="button" class="btn btn-default" onclick="history.back();">뒤로가기</button> </div> </div> </form> <script src="https://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.2/summernote.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.2/lang/summernote-ko-KR.min.js"></script> <script> $(function(){ $("#post_content").summernote({ height : '300px', lang : 'ko-KR' }); }); </script> <?php include_once "_foot.php";
View 부분입니다.
간단하게 사용하기 위해 summernote를 사용하였으며
validation 처리등은 생략하도록 하겠습니다.
한가지 유념히 보셔야 할부분은
<input type="hidden" name="post_idx" value="<?=$post_idx?>">
이부분입니다.
$_GET[‘idx’] 를 통해 값이 들어온다면 value 값에 값이 들어가겠지만
없다면 공백값이 들어가게 됩니다.
이부분을 이용하여 처리페이지에서 신규/수정 여부를 판별하게 합니다.
완성된 코드
<?php include_once "_head.php"; // idx 값이 넘어왓을경우엔 글 수정으로 처리한다. if(isset($_GET['idx']) && $_GET['idx']) { $post_idx = $_GET['idx']; // 해당 게시글의 정보를 가져온다. $query = "SELECT * FROM `tbl_board_post` WHERE `post_idx` = '{$post_idx}' AND `post_status` = 'Y'"; $result = $dbcon->query($query); $view = $result->fetch_array(); // 수정일경우엔 비밀번호를 체크해야하므로 세션을 확인하여 비밀번호 체크 if( ! $_SESSION['post_check_'.$post_idx] ) { // 현재 URL을 구해온다. $reurl = urlencode(current_url()); // 패스워드 입력후 다시 돌아올 URL header('Location: password.php?idx='.$post_idx.'&reurl='.$reurl, TRUE); // 패스워드 입력폼으로 이동 } } ?> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.2/summernote.css"> <form method="post" action="<?=BASEURL?>/write_ok.php" autocomplete="off" class="form-horizontal"> <input type="hidden" name="post_idx" value="<?=$post_idx?>"> <div class="panel panel-default"> <div class="panel-heading"> <h4 class="panel-title">글쓰기</h4> </div> <div class="panel-body"> <div class="form-group"> <label class="control-label col-xs-2">제목</label> <div class="col-xs-8"> <input type="text" class="form-control" name="post_title" maxlength="255" required value="<?=$view['post_title']?>"> </div> <div class="col-xs-2"> <div class="checkbox"> <label><input type="checkbox" value="Y" name="post_is_secret" <?=($view['post_is_secret']=='N')?'':'checked'?>> 비밀글</label> </div> </div> </div> <div class="form-group"> <label class="control-label col-xs-2">작성자</label> <div class="col-xs-4"> <input type="text" class="form-control" name="mem_nickname" maxlength="15" required value="<?=$view['mem_nickname']?>"> </div> </div> <div class="form-group"> <label class="control-label col-xs-2">비밀번호</label> <div class="col-xs-4"> <input type="password" class="form-control" name="mem_password" required> </div> </div> <div class="form-group"> <label class="control-label col-xs-2">내용</label> <div class="col-xs-10"> <textarea id="post_content" name="post_content"><?=$view['post_content']?></textarea> </div> </div> </div> <div class="panel-footer text-center"> <button type="submit" class="btn btn-primary">작성완료</button> <button type="button" class="btn btn-default" onclick="history.back();">뒤로가기</button> </div> </div> </form> <script src="https://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.2/summernote.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.2/lang/summernote-ko-KR.min.js"></script> <script> $(function(){ $("#post_content").summernote({ height : '300px', lang : 'ko-KR' }); }); </script> <?php include_once "_foot.php";
[catlist id=76 numberposts=14 conditional_title=”PHP 질문과 답변 게시판 만들기” orderby=date]