Stack/PHP

[PHP] Book Blog(Books) 만들기 2_도서등록 / 자세히보기 / 수정 / 삭제

7ingout 2022. 6. 2. 15:58

* 등록

create.php

<?php include_once 'include/header.php' ?>
<div id="write_book" class="inner">
        <h2>도서등록</h2>
        <h3>새로운 도서를 등록하세요.</h3>
        <form action="process/create_process.php" method="post">
            <table>
                <tr>
                    <td>글쓴이</td>
                    <td><input type="text" name="writer" required></td>
                </tr>
                <tr>
                    <td>출판사</td>
                    <td><input type="text" name="publisher" required></td>
                </tr>
                <tr>
                    <td>가격</td>
                    <td><input type="text" name="price" required id="priceInput"></td>   <!-- type number로 하거나 -->
                </tr>
                <tr>
                    <td>출판일</td>
                    <td><input type="text" name="bookdate"></td>
                </tr>
                <tr>
                    <td>제목</td>
                    <td><input type="text" name="title"></td>
                </tr>
                <tr>
                    <td>책내용</td>
                    <td><textarea name="desc" id="desc" cols="30" rows="10"></textarea></td>
                </tr>
                <tr>
                    <td colspan="2">
                        <button type="submit">도서등록</button>
                        <button type="reset">취소</button>
                    </td>
                </tr>
            </table>
        </form>
        <script>
            let priceInput = document.querySelector("#priceInput");
            priceInput.addEventListener('input', function(){
                if(isNaN(Number(priceInput.value))) {
                    alert("가격은 숫자만 입력해주세요.");
                    priceInput.value="";
                }
            })
        </script>
</div>
<?php include_once 'include/footer.php' ?>

 

process/create_process.php

<?php
    // post 전송으로 넘어온 데이터는 슈퍼글로벌 $_POST변수가 배열형태로 받는다.
     $conn = mysqli_connect('localhost','root','0000','test');
     $query = "insert into books(`writer`, `title`, `publisher`, `price`, `bookdate`, `desc`)
     values('{$_POST['writer']}', '{$_POST['title']}', '{$_POST['publisher']}', {$_POST['price']}, '{$_POST['bookdate']}', '{$_POST['desc']}')";
     $result = mysqli_query($conn, $query);
     echo $query;
    if($result){
        echo "게시글을 작성했습니다.";
    } else {
        echo "게시글 작성이 실패했습니다.";
    }
    header('Location: ../index.php');
?>

 

 

 

* 자세히보기

detail_t.php

<?php include_once 'include/header.php' ?>
<?php 
    $bookid = $_GET['id'];
    $conn = mysqli_connect('localhost','root','0000','test');
    $query = "select * from books where id={$bookid}";
    $result = mysqli_query($conn, $query);
    $row = mysqli_fetch_array($result);
    // var_dump($row);
?>
    <div id="write_book" class="inner">
        <h2>도서 자세히보기</h2>
        <h3>도서 내용입니다.</h3>
        <table>
            <tr>
                <td>글쓴이</td>
                <td><?=$row['writer']?></td>
            </tr>
            <tr>
                <td>출판사</td>
                <td><?=$row['publisher']?></td>
            </tr>
            <tr>
                <td>출판일자</td>
                <td><?=$row['bookdate']?></td>
            </tr>
            <tr>
                <td>제목</td>
                <td><?=$row['title']?></td>
            </tr>
            <tr>
                <td>내용</td>
                <td><?=$row['desc']?></td>
            </tr>
            <tr>
                <td colspan="2">
                    <form action="edit_t.php" method="post">
                        <input type="hidden" value="<?=$_GET['id']?>" name="id">
                        <button type="submit">수정</button>
                    </form>
                    
                    <form action="process/delete_process.php" method="post">
                        <input type="hidden" value="<?=$_GET['id']?>" name="id">
                        <button type="submit">삭제</button>
                    </form>
                </td>
            </tr>
        </table>
    </div>
<?php include_once 'include/footer.php' ?>

 

 

 

 

* 수정

edit_t.php

<?php include_once 'include/header.php' ?>
<?php
        $bookid = $_POST['id'];
        $conn = mysqli_connect('localhost','root','0000','test');
        $query = "select * from books where id={$bookid}";
        $result = mysqli_query($conn, $query);
        $row = mysqli_fetch_array($result);
?>
<div id="write_book" class="inner">
        <h2>도서수정</h2>
        <h3>내용을 변경하세요</h3>
        <form action="process/edit_process_t.php" method="post">
            <table>
                <tr>
                    <td>글쓴이</td>
                    <td><input type="text" name="writer" required value="<?=$row['writer']?>"></td>
                </tr>
                <tr>
                    <td>출판사</td>
                    <td><input type="text" name="publisher" required value="<?=$row['publisher']?>"></td>
                </tr>
                <tr>
                    <td>가격</td>
                    <td><input type="text" name="price" required id="priceInput" value="<?=$row['price']?>"></td>   <!-- type number로 하거나 -->
                </tr>
                <tr>
                    <td>출판일</td>
                    <td><input type="text" name="bookdate" value="<?=$row['bookdate']?>"></td>
                </tr>
                <tr>
                    <td>제목</td>
                    <td><input type="text" name="title" value="<?=$row['title']?>"></td>
                </tr>
                <tr>
                    <td>책내용</td>
                    <td><textarea name="desc" id="desc" cols="30" rows="10"><?=$row['desc']?></textarea></td>
                </tr>
                <tr>
                    <td colspan="2">
                        <input type="hidden" value="<?=$bookid?>" name="id">
                        <button type="submit">수정</button>
                        <button type="reset">취소</button>
                    </td>
                </tr>
            </table>
        </form>
        <script>
            let priceInput = document.querySelector("#priceInput");
            priceInput.addEventListener('input', function(){
                if(isNaN(Number(priceInput.value))) {
                    alert("가격은 숫자만 입력해주세요.");
                    priceInput.value="";
                }
            })
        </script>
</div>
<?php include_once 'include/footer.php' ?>

 

process/edit_process_t.php

<?php
    // var_dump($_POST);
    // var_dump($_POST['id']);

    // POST전송으로 전송된 데이터는 $_POST가 가지고 있음
    $conn = mysqli_connect('localhost','root','0000','test');
    // // 데이터 수정은 update문 사용
    // // update 테이블 이름
    // // set 컬럼명 = "변경될 값"
    // // where 컬럼
    $query = "update books 
    set `writer` = '{$_POST['writer']}',
    `title` = '{$_POST['title']}',
    `publisher` = '{$_POST['publisher']}',
    `price` = '{$_POST['price']}',
    `bookdate` = '{$_POST['bookdate']}',
    `desc` = '{$_POST['desc']}'
    where `id` = '{$_POST['id']}'
    ";
    echo $query;
    $result = mysqli_query($conn, $query);
    if($result) { echo "성공"; }
    else { echo "실패"; }
    header('Location:../index.php');
?>

 

 

 

* 삭제

process/delete_process.php

<?php
    // var_dump($_POST);
    echo $_GET['id'];
    $conn = mysqli_connect('localhost','root','0000','test');
    $query = "delete from books where id={$_POST['id']}";
    $result = mysqli_query($conn, $query);
    if($result) {
        echo "성공";
    } else {
        echo "실패";
    }
    header('Location:../index.php');
?>