본문 바로가기

프로그래밍/HTML

10주차 공통모듈개발

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'프로그래밍 > HTML' 카테고리의 다른 글

2주차 수업(2) - Html, Css  (0) 2022.09.14
2주차 수업(1) - Html, Css  (0) 2022.09.14