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>