2015년 1월 6일 화요일

php 간단 일기장 - 글 수정하기 - 화면 만들기

이 문서는 지속적으로 갱신되는 내용을 다룹니다.
최신 버전의 문서는 언제든지 http://crealnet.blogspot.kr에서 얻을 수 있습니다.
문서가 업데이트 될 때마다 이메일로 받아보고 싶으시다면 http://crealnet.blogspot.kr/p/pdf.html 를 사용해 주세요.
기타 추가적으로 필요하신 사항은 http://crealnet.blogspot.kr/p/blog-page.html에서 연락주시면 됩니다.
읽어주셔서 감사합니다!


php 간단 일기장 - 글 수정하기 - 화면 만들기

글 수정은 글쓰기와 비슷하지만 한가지 차이가 있다.
바로 기존에 썼던 글이 보여야 한다는 것이다.
따라서 기존에 썼던 글을 가져와서 보여줘야 한다.
그렇다면 여러개의 글 중에서 어떤 글을 보여줘야 할지 알 필요가 있다.
우리는 이미 diary_id 라는 이름으로 각 일기장 페이지를 구분했으므로 이것을 이용해서 보여주기로 한다.


따라서 editsubmit.php 로 전달할 내용은
[contents]
[diary_id]
이다.


글 수정 화면이 보이기 위한 과정
  • 웹브라우저 주소창에 GET 파라미터 중 diary_id 가 있는지 본다.
  • 만약에 diary_id가 GET 파라미터 안에 있다면
  • 데이터베이스에 접속한다.
  • diary 테이블에서 diary_id가 get 파라미터 diary_id 인 것들을 가지고 온다.
  • 만약 데이터베이스 쿼리 실행 결과 갯수가 1이라면 파라미터로 들어온 diary_id 와 데이터베이스의 데이터 중 diary_id가 일치하는 데이터가 있는 것이다.
  • 일치한다면 그 데이터의 contents를 보여준다.
  • 만약 diaryedit.php 에서 주소창 파라미터로 diary_id 가 전달되지 않았을 경우 editsubmit.php 에서도 diary_id 가 빈 값으로 나오게 된다.

글 수정 처리 페이지로 넘길 내용
글 수정 화면에서 수정 버튼이 클릭되었을 때 form 태그에 의해 editsubmit.php 로 이동한다.
이때 contents 만 editsubmit.php 로 전달되면 editsubmit.php 는 어떤 데이터를 수정해야 할 지 모르게 된다.
따라서 diary_id 도 같이 전달할 필요가 있다.

hidden 태그는 사용자에게 보이지는 않고 값을 가지고만 있는 html 태그이므로 hidden 태그에 diary_id 값을 넣어서 editsubmit.php 에 전달한다.

만약 diaryedit.php 에서 주소창 파라미터로 diary_id 가 전달되지 않았을 경우 editsubmit.php 에서도 diary_id 가 빈 값으로 나오게 된다.

<input type="hidden" name="diary_id" value="<?php echo $diary_id; ?>" />
 
 
코드
<!DOCTYPE html>

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  </head>
  <body>
    <form action="editSubmit.php" target="_self"  method="post">
        <textarea name="contents" rows="3" cols="50"><?php

                $diary_id = '';
                if (isset($_GET['diary_id']))
                {
                    $diary_id = $_GET['diary_id'];
                    $db_host = "localhost"; 
                    $db_user = "php111";
                    $db_passwd = "php111"; 
                    $db_name = "phpdiary"; 

                    $conn = mysql_connect($db_host,$db_user,$db_passwd) or die ("데이터베이스 연결에 실패하였습니다!");

                    mysql_select_db($db_name, $conn); 

                    mysql_query("set names utf8");

                    $query = 'select * from diary where diary_id=' . $diary_id;
                    $result = mysql_query($query);

                    $total = mysql_affected_rows();

                    if ($total == 1)
                    {
                        mysql_data_seek($result,0);
                        $r = mysql_fetch_array($result);
                        echo $r['contents'];
                    }
                }
            ?></textarea>

        <br/>
        <input type="submit" value="수정" />        
        <input type="hidden" name="diary_id" value="<?php echo $diary_id; ?>" />
    </form>
  </body>
</html> 

위 내용을 diaryedit.php 로 저장한다.


댓글 없음:

댓글 쓰기