본문 바로가기

코딩공부/WEB2 - PHP

[12] PHP 글 수정 기능 구현

목표 : 웹을 통해서 글을 수정할 수 있도록 기능 추가

 

input 태그 

  •  사용자로부터 정보를 입력받는 태그
  •  type="text" : 사용자로부터 텍스트 정보를 입력받는다.
  • name="xxx" : input 태그에 입력한 정보를 서버 쪽으로 xxx 이라는 이름으로 전송
  •  placeholder=" " : 입력창에 표시할 문자
  •  type ="submit" : input 태그에 담은 사용자 정보를 서버로 전송
    서버의 어느 페이지로 전송할 것인지 웹브라우저한테 알려줘야 한다. input 태그를 감싸는 form태그를 만들어 준다.
  • value="xxx" : 기본값(default value)를 설정
  • type="hidden" : input 태그에 담은 정보를 숨겨서 서버로 전송. 사용자에게는 노출하지 않으면서 서버로 데이터를 전송

 

1. index.php 에 create 페이지 링크 추가

&lt;a href="update.php">update</a>

 

2. 조건 : 홈에 있을 때는 update를 할 수 없고, 특정 게시물을 클릭했을 때 update 를 할 수 있어야 한다.

<!-- 게시글 클릭 시만 update 노출  -->
<?php if(isset($_GET['id'])){ #id값이 있는 경우 true ?>
	<a href="update.php">update</a>
<?php }?>

 

 

 

3. 수정하려는 대상 글이 무엇인지 알아야하기 때문에, update는 현재 사용자가 보고 있는 페이지에 대한 id 값을 포함해서 전송해야 된다.

 

<?php echo "xxx";?><?="xxx"?> 와 같은 의미로 축약해서 쓸 수 있다.

<?php if(isset($_GET['id'])){ #id값이 있는 경우 true ?>
  <!-- <a href="update.php?id=<?php #echo $_GET['id'];?>">update</a> -->
  <a href="update.php?id=<?=$_GET['id']?>">update</a>
<?php }?>

 

 

 

4. index.php를 복제하여 update.php 파일 생성

title과 description 부분 수정하면 된다. create.php 에서 form 태그를 카피한다. 

<form action="create_process.php" method="post">
  <p><input type="text" name="title" placeholder="Title"></p>
  <p><textarea name="description" placeholder="Description"></textarea></p>
  <p><input type="submit"></p>
</form>

 

 

수정하려면 수정하고자 하는 내용이 form에 채워져 있어야 한다. 이때 input 태그에서는 value="xxx"속성을 이용해서 기본값을 넣어줄 수 있다.

<form action="create_process.php" method="post">
  <p><input type="text" name="title" placeholder="Title" value="<?php print_title(); ?>"></p>
  <p><textarea name="description" placeholder="Description"> <?php print_content();?></textarea></p>
  <p><input type="submit"></p>
</form>

 

 

5. update_process.php 파일 생성

title을 수정했다?

data 디렉토리 하위에 수정된 title로 이름을 변경하고, 본문을 저장한다.

php file name change

 

rename( 이전파일명, 새로운파일명 )

$_POST['titlte']의 값은 새로운 이름이다.

이전 파일명은 update.php에서 전달해주면 된다.

 

 

5(1). update.php 의 form 태그에 이전파일명을 전달하는 hidden 타입의 태그 추가

<input type="hidden" name="old_title" value="<?=$_GET['id']?>">

 

5(2). update_process.php 코드 작성

  1. 파일명 수정 - update_process.php 에 rename() 함수 추가
  2. 파일 내용 수정 - file_put_contents() 함수 추가
  3. update_process.php 에 리다이렉션 설정
<?php
  rename('./data/'.$_POST['old_title'], './data/'.$_POST['title']);
  file_put_contents('./data/'.$_POST['title'], $_POST['description']);
  header("Location: index.php?id=".$_POST['title']);
?>

 

'코딩공부 > WEB2 - PHP' 카테고리의 다른 글

[14] PHP 파일로 모듈화 - require  (0) 2019.09.27
[13] PHP 글 삭제 기능 구현  (0) 2019.09.26
[11] PHP 글 생성 기능 구현  (0) 2019.09.26
[10] PHP에서 FROM과 GET, POST  (0) 2019.09.26
[9] PHP 함수 생성  (0) 2019.09.26