목표 : 웹을 통해서 글을 수정할 수 있도록 기능 추가
input 태그
- 사용자로부터 정보를 입력받는 태그
- type="text" : 사용자로부터 텍스트 정보를 입력받는다.
- name="xxx" : input 태그에 입력한 정보를 서버 쪽으로 xxx 이라는 이름으로 전송
- placeholder=" " : 입력창에 표시할 문자
- type ="submit" : input 태그에 담은 사용자 정보를 서버로 전송
서버의 어느 페이지로 전송할 것인지 웹브라우저한테 알려줘야 한다. input 태그를 감싸는 form태그를 만들어 준다. - value="xxx" : 기본값(default value)를 설정
- type="hidden" : input 태그에 담은 정보를 숨겨서 서버로 전송. 사용자에게는 노출하지 않으면서 서버로 데이터를 전송
1. index.php 에 create 페이지 링크 추가
<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 코드 작성
- 파일명 수정 - update_process.php 에 rename() 함수 추가
- 파일 내용 수정 - file_put_contents() 함수 추가
- 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 |