PHP / MariaDB / 데이터베이스의 데이터 수정하기

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

employees.php

Edit 버튼을 추가합니다. employees_edit.php에 emp_no의 값을 전달합니다.

<!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>Edit</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_edit = '
              <form action="employees_edit.php" method="POST">
                <input type="hidden" name="edit_emp_no" value="' . $jb_row[ 'emp_no' ] . '">
                <input type="submit" value="Edit">
              </form>
            ';
            $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_edit . '</td><td>' . $jb_delete . '</td></tr>';
          }
        ?>
      </tbody>
    </table>
  </body>
</html>

employees_edit.php

  • employees.php에서 Edit 버튼을 클릭했을 때 이동하는 페이지입니다.
  • emp_no 값을 받습니다.
$edit_emp_no = $_POST[ 'edit_emp_no' ];
  • 데이터베이스에 연결합니다.
$jb_conn = mysqli_connect( 'localhost', 'username', 'password', 'employees' );
  • emp_no에 해당하는 직원의 정보를 가져옵니다.
$jb_sql_edit = "SELECT * FROM employees WHERE emp_no = $edit_emp_no;";
  • 가져온 직원의 정보를 기본값으로 하는 폼을 만듭니다.
<form action="employees_update.php" method="POST">
  <input type="hidden" name="emp_no" value="<?php echo $jb_row[ 'emp_no' ]; ?>">
  <p>NO <?php echo $jb_row[ 'emp_no' ]; ?></p>
  <p>Birth Date <input type="date" name="birth_date" value="<?php echo $jb_row[ 'birth_date' ]; ?>" required></p>
  <p>First Name <input type="text" name="first_name" value="<?php echo $jb_row[ 'first_name' ]; ?>" required></p>
  <p>Last Name <input type="text" name="last_name" value="<?php echo $jb_row[ 'last_name' ]; ?>" required></p>
  <p>Gender <select name="gender" required>
    <option value="M" <?php if ( $jb_row[ 'gender' ] == M ) { echo 'selected'; } ?>>M</option>
    <option value="F" <?php if ( $jb_row[ 'gender' ] == F ) { echo 'selected'; } ?>>F</option>
  </select></p>
  <p>Hire Date <input type="date" name="hire_date" value="<?php echo $jb_row[ 'hire_date' ]; ?>" required></p>
  <button>Edit</button>
</form>
  • 전체 코드는 다음과 같습니다.
<?php
  $edit_emp_no = $_POST[ 'edit_emp_no' ];
  $jb_conn = mysqli_connect( 'localhost', 'username', 'password', 'employees' );
  $jb_sql_edit = "SELECT * FROM employees WHERE emp_no = $edit_emp_no;";
  $jb_result = mysqli_query( $jb_conn, $jb_sql_edit );
  $jb_row = mysqli_fetch_array( $jb_result );
?>

<!doctype html>
<html lang="ko">
  <head>
    <meta charset="utf-8">
    <title>Edit Employee</title>
    <style>
      body {
        font-family: Consolas, monospace;
        font-family: 12px;
      }
    </style>
  </head>
  <body>
    <h1>Edit Employee</h1>
    <form action="employees_update.php" method="POST">
      <input type="hidden" name="emp_no" value="<?php echo $jb_row[ 'emp_no' ]; ?>">
      <p>NO <?php echo $jb_row[ 'emp_no' ]; ?></p>
      <p>Birth Date <input type="date" name="birth_date" value="<?php echo $jb_row[ 'birth_date' ]; ?>" required></p>
      <p>First Name <input type="text" name="first_name" value="<?php echo $jb_row[ 'first_name' ]; ?>" required></p>
      <p>Last Name <input type="text" name="last_name" value="<?php echo $jb_row[ 'last_name' ]; ?>" required></p>
      <p>Gender <select name="gender" required>
        <option value="M" <?php if ( $jb_row[ 'gender' ] == M ) { echo 'selected'; } ?>>M</option>
        <option value="F" <?php if ( $jb_row[ 'gender' ] == F ) { echo 'selected'; } ?>>F</option>
      </select></p>
      <p>Hire Date <input type="date" name="hire_date" value="<?php echo $jb_row[ 'hire_date' ]; ?>" required></p>
      <button>Edit</button>
    </form>
  </body>
</html>

employees_update.php

  • employees_edit.php에서 값을 수정하고 Edit 버튼을 클릭했을 때 이동하는 페이지입니다.
  • UPDATE 문으로 값을 수정합니다.
<!doctype html>
<html lang="ko">
  <head>
    <meta charset="utf-8">
    <title>Update Employee</title>
    <style>
      body {
        font-family: Consolas, monospace;
        font-family: 12px;
      }
    </style>
  </head>
  <body>
    <?php
      $emp_no = $_POST[ 'emp_no' ];
      $birth_date = $_POST[ 'birth_date' ];
      $first_name = $_POST[ 'first_name' ];
      $last_name = $_POST[ 'last_name' ];
      $gender = $_POST[ 'gender' ];
      $hire_date = $_POST[ 'hire_date' ];
      if ( is_null( $emp_no ) ) {
        echo '<h1>Fail!</h1>';
      } else {
        $jb_conn = mysqli_connect( 'localhost', 'username', 'password', 'employees' );
        $jb_sql = "UPDATE employees SET birth_date = '$birth_date', first_name = '$first_name', last_name = '$last_name', gender = '$gender', hire_date = '$hire_date' WHERE emp_no = $emp_no;";
        mysqli_query( $jb_conn, $jb_sql );
        echo '<h1>Success!</h1>';
      }
    ?>
    <p>
      <a href="employees.php">Employees Lists</a>
      <a href="employees_add.php">Add Employee</a>
     </p>
  </body>
</html>

Related Posts

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

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

이 강좌에서 사용하는 데이터베이스는 employees입니다. (employees 설치 하기) 직원 추가 데이터베이스에 데이터 입력하기 강좌에 있는 방식으로 직원을 추가합니다. 연봉, 직책 등이 연결된 기존 직원을 삭제하면 문제가 생길 수 있으므로, 새로 직원을 추가한 후 그 직원을 삭제합니다. 직원 삭제하기 - employees.php 직원 정보를 출력하는 페이지에 직원을 삭제하는 기능을 추가해보겠습니다. Delete 버튼을 클릭하면 바로 삭제되고 페이지가 다시 ...

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

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

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.php Edit 버튼을 추가합니다. employees_edit.php에 emp_no의 값을 전달합니다. <!doctype html> <html lang="ko"> <head> <meta charset="utf-8"> <title>Employees</title> <style> body { font-family: Consolas, monospace; ...

PHP / addslashes(), stripslashes()

PHP / addslashes(), stripslashes()

addslashes() 작은 따옴표, 큰 따옴표, 백슬래시 앞에 백슬래시를 추가한다. 즉, PHP 'PHP' "PHP"를 PHP \'PHP\' \"PHP\"로 변경한다. <!doctype html> <html lang="ko"> <head> <meta charset="utf-8"> <title>PHP</title> <style> * { font-family: "Consolas", monospace; ...

PHP / 함수 / strpos() / 문자열 안에서 특정 문자열 위치 반환하는 함수

PHP / 함수 / strpos() / 문자열 안에서 특정 문자열 위치 반환하는 함수

strpos()는 문자열 안에서 특정 문자열의 위치를 반환하는 함수이다. 문법 strpos(string $haystack, string $needle, int $offset = 0) haystack : 검색 대상이 되는 문자열 needle : 찾을 문자열 offset : 검색 시작 위치 찾을 문자열이 있다면 그 위치를 반환하고, 없다면 false를 반환한다. 예제 123456789에서 1의 위치를 반환한다. 값은 0이다. strpos( "123456789", "1" ) 123456789에서 2의 위치를 반환한다. 값은 1이다. strpos( "123456789", "2" ...

PHP / 다른 페이지로 리디렉션(Redirection)하는 방법

PHP / 다른 페이지로 리디렉션(Redirection)하는 방법

여러 가지 이유로 a.php로 접속했을 때 b.php로 자동 이동하게 만들어야 할 경우가 있습니다. 이를 보통 리디렉션(Redirection)이라고 하는데, PHP에서는 다음과 같은 코드로 리디렉션을 구현할 수 있습니다. 다음과 같은 코드가 있는 페이지에 접속하면 https://www.codingfactory.net로 이동합니다. header( 'Location: https://www.codingfactory.net' ); 일정 시간 지난 후에 이동시키고 싶다면 sleep() 함수를 이용하세요. 다음은 5초 후 이동시키는 코드입니다. sleep( 5 ); header( ...

PHP / 파일 업로드 만들기

PHP / 파일 업로드 만들기

PHP로 파일 업로드 기능을 구현해본다. 다음은 파일을 업로드하기 위한 간단한 HTML 문서. <!doctype html> <html lang="ko"> <head> <meta charset="utf-8"> <title>PHP</title> </head> <body> <form action="" method="POST" enctype="multipart/form-data"> <p><input type="file" name="myfile"></p> <p><input type="submit" name="action" value="Upload"></p> </form> </body> </html> 파일을 업로드하면 $_FILES 번수에 배열로 name, type, size, ...

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 / Ubuntu / Apache / HTML 확장자에도 PHP 코드 인식되도록 설정하는 방법

PHP / Ubuntu / Apache / HTML 확장자에도 PHP 코드 인식되도록 설정하는 방법

Ubuntu에 Apache로 웹서버를 만들고 PHP를 사용할 수 있게 만든 경우, 기본적으로 확장자가 php인 경우에만 PHP 코드를 인식합니다. 만약 확장자가 html일 때로 PHP 코드가 인식되도록 하고 싶다면, Apache 설정을 바꿔줘야 합니다. /etc/apache2/mods-enabled/mime.conf 파일을 엽니다. 다음 코드를 추가합니다. AddType application/x-httpd-php .html 확장자가 htm인 경우에도 PHP를 인식하도록 하고 싶다면 다음처럼 합니다. AddType application/x-httpd-php .html .htm 웹서버를 다시 로드합니다. service apache2 ...

PHP / 반복문 / while, do-while, for

PHP / 반복문 / while, do-while, for

while 문법 while ( condition ) {   statement; } condition을 만족할 때까지 중괄호 안에 있는 statement를 실행합니다. 중괄호 대신 콜론(:)과 endwhile을 사용할 수도 있습니다. while ( condition ) :   statement; endwhile; 예제 <?php   $i = 1; // 초기값 설정   while ( $i < 10 ) ...