이번 글에서는 게시판에 작성한 글의 수정을 할 수 있는 페이지를 작성해보도록 하겠다.
게시글의 수정은 다음 조건이 만족되어야한다.
- 작성자만이 수정가능
- 작성되어있던 글이 수정페이지에 나타나야함
- 수정일의 값이 변경되어야함.
따라서 get으로 받아온 id값으로 데이터의 값들을 가져오고 이중에서 작성자와 세션변수의 name를 비교하여 같을 경우 작성자가 맞다고 판단하여 글의 수정을 진행시켰다.
또한 이 가져온 데이터를 통해서 페이지의 내용을 가져오도록 하였다.
글의 수정은 UPDATE문을 사용하여 이루어졌다.
<!-- edit_1.php -->
<?php
session_start();
require_once 'tool/chack_er.php';
if (isset($_SESSION['loggedin']) && $_SESSION['loggedin'] === true) {
if (isset($_GET['id'])) {
require_once 'tool/db_conn.php';
// require_once 'tool/chack_er.php';
$ID_NUM=$_GET['id'];
$NAME_S=$_SESSION['name'];
$content_query = "SELECT * FROM board_1 WHERE board_id='$ID_NUM'";
$content_result = mysqli_query($con, $content_query);
$content_row = mysqli_fetch_assoc($content_result);
if (mysqli_num_rows($content_result) === 0){
echo "<script>
alert('글이 존재하지 않습니다.');
window.location.href = '/nk/board1.php';
</script>";
exit;
}
if ($content_row['writer']===$_SESSION['name']){
$title=$content_row['title'];
$content=$content_row['content'];
} else {
echo "<script>
alert('작성자만 글을 수정할 수 있습니다.');
window.location.href = '/nk/board1.php';
</script>";
exit;
}
} else {
echo "<script>
alert('오류가 발생하였습니다.');
window.location.href = '/nk/board1.php';
</script>";
exit;
}
} elseif (!isset($_SESSION['loggedin'])) {
?>
<script>
alert('작성자만 글을 수정 할 수 있습니다.');
window.location.href = "board1.php";
</script>
<?php
}
?>
<!DOCTYPE html>
<html lang="kr">
<head>
<meta charset="UTF-8">
<title>IQ Spoofing</title>
<link rel="stylesheet" href="/nk/CSS/write_1.css">
</head>
<body>
<h1><a href="/nk/index.php">IQ Spoofing</a></h1>
<h2>글 수정</h2>
<hr id = 'nana'>
<div id = 'content'>
<form action='/nk/update_content_1.php?id=<?php echo $_GET["id"];?>' method='post'>
<input type="text" name="title" class="text-field" placeholder="제목을 입력해주세요." id="input_title" value="<?php echo $title;?>" require>
<hr>
<textarea name="content" class="text-field" placeholder="내용을 입력해주세요." id="input_content" required rows="4" cols="40"><?php echo $content;?> </textarea>
<hr>
<input type="submit" value="저장" class="submit-btn">
</form>
</div>
</body>
</html>
<!-- update_content_1.php -->
<?php
session_start();
require_once 'tool/chack_er.php';
if (isset($_SESSION['loggedin']) && $_SESSION['loggedin'] === true) {
if (isset($_GET['id'])) {
require_once 'tool/db_conn.php';
// require_once 'tool/chack_er.php';
$ID_NUM=$_GET['id'];
$NAME_S=$_SESSION['name'];
$content_query = "SELECT * FROM board_1 WHERE board_id='$ID_NUM'";
$content_result = mysqli_query($con, $content_query);
$content_row = mysqli_fetch_assoc($content_result);
if (mysqli_num_rows($content_result) === 0){
echo "<script>
alert('글이 존재하지 않습니다.');
window.location.href = '/nk/board1.php';
</script>";
exit;
}
if ($content_row['writer']===$_SESSION['name']){
$title = mysqli_real_escape_string($con, $_POST['title']);
$content = mysqli_real_escape_string($con, $_POST['content']);
$id = mysqli_real_escape_string($con, $_GET['id']);
$writer = mysqli_real_escape_string($con, $_SESSION['name']);
$update_query = "UPDATE board_1 SET title='$title', content='$content', updatedate=NOW() WHERE board_id='$id' AND writer='$writer'";
if(mysqli_query($con, $update_query)) {
echo "<script>alert('글 수정이 완료되었습니다.');
window.location.href = '/nk/board1.php';</script>";
} else{
echo "<script>
alert('오류가 발생하였습니다.');
window.location.href = '/nk/board1.php';
</script>";
exit;
}
} else {
echo "<script>
alert('작성자만 글을 수정할 수 있습니다.');
window.location.href = '/nk/board1.php';
</script>";
exit;
}
} else {
echo "<script>
alert('오류가 발생하였습니다.');
window.location.href = '/nk/board1.php';
</script>";
exit;
}
} elseif (!isset($_SESSION['loggedin'])) {
?>
<script>
alert('작성자만 글을 수정 할 수 있습니다.');
window.location.href = "board1.php";
</script>
<?php
}
?>
위와같이 작성된 글을 수정해보도록 하겠다.
다음과 같이 수정페이지가 나오며 작성된 글의 내용이 그대로 존재한다.
글을 수정하고 저장버튼을 누르면 수정이 완료된다.
다음과 같이 수정이 완료됨과 더불어 수정일이 변경된 것을 볼 수 있다.
'프로그래밍 및 코딩 > PHP' 카테고리의 다른 글
coding_if문 축약 (0) | 2023.05.20 |
---|---|
게시판 만들기_검색, 페이징 (0) | 2023.05.19 |
게시판 만들기_글삭제 (0) | 2023.05.19 |
게시판 만들기_글쓰기 (0) | 2023.05.19 |
게시판 만들기_게시글페이지 (3) | 2023.05.16 |