참고링크
🔗완성코드
게시판 글수정, 조회, update 구현
CRUD 의 마지막 update 를 구현한다.
CRUD(create, read, update, delete) 의 약자로 데이터베이스의 기본 처리 기능을 말한다
01-view.php
- 수정하기 콘텐츠 추가
view.php
<p><a href="index.php">메인화면으로 돌아가기</a></p>
<p><a href="index.php">수정하기</a></p>
실행
하단에 수정하기 글씨 추가됨
02-update.php
- write.php 를 다른이름으로 저장
update.php
- 수정
update.php
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>글수정</title>
</head>
<body>
<h1>수정하기</h1>
<!-- 수정페이지로 이동한다 -->
<form action="modify.php" method="post">
<p>
<label for="name">작성자:</label>
<!--value에 임의의 값을 넣어 수정전의 데이터를 임시생성한다. 이후 데이터베이스를 조회하여 변수로 출력한다. -->
<input type="text" id="name" name="name" value="김망고"/>
</p>
<p>
<label for="message">메시지:</label>
<!--임의의 값을 넣어 수정전의 데이터를 임시생성한다. 이후 데이터베이스를 조회하여 변수로 출력한다. -->
<textarea name="message" id="message" cols="30" rows="10">이전글내용</textarea>
</p>
<input type="submit" value="글쓰기" />
</form>
</body>
</html>
update에 필요한 기능
- 데이터베이스 접속
- 데이터베이스 조회
- 해당 글 내용 보기 위의 내용은 index.php 의 list 내용에서 전달받아서 글을 출력하는 view.php의 상단부와 같다
설명
- view.php의 내용을 복사하여 update.php의 최상단에 붙여넣는다
update.php
<?php
$conn = mysqli_connect("localhost", "root", "", "mango_board");
if (!$conn) {
echo 'db에 연결하지 못했습니다.' . mysqli_connect_error();
} else {
echo 'db에 접속했습니다!!!';
}
$view_num = $_GET['number'];
$sql = "SELECT * FROM free_board WHERE number = $view_num";
$result = mysqli_query($conn, $sql);
?>
...
03-view.php
- 글내용을 출력하는 코드를 응용하여 작성한다.
- 표시된 부분을 복사한다.
view.php
<!-- db접속시 php -->
<?php
$conn = mysqli_connect("localhost", "root", "", "mango_board");
if (!$conn) {
echo 'db에 연결하지 못했습니다.' . mysqli_connect_error();
} else {
echo 'db에 접속했습니다!!!';
}
$view_num = $_GET['number'];
$sql = "SELECT * FROM free_board WHERE number = $view_num";
$result = mysqli_query($conn, $sql);
?>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>View-망고게시글</title>
</head>
<body>
<h1>자유 게시판</h1>
<h2>글 내용</h2>
<?php
/* 여기부터 추가 */
if ($row = mysqli_fetch_array($result)) {
?>
<h3>글번호: <?= $row['number'] ?> / 글쓴이: <?= $row['name'] ?> </h3>
<div> <?= $row['message'] ?></div>
<?php
}
mysqli_close($conn);
?>
<p><a href="index.php">메인화면으로 돌아가기</a></p>
/* update.pnp에 매개변수로 number 를 전달한다.*/
<p><a href="update.php?number=<?= $row['number'] ?>">수정하기</a></p>
</body>
</html>
db를 조회해서 $row의 number 과 name, message 의 데이터를 출력한후 데이터베이스 서버를 종료한다. |
04-update.php
- db에서 조회한 결과를 리턴하는 함수로 form 을 감싼다
<?php
$conn = mysqli_connect("localhost", "root", "", "mango_board");
if (!$conn) {
echo 'db에 연결하지 못했습니다.' . mysqli_connect_error();
} else {
echo 'db에 접속했습니다!!!';
}
$view_num = $_GET['number'];
$sql = "SELECT * FROM free_board WHERE number = $view_num";
$result = mysqli_query($conn, $sql);
?>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>글수정</title>
</head>
<body>
<h1>수정하기</h1>
<?php
if ($row = mysqli_fetch_array($result)) {
?>
<form action="modify.php" method="post">
<p>
<label for="name">작성자:</label>
<input type="text" id="name" name="name" value=<?= $row['name'] ?> />
</p>
<p>
<label for="message">메시지:</label>
<textarea name="message" id="message" cols="30" rows="10"><?= $row['message'] ?></textarea>
</p>
<input type="submit" value="글쓰기" />
</form>
<?php
}
mysqli_close($conn);
?>
</body>
</html>
실행
- index.php 에서 글목록 클릭
- 해당글번호로 이동 수정하기 클릭
- 해당글 조회 수정페이지 이동
05-modify.php
- insert.php 다른이름으로 저장 =>
modify.php
- 코드작성
modify.php
<?php
//변수 conn 에 mysqli_connect(서버주소, mysql사용자아이디, mysql사용자비밀번호, 데이터베이스이름) 할당
$conn = mysqli_connect("localhost", "root", "", "mango_board");
if (!$conn) { //변수conn 이 false 일경우
echo 'db에 연결하지 못했습니다.' . mysqli_connect_error(); //문자열과 함께 에러메시지 출력함수 실행
} else {
echo 'db에 접속했습니다'; //성공시 출력할 문자열
}
$number = $_POST['number'];
$user_name = $_POST['name'];
$user_msg = $_POST['message'];
$sql = "UPDATE free_board SET name='$user_name', message='$user_msg' WHERE number=$number";
$result = mysqli_query($conn, $sql);
if ($result === false) {
echo "수정에 실패했습니다.";
error_log(mysqli_error($conn));
} else {
echo "수정을 완료하였습니다.";
}
mysqli_close($conn);
print "<p><a href='index.php'>메인화면으로 돌아가기</a></p>";
?>
</body>
</html>
06-update.php
update.php
<?php
$conn = mysqli_connect("localhost", "root", "", "mango_board");
if (!$conn) {
echo 'db에 연결하지 못했습니다.' . mysqli_connect_error();
} else {
echo 'db에 접속했습니다!!!';
}
$view_num = $_GET['number'];
$sql = "SELECT * FROM free_board WHERE number = $view_num";
$result = mysqli_query($conn, $sql);
?>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>글수정</title>
</head>
<body>
<h1>수정하기</h1>
<?php
if ($row = mysqli_fetch_array($result)) {
?>
<form action="modify.php" method="post">
<input type="hidden" name="number" value="<?= $view_num ?>">
<p>
<label for="name">작성자:</label>
<input type="text" id="name" name="name" value=<?= $row['name'] ?> />
</p>
<p>
<label for="message">메시지:</label>
<textarea name="message" id="message" cols="30" rows="10"><?= $row['message'] ?></textarea>
</p>
<input type="submit" value="글쓰기" />
</form>
<?php
}
mysqli_close($conn);
?>
</body>
</html>