미리보기
📦company
┣ 📜index.php
┣ 📜memberAdd.php
┣ 📜memberDel.php
┣ 📜memberDelAll.php
┣ 📜memberEdit.php
┣ 📜memberList.php
┗ 📜sqlLib.php
index.php
<body>
<!-- 멤버 리스트를 DB에서 가져옴 -->
<? include "memberList.php" ?>
<!-- 멤버 리스트 작성폼 -->
<h2 class="mb-5 mt-5">-입력폼-</h2>
<form action="memberAdd.php" method="post" class="mt-5">
<table class="table" border="1">
<tr>
<td>
이름
</td>
<td>
나이
</td>
<td>
이메일
</td>
<td>
한마디
</td>
</tr>
<tr>
<td>
<input placeholder="이름" type="text" name="name"></input>
</td>
<td>
<input placeholder="나이" type="text" name="age"></input>
</td>
<td>
<input placeholder="이메일" type="text" name="email"></input>
</td>
<td>
<input placeholder="한마디" type="text" name="word"></input>
</td>
</tr>
</table>
<button type="submit" class="btn btn-primary text-right">제출하기</button>
<button type="button" class="btn btn-danger text-right" onclick="confirmDelete()">전체삭제</button>
</form>
- 기본 입력폼 형태와 테이블 리스트를 불러옵니다.
- 테이블과 버튼들을 연결해줍니다.
Create
<?
include "sqlLib.php";
$name = $_POST['name'];
$age = $_POST['age'];
$email = $_POST['email'];
$word = $_POST['word'];
// MySQL 쿼리를 안전하게 만드는 데 중요한 역할
$name = mysqli_real_escape_string($connect, $name);
$age = mysqli_real_escape_string($connect, $age);
$email = mysqli_real_escape_string($connect, $email);
$word = mysqli_real_escape_string($connect, $word);
$query = "insert into member(name,age,email,word) values('$name','$age','$email','$word')";
mysqli_query($connect, $query);
?>
<script>
location.href = 'index.php';
</script>
- index.php에서 받아온 데이터들을 해당 테이블에 삽입 시켜줍니다.
Read
<?
include "sqlLib.php";
$query = "select * from member";
$result = mysqli_query($connect, $query);
?>
<h2 class="mb-3">-멤버 리스트-</h2>
<div class="p-3"></div>
<table class="table" border="1" >
<thead>
<tr >
<td>NO.</td>
<td>이름</td>
<td>나이</td>
<td>이메일</td>
<td>한마디</td>
<td>삭제</td>
<td>수정</td>
</tr>
</thead>
<?
while ($a = mysqli_fetch_assoc($result)) {
$id = $a['id'];
$name = $a['name'];
$age = $a['age'];
$email = $a['email'];
$word = $a['word'];
?>
<tr>
<td><?= $id ?></td>
<td><?= $name ?></td>
<td><?= $age ?></td>
<td><?= $email ?></td>
<td><?= $word ?></td>
<td> <a href="memberDel.php?id=<?= $id ?>" onclick="return confirm('정말 삭제할까요?')">삭제</a> </td>
<td> <a href="#" onclick="onEdit('<?= $id ?>');">수정</a> </td>
</tr>
<? } ?>
</table>
- select쿼리문을 실행시켜 해당 테이블의 열을 mysqli_fetch_assoc($result) 을 통해서
행을 한 줄씩 가져옵니다.
- 가져온 행을 하나씩 대입 시켜줍니다.
Update
<!-- memberList.php --!>
<td> <a href="#" onclick="onEdit('<?= $id ?>');">수정</a> </td>
<script>
function onEdit(id) {
const word = prompt('수정할 내용을 적으시오');
location.href = 'memberEdit.php?id=' + id + "&word=" + word;
}
</script>
- <a>태그를 누르면 수정할거 냐는 프롬프트 구문이 나오고 그것에 응할시,
수정관련 파일로 id, word 데이터와 함께 페이지 이동시켜줍니다.
<?
include 'sqlLib.php';
$id = $_GET['id'];
$word = $_GET['word'];
$query = "update member set word='$word' where id='$id' ";
mysqli_query($connect, $query);
?>
<script>
location.href = 'index.php';
</script>
- 수정 작업 파일에선 받아온 데이터를 수정할 쿼리문에 적용시킨 후 실행하고,
다시 본문으로 돌아가 줍니다.
Delete
<!--memberList.php -->
<td> <a href="memberDel.php?id=<?= $id ?>" onclick="return confirm('정말 삭제할까요?')">삭제</a> </td>
<?
// memberDel.php
include 'sqlLib.php';
$id = $_GET['id'];
$query = "delete from member where id= '$id'";
mysqli_query($connect, $query);
?>
<script>
location.href = "index.php";
</script>
- update 부문하고 비슷하게 삭제 확인을 승락하면 아이디가 memberDel.php로
보내지고 쿼리문이 실행되고 다시 본문으로 되돌아가 줍니다.
전체 삭제
<!-- memberList.php --!>
<button type="button" class="btn btn-danger text-right" onclick="confirmDelete()">전체삭제</button>
<script>
function confirmDelete() {
const doIt = confirm('정말 전체 삭제할까요?');
if (doIt) {
// 확인을 누르면 서버에 요청을 보내서 삭제 작업을 수행
deleteAll();
} else {
// 취소를 누르면 아무 작업도 하지 않음
return;
}
}
function deleteAll() {
// JavaScript를 사용하여 서버에 AJAX 요청을 보냄
var xhr = new XMLHttpRequest();
xhr.open("POST", "memberDelAll.php", true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
// 서버의 응답에 대한 처리 (optional)
console.log(xhr.responseText);
window.location.reload();
}
};
xhr.send();
}
</script>
- 전체삭제에서는 비동기 구문을 사용했습니다.
JavaScript에서 AJAX(Asynchronous JavaScript and XML)를 사용하여 비동기적으로 서버에 데이터를 요청하고 응답을 처리하는 예제입니다.
페이지 전체를 새로고침하지 않고도 서버와 통신하여 데이터를 가져오거나 전송할 수 있습니다.
- var xhr = new XMLHttpRequest();: XMLHttpRequest 객체를 생성합니다. 이 객체를 사용하여 서버와 상호 작용할 수 있습니다.
- xhr.open("POST", "memberDelAll.php", true);: XMLHttpRequest 객체를 초기화합니다. "POST"는 데이터를 서버로 전송할 때 사용되는 HTTP 메서드입니다. 두 번째 매개변수는 요청을 보낼 URL이고, 세 번째 매개변수 true는 비동기적으로 요청을 처리하도록 지정합니다.
- xhr.onreadystatechange = function () {...}: onreadystatechange 이벤트 핸들러를 정의합니다. 이 이벤트는 서버로부터 응답이 도착할 때마다 발생합니다. 응답의 상태가 변경될 때마다 이 함수가 호출됩니다.
if (xhr.readyState == 4 && xhr.status == 200) {...}: readyState가 4이고 status가 200인 경우에만 코드 블록이 실행됩니다. readyState가 4는 서버 응답이 완료되었음을 나타내고, status가 200은 성공적인 응답임을 나타냅니다.
-console.log(xhr.responseText);: 서버의 응답 내용을 콘솔에 출력합니다. 이 부분은 디버깅을 위한 것으로, 실제 애플리케이션에서는 필요에 따라 다른 작업을 수행할 수 있습니다.
-window.location.reload();: 페이지를 새로고침하여 변경 사항을 적용합니다. 새로고침 없이도 페이지의 일부를 업데이트할 수 있지만, 여기서는 삭제 작업이 완료된 후에 페이지를 전체적으로 새로고침하도록 했습니다.
'IT > PHP & MySQL' 카테고리의 다른 글
[PHP&MySQL] xampp - mysql 실행 불가 [solved] (0) | 2023.11.13 |
---|---|
[PHP&MySQL] phpMyadmin 다뤄보기 (0) | 2023.11.13 |