ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [PHP] 게시판 만들기 - 수정/삭제 기능 구현
    프로그래밍/PHP 2020. 3. 19. 17:50

     

     

     

     

    1. 수정 화면 구현

    수정 화면을 구현하기 위한 update.php를 새로 만들어주고, read.php 내용을 복사하여 약간의 수정을 해줍니다.

     

    <div class="container">
    			<div id="board_write">
                    <form action="update_ok.php/<?php echo $board['idx']; ?>" method="post">
                    <input type="hidden" name="idx" value="<?=$bno?>" />
    					<table class="table table-striped" style="text-align: center; border: 1px solid #ddddda">
    						<thead>
    							<tr>
    								<th colspan="2" style="background-color: #eeeeee; text-align: center;"><h3>게시판 수정하기</h3></th>
    							</tr>
    						</thead>	
    						<tbody>
    							<tr>
    								<td><span class="pull-left">&nbsp;&nbsp;&nbsp;아이디 : <b><?=$userid?></b></span></td>
    							</tr>
    							<tr>
    								<td><input type="text" class="form-control" placeholder="글 제목" name="title" id="utitle" value="<?=$board['title']?>" required></td>
    							</tr>
    							<tr>
    								<td><input type="password" class="form-control" placeholder="글 비밀번호" name="pw" id="upw" style="width: 150px;"></td>
    							</tr>
    							<tr>	
    								<td><textarea class="form-control" placeholder="글 내용" name="content" id="ucontent" style="height: 350px" required><?=$board['content']?></textarea></td>
    							</tr>
    						</tbody>
    					</table>
    					<button type="submit" class="btn btn-primary">글쓰기</button>
    				</form>
    			</div>
    		</div>       

     

    달라진 부분은 맨 위쪽 <?php ?> 태그에서 '조회수 올리기'를 위한 DB 참조 부분을 지우는 것과  container 부분에서 위의 코드에서 보듯이 form 태그의 action 부분이 'update_ok.php' 로 바뀐 점, 테이블의 내용이 수정을 위한 내용으로 변경된 것 뿐입니다.

     

    수정 화면 구현 결과

     

    2. 수정을 위한 DB 접근

    <?php
    	include "./config.php";
    	include "./db/db_con.php";
    
    	$bno = $_POST['idx']; // $bno(hidden)에 idx값을 받아와 넣음
    	$userpw = password_hash($_POST['pw'], PASSWORD_DEFAULT); // 입력받은 패스워드를 해쉬값으로 암호화
    	$date = date('Y-m-d'); 
    	/* 받아온 idx값을 선택해서 게시글 수정 */
    	mq("update 
    			board 
    	   set 
    			date = '".$date."', 
    			pw='".$userpw."',
    			title='".$_POST['title']."',
    			content='".$_POST['content']."' 
    	   where 
    			idx='".$bno."'
    	");
    ?>
    	<script>
    		alert("수정되었습니다.");
    	</script>
    	<meta http-equiv="refresh" content="0 url=/gimal/read.php?idx=<?=$bno?>">
    
    

    update.php의 form 태그로부터 받은 정보를 post 방식으로 받아오고 post 방식으로 받아온 정보를 SQL Update 문을 이용해서 최신화 시켜주는 코드입니다. 해당하는 idx를 가진 DB 레코드에 날짜, 패스워드, 제목, 내용을 갱신합니다.

     

    3. 삭제 기능 구현 

    <?php
    	include "./db/db_con.php";
    	$bno = $_GET['idx'];
    	/* 받아온 idx값을 선택해서 게시글 삭제 */
    	mq("delete 
    		   from 
    				board 
    		   where 
    				idx='$bno'
    		");
    ?>
    	<script>
    		alert("삭제되었습니다.");
    	</script>
    	<meta http-equiv="refresh" content="0 url=/gimal/list.php">
    

    update_ok.php와 비슷합니다. delete.php 파일을 생성해주고 해당하는 게시판 번호 인덱스를 GET 방식으로 가져오고 SQL Delete 문을 이용하여 DB에서 해당 레코드를 삭제하는 코드입니다. 

     

     

    12번 게시글이 삭제된 것을 확인 가능

     

    수정/삭제 실습은 이전의 실습을 통해 DB Transaction에 익숙해졌기 때문에 중복되는 내용이 많아 설명을 많이 생략하였습니다. 코드를 보면서 직접 실습 하시다보면 어렵지 않게 이해하실 거라고 생각합니다.

     

    PHP 게시판 만들기 시리즈 👇

     

    노력의 천재

    Carpe Diem, Seize the day

    transferhwang.tistory.com

     

     

     

     

     

    댓글

Designed by Tistory.