PHP / MariaDB / 데이터베이스에서 데이터 삭제하기

이 강좌에서 사용하는 데이터베이스는 employees입니다. (employees 설치 하기)

직원 추가

데이터베이스에 데이터 입력하기 강좌에 있는 방식으로 직원을 추가합니다. 연봉, 직책 등이 연결된 기존 직원을 삭제하면 문제가 생길 수 있으므로, 새로 직원을 추가한 후 그 직원을 삭제합니다.

직원 삭제하기 - employees.php

직원 정보를 출력하는 페이지에 직원을 삭제하는 기능을 추가해보겠습니다. Delete 버튼을 클릭하면 바로 삭제되고 페이지가 다시 로드되는 방식입니다.

폼 작성

데이터를 삭제하기 위해서는 어떤 데이터를 삭제할지 알려줘야 합니다. 숨겨진 폼을 이용하여 직원 번호(emp_no)를 변수 delete_emp_no로 넘겨주는 코드를 작성합니다.

$jb_delete = '
  <form action="employees.php" method="POST">
    <input type="hidden" name="delete_emp_no" value="' . $jb_row[ 'emp_no' ] . '">
    <input type="submit" value="Delete">
  </form>
';

표에 추가

직원 출력 표에 삭제 버튼을 추가합니다.

if ( isset( $delete_emp_no ) ) {
  $jb_sql_delete = "DELETE FROM employees WHERE emp_no = '$delete_emp_no';";
  mysqli_query( $jb_conn, $jb_sql_delete );
  echo '<p style="color: red;">Employee ' . $delete_emp_no . ' is deleted.</p>';
}

데이터 삭제

페이지를 로드할 때 delete_emp_no의 값이 있으면 데이터를 삭제하고 메시지를 출력합니다.

if ( isset( $delete_emp_no ) ) {
  $jb_sql_delete = "DELETE FROM employees WHERE emp_no = '$delete_emp_no';";
  mysqli_query( $jb_conn, $jb_sql_delete );
  echo '<p style="color: red;">Employee ' . $delete_emp_no . ' is deleted.</p>';
}

전체 코드

<!doctype html>
<html lang="ko">
  <head>
    <meta charset="utf-8">
    <title>Employees</title>
    <style>
      body {
        font-family: Consolas, monospace;
        font-family: 12px;
      }
      table {
        width: 100%;
      }
      th, td {
        padding: 10px;
        border-bottom: 1px solid #dadada;
        text-align: center;
      }
    </style>
  </head>
  <body>
    <table>
      <thead>
        <tr>
          <th>emp_no</th>
          <th>first_name</th>
          <th>last_name</th>
          <th>hire_date</th>
          <th>Delete</th>
        </tr>
      </thead>
      <tbody>
        <?php
          $jb_conn = mysqli_connect( 'localhost', 'username', 'password', 'employees' );
          $delete_emp_no = $_POST[ 'delete_emp_no' ];
          if ( isset( $delete_emp_no ) ) {
            $jb_sql_delete = "DELETE FROM employees WHERE emp_no = '$delete_emp_no';";
            mysqli_query( $jb_conn, $jb_sql_delete );
            echo '<p style="color: red;">Employee ' . $delete_emp_no . ' is deleted.</p>';
          }
          $jb_sql = "SELECT * FROM employees LIMIT 5;";
          $jb_result = mysqli_query( $jb_conn, $jb_sql );
          while( $jb_row = mysqli_fetch_array( $jb_result ) ) {
            $jb_delete = '
              <form action="employees.php" method="POST">
                <input type="hidden" name="delete_emp_no" value="' . $jb_row[ 'emp_no' ] . '">
                <input type="submit" value="Delete">
              </form>
            ';
            echo '<tr><td>' . $jb_row[ 'emp_no' ] . '</td><td>'. $jb_row[ 'first_name' ] . '</td><td>' . $jb_row[ 'last_name' ] . '</td><td>' . $jb_row[ 'hire_date' ] . '</td><td>' . $jb_delete . '</td></tr>';
          }
        ?>
      </tbody>
    </table>
  </body>
</html>

Related Posts

PHP / 조건문 / if, elseif, else

PHP / 조건문 / if, elseif, else

if 설명 if로 조건을 만족할 때 실행할 작업을 정할 수 있습니다. 문법 if ( condition ) { statement; } condition이 TRUE이면 statement을 실행하고, FALSE이면 실행하지 않습니다. 중괄호 대신 콜론과 endif를 이용할 수도 있습니다. if ( condition ): statement; endif; 예제 <!doctype html> <html lang="ko"> <head> <meta charset="utf-8"> <title>Coding Factory</title> <style> ...

PHP / 조건문 / switch

PHP / 조건문 / switch

설명 switch는 하나의 변수를 여러 값과 비교할 때 유용한 조건문입니다. 문법 switch ( $var ) { case value1: statement1; break; case value2: statement2; break; ... default: statement3; } $var의 값을 value1과 비교하여 value1과 같으면 statement1을 실행하고 ...

PHP / 함수 / md5() / 문자열에서 md5 해시값 생성하는 함수

PHP / 함수 / md5() / 문자열에서 md5 해시값 생성하는 함수

개요 md5()는 문자열에서 md5 해시값을 생성하는 함수입니다. 해시값에서 원래의 문자열을 만들지는 못합니다. 문자열이 같다면 같은 해시값을 만드므로, 비밀번호를 암호화하여 저장하는 용도로는 맞지 않습니다. It is not recommended to use this function to secure passwords, due to the fast nature of this hashing algorithm. 문법 md5( string $str ) str : ...

PHP / Session / 로그인, 로그아웃, 로그인 상태에서만 보이는 콘텐츠 만들기

PHP / Session / 로그인, 로그아웃, 로그인 상태에서만 보이는 콘텐츠 만들기

PHP의 세션을 이용하여 로그인, 로그아웃을 만들 수 있습니다. 그리고 로그인한 사용자만 볼 수 있는 콘텐츠를 만들 수도 있습니다. 다음은 이를 구현한 아주 간단한 예제입니다. inc_head.php 모든 페이지에 들어갈 코드입니다. include 함수로 각 페이지에서 불러올 것입니다. 세션의 username 값이 있다면, 즉 로그인 상태라면 $jb_login에 TRUE를 할당합니다. <?php session_start(); if( isset( $_SESSION ...

PHP / 함수 / 날짜, 시간 / date(), localtime(), mktime(), time()

PHP / 함수 / 날짜, 시간 / date(), localtime(), mktime(), time()

date() 개요 Timestamp를 원하는 형식으로 출력하는 함수입니다. 문법 date( format, timestamp ) format : 필수 항목입니다. 출력할 형식을 정합니다. timestamp : 선택 항목입니다. 값이 없으면 현재 timestamp를 사용합니다. 예제 <!doctype html> <html lang="ko"> <head> <meta charset="utf-8"> <title>PHP</title> <style> body { ...

PHP / MariaDB / 데이터베이스 값 가져와서 출력하기

PHP / MariaDB / 데이터베이스 값 가져와서 출력하기

이 강좌에서 사용하는 데이터베이스는 employees입니다. (employees 설치 하기) employees 출력하기 – employees.php employees 테이블에는 직원 목록이 있습니다. 그 목록을 가져와서 출력해보겠습니다. 데이터베이스 연결 정보 employees 데이터베이스에 연결하기 위한 정보를 입력합니다. username과 password는 적절히 변경하세요. $jb_conn = mysqli_connect( 'localhost', 'username', 'password', 'employees' ); 쿼리 작성하기 employees 테이블에서 5개의 레코드를 가져오는 쿼리입니다. $jb_sql = "SELECT * FROM employees LIMIT 5;"; 값 저장하기 쿼리 ...

PHP / SQL Server / Ubuntu 18.04에서 연결하는 방법

PHP / SQL Server / Ubuntu 18.04에서 연결하는 방법

PHP에서 SQL Server에 연결하는 방법입니다. 서버 OS는 Ubuntu 18.04이고 Apache, PHP는 설치되어 있는 상태에서 시작합니다. 아래의 내용은 꼭 필요한 것만 모은 요약이며, 자세한 내용은 Microsoft 홈페이지에서 보실 수 있습니다. 소프트웨어 설치 다음의 명령을 차례대로 실행하여 필요한 소프트웨어를 설치합니다. curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list apt-get update ACCEPT_EULA=Y apt-get install msodbcsql17 apt-get install unixodbc-dev apt install ...

PHP / 연산자 / 산술 연산자

PHP / 연산자 / 산술 연산자

PHP의 산술 연산자에는 +, -, *, /, %, **이 있습니다. – $a $a의 부호를 반대로 바꿉니다. <?php   $a = 10;   echo - $a; ?> -10을 출력합니다. $a + $b $a와 $b를 더합니다. <?php $a = 10; $b = 4; echo $a + $b; ?> 14를 출력합니다. $a – $b $a에서 $b를 뺍니다. <?php $a = 10; $b = ...

PHP / 회원 관리 / 로그인 페이지, 로그인 완료 페이지

PHP / 회원 관리 / 로그인 페이지, 로그인 완료 페이지

로그인 페이지 – login.php 페이지를 열면 POST 방식으로 넘어온 username과 password를 저장합니다. $username에 값이 없다면 이후의 PHP 코드는 실행되지 않습니다. 양식에 값을 입력하고 로그인 버튼을 클릭하면 $username에 값이 있으므로 이후의 PHP 코드가 실행됩니다. $username에 값이 있다면 DB에서 username에 해당하는 password를 가져와서 $encrypted_password에 저장합니다. 일치하는 username이 존재하지 않는다면 $encrypted_password의 값이 없으므로 ‘사용자이름이 존재하지 않습니다.’를 출력합니다. 일치하는 username이 ...

PHP / 연산자 / 할당 연산자

PHP / 연산자 / 할당 연산자

PHP의 할당 연산자는 =입니다. 등호 오른쪽을 등호 왼쪽에 저장합니다.(같다를 표현할 때는 ==를 사용합니다.  비교 연산자를 참고하세요.) $a = 10; 변수 a에 10을 할당합니다. $a = 10; $a = 20; 여러 번 할당하면 마지막에 할당된 것이 값이 됩니다. 즉 변수 a의 값은 20입니다. $a = 10; $a = $a + 10; 기존 값을 사용할 수 있습니다. 변수 a의 값은 ...

PHP 강좌