반응형



1. PHP-Oracle 연동을 통한 데이터 입출력 프로세스
1) pr_in.html(사용자 입력 인터페이스)
| <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>교수 정보 입력</title> </head> <body> <form name="pr_form" action="pr_in.php" method="post"> * 입력한 내용을 pr_in.php 파일로 보내는 폼 시작 * name: 폼 이름 * action: 데이터를 보낼 파일 * method: 보내는 방식 (post 방식) 교수번호 : <input type="text" name="pno"><br> * text: 글자를 입력하는 칸 생성 * name=pno: 입력 값 이름(서버로 보낼 때 사용) * <br>: 줄 바꿈 교수이름 : <input type="text" name="pname"><br> 학과 : <select name="section"> * section: 여러 개 중 하나를 선택하는 메뉴를 시작함 <option value="화학">화학</option> <option value="물리">물리</option> <option value="유공">유공</option> <option value="생물">생물</option> <option value="식영">식영</option> * 보내는 값 화학,물리,유공,생물,식영 / 보이는 글자도 화학, 물리, 유공, 생물, 식영 </select><br> 직급 : <input type="radio" name="orders" value="정교수" checked> 정교수, * 라디오 버튼(여러 개 중 하나 선택) * value="정교수" : 선택 시 이 값이 전송됨 * checked: 처음부터 라디오 버튼이 "정교수"로 선택되어 있음 <input type="radio" name="orders" value="부교수"> 부교수, <input type="radio" name="orders" value="조교수"> 조교수<br> 발령일 : <input type="date" name="hiredate"><br> <hr> * <br>: 가로 줄 표시(구분선) <input type="submit" value="확인"> * submit: 버튼생성(누르면 입력한 내용 전송) * value: 확인(버튼에 보이는 글자) </form> </body> </html> |
| 1. 기능: 사용자가 교수 번호, 이름, 학과, 직위, 임용일을 입력하는 화면을 제공함 2. 작동 원리: <form> 태그의 action="pr_in.php"와 method="post" 설정을 통해, 사용자가 [확인] 버튼을 누르는 순간 모든 입력값을 pr_in.php 파일로 통째로 넘긴다 |
2) pr_in.php (중간 처리 및 DB 저장)
| <?php header('Content-Type: text/html; charset=utf-8'); * 브라우저에게 응답 데이터의 형식이 HTML이고, 한글 깨짐 방지를 위해 UTF-8 인코딩임을 알림 require('conn.php'); * DB 연결 정보가 담긴 'conn.php' 파일을 불러옴 $pno = $_POST["pno"]; $pname = $_POST["pname"]; $section = $_POST["section"]; $orders = $_POST["orders"]; $hiredate = $_POST["hiredate"]; * POST 방식으로 전달된 데이터들을 각각의 변수에 저장 $sql = "INSERT INTO professor (pno, pname, section, orders, hiredate) VALUES ('$pno', '$pname', '$section', '$orders', TO_DATE('$hiredate', 'YYYY-MM-DD'))"; * TO_DATE 함수를 사용해 문자열 형태의 날짜를 Oracle의 날짜(DATE) 타입으로 변환 * INSERT INTO professor: 이미 만들어진 표에 새로운 데이터를 넣고 싶을 때 약속된 명령어인 INSERT INTO를 반드시 써야 한다 * VALUES: 앞서 말한 칸들에 들어갈 실제 데이터를 입력하기 위해 쓰는 명령어 * ('$pno', '$pname', ...): 각 칸에 실제로 들어갈 구체적인 내용 $result = oci_parse($conn, $sql); * 작성한 SQL 문을 실행하기 위해 준비(Parsing) 함 $success = oci_execute($result); * 준비된 SQL 문을 실제로 실행(Execute)합니다. 실행 성공 시 true, 실패 시 false를 반환함 if($success) { echo "<script> alert('정상 입력 되었습니다.'); location.href='pr_vi.php'; - 저장이 성공했다면 알림창을 띄우고 목록 페이지(pr_vi.php)로 이동 </script>"; } else { echo "저장 실패"; * 저장이 실패했다면 화면에 메시지를 출력함 } oci_free_statement($result); oci_close($conn); * 사용한 메모리(문서 리소스)를 해제하고 DB 연결을 닫음 ?> |
| 1. 기능: HTML에서 넘어온 데이터를 받아서 오라클 데이터베이스(DB)에 집어넣는 역할을 함 2. 작동 단계: HTML에서 넘어온 데이터를INSERT INTO professor ... 문장을 만든다. 이때 달력에서 온 날짜(2026-03-23)를 오라클이 이해할 수 있도록 TO_DATE() 함수로 감싸서 명령어를 완성한다. 받아서 오라클 데이터베이스(DB)에 집어넣는 배달부 역할을 한다 3. 실행 및 판정: oci_execute() 명령어로 DB에 전송 한다. 성공 여부($success)를 판단하여 성공 시 alert 창을 띄우고 목록 페이지인 **pr_vi.php**로 사용자를 강제 이동 시킨다 |
3) pr_vi.php (데이터 조회 및 화면 출력)
| <?php header('Content-Type: text/html; charset=utf-8'); echo("<div style='text-align:center;'><a href='./pr_in.html'>교수 정보 입력하기</a></div><hr>"); require('conn.php'); * 화면에 HTML 출력 * 가운데 정렬된 링크 생성 (클릭하면 pr_in.html로 이동) $sql = "SELECT pno, pname, section, orders, TO_CHAR(hiredate, 'YYYY-MM-DD') FROM professor ORDER BY pno ASC"; * 실행할 SQL문 (데이터베이스에서 교수 정보 가져오기) * hiredate → 날짜 (YYYY-MM-DD 형식으로 변환) * ORDER BY → 교수번호 기준 오름차순 정렬 $result = oci_parse($conn, $sql); * SQL문을 실행 준비 상태로 만듦 oci_execute($result); * SQL문 실행 echo "<table border='1' style='margin:0 auto; width:80%; text-align:center; border-collapse:collapse;'>"; * 표(table 시작) * border → 테두리 * margin:0 auto → 가운데 정렬 * width:80% → 너비 * text-align:center → 글자 가운데 정렬 echo "<tr bgcolor='#f2f2f2'> <th>교수번호</th><th>이름</th><th>소속학과</th><th>직위</th><th>임용일</th> </tr>"; * 표의 첫줄=tr 배경색:bgcolor #f2f2f2 while ($row = oci_fetch_array($result, OCI_NUM)){ echo "<tr> <td>$row[0]</td> <td>$row[1]</td> <td>$row[2]</td> <td>$row[3]</td> <td>$row[4]</td> </tr>"; } * 결과 데이터를 한 줄씩 각져온다 * OCI_NUM → 숫자 인덱스(0,1,2...)로 접근 * 한 행(row) 출력 // $row[0] → 교수번호 // $row[1] → 이름 // $row[2] → 학과 // $row[3] → 직급 // $row[4] → 날짜 echo "</table>"; oci_free_statement($result); * SQL 실행 결과 메모리 해제 oci_close($conn); * 데이터베이스 연결 종료 echo "<hr>"; show_source(__FILE__); ?> |
| 1. 기능: DB 창고에 저장된 모든 교수 정보를 꺼내서 사용자 화면에 리스트 형태로 보여줍니다. 2. 작동원리: 1) SELECT * FROM professor ORDER BY pno 명령어를 실행하여 DB 서버로부터 데이터를 한 줄씩 가져온다 2) while 문을 사용하여 데이터가 더 이상 없을 때까지 반복하며 화면에 출력함 |
2. 프로세스 요약표
| 단계 | 파일명 | 주요 역할 |
| 1. 입력 | pr_in.html | 데이터 포장 및 전송 |
| 2. 처리 | pr_in.php | 데이터 수령 및 DB 저장 |
| 3. 출력 | pr_vi.php | DB 데이터 조회 및 전시 |
3. 흐름 정리
| 1. 입력 단계: pr_in.html에서 사용자가 정보를 입력하고 [확인]을 클릭 함 2. 처리 단계: pr_in.php가 실행되면서 DB에 저장을 시도함 3. 알림 단계: 저장이 성공하면 "정상 입력 되었습니다." 알림창을 출력함 4. 확인 단계: 알림창의 [확인]을 누르면 즉시 목록(pr_vi.php)으로 이동함 |
| 0323 작업 각 파일 날짜(AVR -> TO_CHAR) 변경, 테이블 태그 추가(가운데 정렬), oder by 태그(학번 등 순으로), 일반인이 읽기 쉬운 숫자와 문자 로 변경함 |
'Infra & Security Eng > Database Engineering' 카테고리의 다른 글
| 정규화의 근본 목적, 영수증 단계별 정규화 과정, PK와 FK의 기계적 원리, 까치발, 세로선, 동그라미 기호 의미 (0) | 2026.03.24 |
|---|---|
| PK와 FK 개념, PK, FK 설정 원리, 테이블 분리와 부모-자식 관계 (1:N), 까마귀 발(Crow's Foot) 기호의 해석 (0) | 2026.03.24 |
| 데이터 모델링 정의, 구성요소 4가지, 정규화 정의, 함수적 종속, 단계별 과정 (0) | 2026.03.23 |
| PHP와 Oracle DB 연동의 모든 것: 웹 서버부터 DB 엔진까지의 메커니즘 총 정리 - 수정 중 (0) | 2026.03.20 |
| [PHP] Oracle DB 연동 및 테이블별 데이터 출력 실습 (st_vi, pr_vi 등) (0) | 2026.03.20 |