티스토리 뷰

안녕하세요, 초짜입니다.


저번 시간에 삭제 페이지인 delete.php를 완성했습니다.


이번에는 쓴 글을 수정하는 페이지를 만들어보겠습니다.


제목에서 보시다시피 총 3개의 페이지를 만들 것입니다.


그래도 전혀 겁먹으실 필요 없습니다.


modifycheck.php는 delete.php에서처럼 비밀번호를 확인하는 페이지고


modify.php는 수정하는 칸이 나오며 입력을 받는 페이지이며


update.php는 수정 작업을 하는 페이지입니다.


먼저 modifycheck.php를 만들 것입니다. 간단합니다.


단순히 비밀번호를 체크하는 페이지이기 때문에 우선 delete.php의 내용을 전부 복사합시다.


<!DOCTYPE html>

<html>

  <head>

    <meta charset="utf-8">

    <title></title>

  </head>

  <body>

    <?php

    $conn=mysqli_connect("localhost", "사용자이름", "비밀번호");

    $db=mysqli_select_db($conn, "데이터베이스이름");

    if($_GET[mode]!="delete")

    {

     ?>

    <form method="post" action="<?=$_SERVER[PHP_SELF]?>?id=<?=$_GET[id]?>&mode=delete">

      <table border=1>

        <tr>

          <td>비밀 번호</td>

          <td><input type="password" name="pass" /></td>

          <td><input type="submit" value="확 인" /></td>

        </tr>

      </table>

    </form>

    <?php

    exit;

  }

    $sql="SELECT pass FROM guestbook WHERE id='$_GET[id]'";

    $result=$conn->query($sql);

    $row=$result->fetch_array();

    if($row[pass] == $_POST[pass])

    {

      $sql="DELETE FROM guestbook WHERE id='$_GET[id]'";

      $result=$conn->query($sql);

      echo "<script>alert('글이 삭제되었습니다');";

      echo "location.href='list.php'</script>";

    }else{

      echo "<script>alert('비정상적인 요청입니다');";

      echo "location.href='list.php'</script>";

    }

     ?>

  </body>

</html>


이게 delete.php이며 modifycheck.php를 보겠습니다. 바뀐 부분은 빨간색으로 표시하겠습니다.


<!DOCTYPE html>

<html>

  <head>

    <meta charset="utf-8">

    <title></title>

  </head>

  <body>

    <?php

    $conn=mysqli_connect("localhost", "사용자이름", "비밀번호");

    $db=mysqli_select_db($conn, "데이터베이스이름");

    if($_GET[mode]!="modify")

    {

     ?>

    <form method="post" action="<?=$_SERVER[PHP_SELF]?>?id=<?=$_GET[id]?>&mode=modify">

      <table border=1>

        <tr>

          <td>비밀 번호</td>

          <td><input type="password" name="pass" /></td>

          <td><input type="submit" value="확 인" /></td>

        </tr>

      </table>

    </form>

    <?php

    exit;

  }

    $sql="SELECT pass FROM guestbook WHERE id='$_GET[id]'";

    $result=$conn->query($sql);

    $row=$result->fetch_array();

    if($row[pass] == $_POST[pass])

    {

      echo "<script>alert('수정 페이지로 이동합니다');";

      echo "location.href='modify.php?id=$_GET[id]'</script>";

    }else{

      echo "<script>alert('비정상적인 요청입니다');";

      echo "location.href='list.php'</script>";

    }

     ?>

  </body>

</html>


거의 바뀐 부분이 없습니다.


빨간색이 아닌 것중에 바뀐 부분은 if문 안의 쿼리문이 사라졌습니다.


왜냐하면 그 부분은 글을 삭제하는 쿼리문이기 때문이죠.


수정된 부분을 보자면 우선 mode를 modify로 바꿨습니다.


또한 비밀번호가 맞다면 이동하는 곳이 list.php가 아닌 modify.php로 이동하는데요.


여기서 id를 전달하기 위해 ?id=$_GET[id]를 넣었습니다.


modifycheck.php는 이렇게 완성됬습니다. 이제 modify.php를 만들어봅시다.


modify.php는 단순히 입력받는 페이지입니다. 입력받을 것은 내용밖에 없습니다.


그렇기에 간단히 만들 수 있었습니다.


<!DOCTYPE html>

<html>

  <head>

    <meta charset="utf-8">

    <title></title>

  </head>

  <body>

    <?php

    $conn=mysqli_connect("localhost", "사용자이름", "비밀번호");

    $db=mysqli_select_db($conn, "데이터베이스이름");

     ?>

    <form method="post" action="update.php?id=<?=$_GET[id]?>">

      <table width=600 border=1>

        <tr>

          <td>게시글을 수정해주세요.</td>

        </tr>

        <tr>

          <td><textarea placeholder="내용을 입력하세요" name="modicont" rows="8" cols="80"></textarea></td>

        </tr>

          <tr>

          <td align=right><input type="submit" value="확 인" /></td>

        </tr>

      </table>

    </form>

  </body>

</html>


여기서도 수정 작업을 할 페이지인 update.php에 id를 전달하기 위해 ?id=<?=$_GET[id]?>를 넣었습니다.


이제 update.php를 만들 차례입니다. 진짜로 수정 작업이 이루어질 페이지입니다.


수정할 것은 글의 내용인 content입니다.


또한 저는 입력 날짜도 수정하고 싶기 때문에 wdate도 수정하겠습니다.


DB 연결을 하기 위해 코드를 작성합시다.


$conn = mysqli_connect("localhost", "사용자이름", "비밀번호");

$db = mysqli_select_db($conn, "데이터베이스이름");


그리고 이제 수정 쿼리문을 작성합시다.


$sql = "UPDATE guestbook SET content='$_POST[modicont]', wdate=now() WHERE id='$_GET[id]'";

$result = $conn->query($sql);


해석을 해보자면 guestbook 테이블에서 id가 GET 방식으로 받은 id값인 것에서


content 값을 POST 방식으로 받은 modicont 값으로 수정하고 wdate 값을 지금 시간으로 수정한다고 보면 되겠습니다.


modicont는 modify.php에서 받아왔고 id도 modifycheck.php, modify.php에서 쭉 받아왔습니다.


이렇게 하면 DB에서 수정이 완료됩니다. 그리고 list.php로 이동하면 되겠네요.


완성된 소스는 이렇습니다.


<?php

  $conn = mysqli_connect("localhost", "사용자이름", "비밀번호");

  $db = mysqli_select_db($conn, "데이터베이스이름");

  $sql="UPDATE guestbook SET content='$_POST[modicont]', wdate=now() WHERE id='$_GET[id]'";

  $result=$conn->query($sql);

  echo "<script>alert('수정이 완료되었습니다.')</script>";

  echo "<script>location.href='list.php';</script>";

?>


이러면 이제 3개의 파일이 완성되었습니다. 생각보다 간단했네요.


한번 확인해보도록 하겠습니다.



날짜와 시간을 잘 기억해주세요. 수정해보도록 하겠습니다.



삭제 페이지와 마찬가지로 이렇게 비밀번호 입력 창이 뜹니다. 맞게 입력해주세요.



내용을 수정하고 확인 버튼을 눌러줍시다.



이렇게 보시다시피 내용과 날짜 모두 잘 수정이 됩니다.


수정까지 만들었으니 방명록의 필수적인 구성은 다 한것같은 기분이 듭니다.


다음에는 list.php를 수정해보겠습니다.


바로 이렇게 말이죠.



뭐가 달라졌는지 눈치 채시겠나요? 바로 제일 밑에 있는 [1]입니다.


한 페이지에 최대 5개의 글이 있을 수 있게 하고 총 글이 6개 이상일 경우에는


2 페이지, 3 페이지처럼 페이지를 나눠보겠습니다.


이번 포스팅은 여기까지입니다, 감사합니다.


댓글 한번씩 달아주시면 감사하겠습니다!


초짜의 예전 블로그 가기

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함