프로그래밍/HTML
10주차 공통모듈개발
잠이안와
2022. 11. 9. 19:20
9주차에 PHP 코드와 데이터베이스를 연결하는 작업, 외부에서 들어온 데이터를 데이터베이스에 저장하고 조작하는 작업 외에 CRUD를 각각의 단일한 형태가 아닌 독립적이면서 유기적인 모듈형태로 개발하는 작업을 학습한다.
CRUD
C : create
R : read
U : update
D : delete
중에서 오늘은 delete에 해당하는 데이터 삭제에 대해 배운다.

MYDB.php
<?php
function db_connect(){
$db_user = "root";
$db_pass = "";
$db_host = "localhost";
$db_name = "sampledb";
$db_type = "mysql";
$dsn = "$db_type:host=$db_host;dbname=$db_name;charset=utf8";
try{
$pdo = new PDO($dsn,$db_user,$db_pass);//접속객체생성
$pdo -> setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
//PDO:: 이와 관련된 동작을 하겠다.
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
//false:자동화 없앰. 수동으로 설정하겠다.
}
catch(PDOException $Exception){
die('오류:'.$Exception->getMessage());
}
return $pdo;
//function 정의를 했으니 return이 필요함.
}
?>
delete.html
<html>
<head>
<title> 데이터 삭제 테스트 </title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body bgcolor="#FFFFFF" text="#000000">
삭제 번호를 클릭하세요.
//이 메세지가 가장 위에 뜨게 됨.
<table width="150" border="1" cellspacing="0" cellpadding="8">
<TBODY>
//TR은 하나의 행.
<TR>
<TH>번호</TH>
</TR>
<TR>
<TD align="center"><a href="list.php?action=delete&id=1">[1]</a></TD>
//a 태그 : 하이퍼링크
</TR>
<TR>
<TD align="center"><a href="list.php?action=delete&id=2">[2]</a></TD>
</TR>
<TR>
<TD align="center"><a href="list.php?action=delete&id=3">[3]</a></TD>
</TR>
<TR>
<TD align="center"><a href="list.php?action=delete&id=4">[4]</a></TD>
</TR>
<TR>
<TD align="center"><a href="list.php?action=delete&id=5">[5]</a></TD>
</TR>
<TR>
<TD align="center"><a href="list.php?action=delete&id=6">[6]</a></TD>
</TR>
</TBODY>
</table>
</body>
</html>
list.php
<HTML><HEAD><TITLE>PHP TEST</TITLE>
</HEAD>
<BODY>
<?php
require_once("MYDB.php");
$pdo = db_connect();
//&_GET : delete.html에서 하이퍼링크를 통해 전달된 데이터
//<a href="list.php ? action=delete & id=1">
if(isset($_GET['action']) && $_GET['action']=='delete' && $_GET['id']>0){
try{
$pdo->beginTransaction();
$id = $_GET['id'];
$sql = "DELETE FROM member WHERE id = :id";//뒤에있는:id는 하이퍼링크로 전달받은 id임.
$stmh = $pdo -> prepare($sql);
$stmh -> bindValue(':id',$id,PDO::PARAM_INT);
//bindValue: 값을 이어붙이는 역할
$stmh -> execute();
$pdo->commit();
//실행 수락 commit
print "데이터를".$stmh->rowCount()."건 삭제하였습니다.<br>";
}
catch(PDOException $Exception){
$pdo->rollBack();
//rollback으로 에러상태 초기화
print "오류:".$Exception->getMessage();
}
}
try{
$sql = "SELECT * FROM member ";
$stmh = $pdo->query($sql);
$count = $stmh -> rowCount();
print "검색결과는".$count."건 입니다.<BR>";
}
catch(PDOException $Exception){
print"오류:".$Exception->getMessage();
}
if($count<1){
print "검색결과가 없습니다.<BR>";
} else {
?>
//php에는 html 코드가 들어갈 수 없기 때문에 php를 닫는다.
<table width="450" border="1" cellspacing="0" cellpadding="8">
<tbody>
<tr>
<TH>번호</TH>
<TH>성</TH>
<TH>이름</TH>
<TH>연령</TH>
</tr>
<?php
while($row = $stmh->fetch(PDO::FETCH_ASSOC)){
?>
<TR>
<TD align="ceter"><?=htmlspecialchars($row['id'])?></TD>
<TD><?=htmlspecialchars($row['last_name'])?></TD>
<TD><?=htmlspecialchars($row['first_name'])?></TD>
<TD align="ceter"><?=htmlspecialchars($row['age'])?></TD>
</TR>
<?php
}
?>
</tbody> </table>
<?php
}
?>
</BODY></HTML>
해서 xampp를 작동시킨 후, http://localhost:8080/week7/delete.html 을 접속하면 아래와 같은 화면이 뜬다.
해당 번호를 클릭하면 해당 인덱스의 데이터가 삭제된다. 아래 사진은 내가 1,2,3,4 번호를 누른 후 최종적으로 5번을 눌렀을 때 나오는 화면이다.
지난 주차의 내용과 연결 지으면 각각의 파일이 하는 역할은 다음과 같다.
공통모듈 구성 :CRUD 기능을 몇 개의 파일로 묶어서 작동 시키는 것
MYDB.php : 데이터베이스 접속
Form.html : 폼
List.php : 삭제, 입력, 수정, 검색처리 -> CRUD 기능이 다 들어가 있어서 코드가 매우 김.
updateform.php: 수정 관련 처리
MYDB.php
는 위의 코드와 동일하다.
form.html
<HTML><HEAD><TITLE>PHP 테스트</TITLE>
<META http-equiv="Content-Type" content="text/html"; charset="utf-8">
</HEAD> <BODY bgcolor="#FFFFFF" text="#000000">
<FONT size="4">PHP TEST</FONT>
<HR size="1" noshade>
신규 등록화면
<HR size="1" noshade>
[<a href="list.php">돌아가기</a>]<BR>
<FORM name="form1" method="post" action="list.php">
성:<BR>
<INPUT type="text" name="last_name"><BR>
이름:<BR>
<INPUT type="text" name="first_name"><BR>
연령:<BR>
<INPUT type="text" name="age"><BR>
<INPUT type="submit" value="송신">
<INPUT type="hidden" name="action" value="insert">
</FORM>
</BODY>
</HTML>
list.php