본문 바로가기

프론트앤드 수업

[mysql,php] 연동해서 삽입,수정,삭제 가능한 테이블 만들기

728x90

Mysql 설치하는방법은 많이들 올라와있는데 ... 혹시나 php에서의 mysqli사용이 안된다면 사진을 참고해서

주석 ';'를 뺴주면 잘되더라...

기본화면 아직 검색은 못했고, 도서등록, 제목클릭시 자세히보기, 수정,삭제 까지 만들어졌다.

<?php include_once 'include/header.php'; ?>
<?php

    define($total,0);
    function printList(){
        $conn = mysqli_connect('localhost','root','1234','test');
        $query = "select * from books";
        $result = mysqli_query($conn,$query);
        $total = mysqli_num_rows($result);
        while($row = mysqli_fetch_array($result)){
          echo "<tr>
                <td>{$row['id']}</td>
                <td><a href='detail.php?id={$row['id']}'>{$row['title']}</a></td>
                <td>{$row['writer']}</td>
                <td>{$row['publisher']}</td>
                <td>{$row['price']}</td>
                <td>{$row['bookdate']}</td>
             </tr>";
    }
}
?>
    <div id="contents_page" class="inner">
    <h2>도서목록</h2>
    <h3>최신 도서 목록입니다.</h3>
    <table>
        <tr>
            <th>no</th>
            <th>Title</th>
            <th>writer</th>
            <th>publisher</th>
            <th>price</th>
            <th>bookdate</th>
        </tr>
       <?php printList(); ?>
    </table>
    <div id="searchDiv">
        <span>검색하기</span>
        <input type="text" name="search">
        <button id="searchBtn">검색하기</button>
        <button id="rightBtn">도서등록</button>
    </div>
    </div>
<?php include_once 'include/footer.php'; ?>

Mysql에서 만들어놓은 test데이터베이스에서 생성해놓은 테이블 books를 가져와서 각자의 값을 넣어줫다.

주의할 점은 mysql언어에서 php에서 사용가능한 언어로 바꾸기위한 mysqli_fetch_array 명령어인데 배열로 들어가지만 키값으로 한번 인덱스로 한번 2번의 자료가나오니 전부다 나오지 않도록 키값을주던 인덱스값을주던 해서 하나만 출력할 수 있지만 ;;; 이걸 td에 for문으로 돌려버리면 비어있는 td가 2배로 나오니 값이 없다면 실행안하도록 isset을 사용하도록 한다.

도서등록 화면 입력하고 등록을 누를시 create처리파일을 만들어놓았다. 기본으로 값을 따로 받아올 필요가없어서 조금 편한..? input에 name을 줘서 post방식으로 값을 넘기도록 한다.

<?php
//POST전송으로 넘어온 데이터는 슈퍼글러볼 $_POST변수가 배열형태로 받는다.
$conn = mysqli_connect('localhost','root','1234','test');
$query = "insert into books(`writer`,`title`,`publisher`,`price`,`bookdate`,`desc`)
            values('{$_POST['writer']}','{$_POST['title']}','{$_POST['publisher']}',{$_POST['price']},'{$_POST['date']}','{$_POST['desc']}')";
            echo $query;
            $result = mysqli_query($conn,$query);
        header('Location:../index.php');
?>

테이블을 가져와 쿼리문으로 insert into 로 값을 삽입한다. 이전에 가격에는 무조건 숫자만 들어가도록 스크립트를 삽입했었는데 그것때문인지 테이블 컬럼명에 무조건 백틱(`) 을 사용하지않으면 에러가 났었다... 백틱만 써야하나...

따로 php로 사용할것이 아니기에 그저 삽입만해서 넣어주고 index로 돌아가면 기본화면에 추가된다.

제목을 클릭시 나타나는 자세히보기 화면, 수정과 삭제가 가능하다

기본적으로 수정할 내용이 들어가야하기에 primary key인 id값을 이용해 나머지 값을 테이블에서 받아왔다. 수정을 누를시 input type=hidden 의 value값으로 넣어놓은 id값을 가져오도록 만들어놓았다.

                <form action="edit.php" method="post">
                    <input type="hidden" value="<?=$_GET['id']?>" name="id">
                <button type="submit">수정</button>

다입력 후 수정시 index로 돌아간다.

<?php
    $conn = mysqli_connect('localhost','root','1234','test');
     $query = "update books set `writer` ='{$_POST['writer']}' 
     ,`title`='{$_POST['title']}',`publisher` ='{$_POST['publisher']}',
     `bookdate` ='{$_POST['date']}',`desc` ='{$_POST['desc']}' 
     where id = {$_POST['id']}";
    $result = mysqli_query($conn,$query);

    header('Location:../index.php'); 
?>

수정쿼리문 update를 이용하지만 받아오는 값은 모두 edit.php 에서 POST방식으로 받아와서 그 값을 그대로 컬럼명을 이용해 넣으면서 where절을 이용해 id한줄만 변경해준다.

                <form action="process/delete_process.php" method="post">
                    <input type="hidden" value="<?=$_GET['id']?>" name="id">
                <button type='submit'>삭제</button>
                </form>

<?php
    $conn = mysqli_connect('localhost','root','1234','test');
    $query = "delete from books where id={$_POST['id']}";
    $result = mysqli_query($conn,$query);

    header('Location:../index.php');
    ?>

삭제버튼 역시 숨겨놓은 input의 value값을 이용해 ID를 전달해주고 그 ID를 이용해 쿼리문을 짜서 해당 컬럼만을 삭제하도록 만든다.

 

게시판이... 이렇게 만들기 어려운거였니 ..?

728x90
댓글