📝
서은 STUDY_SCRIPT
  • JAVASCRIPT 기록
  • JAVASCRIPT 문법정리
    • 데이터 저장하기
    • 데이터 불러오기
    • 데이터 실행하기
    • 데이터 제어하기
    • 면접질문 정리
  • PHP를 이용한 사이트 작업
    • PHP와 MySQL
      • 댓글쓰기
      • 회원가입
      • 로그인
      • 게시판
        • 페이지네이션 & 게시글보기
        • 수정/삭제/목록/검색
  • 생활코딩 JavaScript
    • JavaScript 입문수업
      • Basic
        • 자바스크립트 기본 세팅
        • 데이터타입
        • 변수
        • 연산자
        • 조건문
        • 반복문
        • 함수
        • 배열
        • 객체
        • 모듈
        • 정규표현식
      • 함수지향
        • 유효범위
        • 값으로서 함수
        • 값으로서 콜백
        • 클로저
        • arguments
        • 함수의 호출
      • 객체지향
        • 생성자와 new
        • 전역객체
        • this
        • 상속
        • Prototype
        • 표준내장객체의 확장
        • Object
        • 데이터 타입
        • 복제 & 참조
    • JavaScript Basic
      • 자바스크립트란?
      • 데이터타입
      • 변수와 대입연산자
      • 제어할 태그 선택
      • 비교연산자와 불리언
      • 조건문 if
      • 리팩토링
      • 배열 [ ]
      • 반복문 while
      • 배열과 반복문
        • 배열과 반복문의 활용
      • 함수
        • 함수의 활용
      • 객체 { }
        • 객체와 반복문 for~in
        • 프로퍼티와 메소드
        • 객체의 활용
      • 파일로 쪼개서 정리정돈
      • 라이브러리 & 프레임워크
      • UI & API
    • Web Browser
      • JavaScript란?
      • BOM
        • 전역객체 window
        • 사용자와 커뮤니케이션
        • Location 객체
        • Navigator 객체
        • 창 제어
      • DOM
        • 제어 대상 찾기
        • jQuery
        • HTMLElement
        • Element 객체
          • 식별자 API
          • 조회 API
          • 속성 API
        • Node 객체
          • Node 관계 API
          • Node 종류 API
          • Node 변경 API
          • jQuery 노드 변경 API
          • 문자열로 노드 제어
        • HTMLCollection
      • 이벤트
        • 이벤트 등록
        • 이벤트 전파(버블링과 캡처링)
        • 이벤트 기본 동작 취소
        • 이벤트 타입
      • 네트워크 통신
        • Ajax
        • JSON
  • NOMAD JAVASCRIPT
    • VanillaJS
      • Why JS?
      • ES5, ES6
      • Basic
        • Alert & Console
        • Variable
        • Data Types
        • Array & Object
      • Function
      • DOM
        • Event & Event handler
        • Conditional
        • Function Practice
      • Momentum App
        • Making a JS Clock
        • Saving the User Name
        • To-Do List
        • Image Background
        • Getting Weather
  • DREAM CODING
    • 자바스크립트 기초 강의 (ES5+)
      • JavaScript 역사
      • async & defer / Strict Mode
      • Variable / Hoisting / Data Type
      • Operator / if / Loop
      • Function
        • 함수의 선언
        • 함수의 표현
      • Class
      • Object
      • Array
      • Array API
      • JSON
      • Callback
      • Promise
      • Async & Await
  • WEB BOS
    • #JavaScript30
Powered by GitBook
On this page
  • 게시글 수정하기
  • 글쓴이와 게시글의 데이터가 일치할 때, 수정이 가능 하도록 데이터 불러오기
  • 수정한 게시글을 저장하기 위한 데이터 불러오기 & 글쓴이 비밀번호 검사
  • 게시글 삭제하기
  • 삭제하기 위한 게시글과 글쓴이의 일치 검사 및 데이터 불러오기
  • 게시글 수정/삭제/목록 버튼 추가
  • 게시글 검색하기
  • 검색키워드가 데이터에 존재하는지 아닌지 검사
  • 검색어 찾기 & 검색어 필터 기능

Was this helpful?

  1. PHP를 이용한 사이트 작업
  2. PHP와 MySQL
  3. 게시판

수정/삭제/목록/검색

Previous페이지네이션 & 게시글보기NextJavaScript 입문수업

Last updated 3 years ago

Was this helpful?

게시글 수정하기

글쓴이와 게시글의 데이터가 일치할 때, 수정이 가능 하도록 데이터 불러오기

1. boardModify.php

<?php
    $boardID = $_GET['boardID'];

    $sql = "SELECT b.studyBoardID, b.boardTitle, b.boardContent, m.youName, b.boardView, b.regTime FROM studyBoard b JOIN studyMember m ON (m.studyMemberID = b.studyMemberID) WHERE b.studyBoardID = {$boardID}";
    $result = $connect -> query($sql);

    if($result){
        $info = $result -> fetch_array(MYSQLI_ASSOC);
        echo "<div style='display: none'><label for='boardID'>번호</label><input type='text' name='boardID' id='boardID' class='title-text' value='".$_GET['boardID']."' /></div>";
        echo "<div><label for='boardTitle'>제목</label><input type='text' name='boardTitle' id='boardTitle' class='title-text' value='".$info['boardTitle']."' /></div>";
        echo "<div><label for='boardContent'>내용</label><textarea name='boardContent' id='boardContent' rows='13' class='title-text'>".$info['boardContent']."</textarea></div>";
        echo "<div class='mt20'><label for='boardPass'>비밀번호</label><input type='password' name='boardPass' id='boardPass' class='title-text' placeholder='로그인 비밀번호를 입력해주세요!!' autocomplete='off' require /></div>";
    }

?>

수정한 게시글을 저장하기 위한 데이터 불러오기 & 글쓴이 비밀번호 검사

2. boardModifySave.php

<?php
    $boardID = $_POST['boardID'];
    $boardTitle = $_POST['boardTitle'];
    $boardContent = $_POST['boardContent'];
    $boardPass = $_POST['boardPass'];
    $memberID = $_SESSION['studyMemberID'];

    $boardTitle = $connect -> real_escape_string($boardTitle);
    $boardContent = $connect -> real_escape_string($boardContent);

    $sql = "SELECT * FROM studyMember WHERE studyMemberID = ${memberID}";
    $result = $connect -> query($sql);

    if( $result ){
        $info = $result -> fetch_array(MYSQLI_ASSOC);

        // echo "<pre>";
        // var_dump($info);
        // echo "</pre>";

        //비밀번호 확인
        if($info['youPass'] == $boardPass ){
            //업데이트
            //비밀번호 유효성검사 필요함(생략)
            $sql = "UPDATE studyBoard SET boardTitle = '{$boardTitle}', boardContent = '{$boardContent}' WHERE studyBoardID = '{$boardID}'";
            $result = $connect -> query($sql);
        } else {
            echo "
                <script>
                    alert('비밀번호를 입력하지 않았거나 틀렸습니다.');
                    history.back(1);
                </script>
            ";
        }
    }

?>

게시글 삭제하기

삭제하기 위한 게시글과 글쓴이의 일치 검사 및 데이터 불러오기

3. boardRemove.php

<?php
    include "../connect/connect.php";
    include "../connect/session.php";
    include "../connect/sessionCheck.php";

    $boardID = $_GET['boardID'];
    
    $boardID = $connect -> real_escape_string($boardID);

    $sql = "DELETE FROM studyBoard WHERE studyBoardID = {$boardID}";
    $connect -> query($sql);
?>

<script>
    location.href = "board.php";
</script>

게시글 수정/삭제/목록 버튼 추가

<div class="btn">
    <a href="boardModify.php?boardID=<?=$boardID?>" class="form-btn">수정하기</a>
    <a href="boardRemove.php?boardID=<?=$_GET['boardID']?>" onclick="confirm('정말 삭제하시겠습니까?')" class="form-btn">삭제하기</a>
    <a href="board.php" class="form-btn">목록보기</a>
</div>

게시글 검색하기

검색키워드가 데이터에 존재하는지 아닌지 검사

<?php
    $searchKeyword = $_GET['searchKeyword'];
    $searchOption = $_GET['searchOption'];

    // echo $searchKeyword, $searchOption;

    if( $searchKeyword == '' || $searchKeyword == null ){
        echo "<p>검색어가 없습니다.</p>";
    }
?>

검색어 찾기 & 검색어 필터 기능

<?php
    $searchKeyword = $connect -> real_escape_string($searchKeyword);
    $searchOption = $connect -> real_escape_string($searchOption);

    // $sql = "SELECT b.studyBoardID, b.boardTitle, b.boardContent, b.boardView, m.youName, b.regTime FROM studyBoard b JOIN studyMember m ON (b. studyBoardID = m.studyMemberID) WHERE b.boardTitle LIKE '%{$searchKeyword}%' ORDER BY DESC LIMIT 10";
    // $sql = "SELECT b.studyBoardID, b.boardTitle, b.boardContent, b.boardView, m.youName, b.regTime FROM studyBoard b JOIN studyMember m ON (b. studyBoardID = m.studyMemberID) WHERE b.boardContent LIKE '%{$searchKeyword}%' ORDER BY DESC LIMIT 10";
    // $sql = "SELECT b.studyBoardID, b.boardTitle, b.boardContent, b.boardView, m.youName, b.regTime FROM studyBoard b JOIN studyMember m ON (b. studyBoardID = m.studyMemberID) WHERE m.youName LIKE '%{$searchKeyword}%' ORDER BY DESC LIMIT 10";

    $sql = "SELECT b.studyBoardID, b.boardTitle, b.boardContent, b.boardView, m.youName, b.regTime FROM studyBoard b JOIN studyMember m ON (b. studyBoardID = m.studyMemberID) ";

    switch ($searchOption){
        case 'title';
            $sql .= "WHERE b.boardTitle LIKE '%{$searchKeyword}%' ORDER BY DESC LIMIT 10";
            break;
        case 'content';
            $sql .= "WHERE b.boardContent LIKE '%{$searchKeyword}%' ORDER BY DESC LIMIT 10";
            break;
        case 'name';
            $sql .= "WHERE m.youName LIKE '%{$searchKeyword}%' ORDER BY DESC LIMIT 10";
            break;
    }
    $result = $connect -> query($sql);

    if($result){
        $count = $result -> num_rows;

        echo "<p>총 ". $count ."건이 검색되었습니다.</p>";

        if($count > 0){
            for($i=1; $i<=$count; $i++){
                $boardInfo = $result -> fetch_array(MYSQLI_ASSOC);
                echo "<tr>";
                echo "<td>".$boardInfo['studyBoardID']."</td>";
                echo "<td><a href='boardView.php?boardID={$boardInfo['studyBoardID']}'>".$boardInfo['boardTitle']."</a></td>";
                echo "<td>".$boardInfo['youName']."</td>";
                echo "<td>".date('Y-m-d', $boardInfo['regTime'])."</td>";
                echo "<td>".$boardInfo['boardView']."</td>";
                echo "</tr>";
            }
        } else {
            echo "<tr><td colspan='4'>게시글이 없습니다.</td></tr>";
        }
    } else {
        echo "관리자에게 문의하세요!";
    }
?>

real_escape_string :

예를 들어 우리가 어떠한 string을 입력할 때 Tom's cat 이란 입력을 하면 '는 sql문에 앞서 있던 ' 와 중첩이 될 수 있음

이러한 문제를 막기 위해 \n, \r \" 처럼 구별해주는 형태로 만들어주는 것을 Escape string 이라고 함

%% : 백분율 기호를 반환

참고 :

https://crivius.tistory.com/12
5KB
boardModify.php
2KB
boardModifySave.php
390B
boardRemove.php
4KB
boardView.php
7KB
boardSearch.php