on
PHP 8 - 다양한 기능 추가(삭제, 검색, 화면단위) 및 테이블 관계 입출력
PHP 8 - 다양한 기능 추가(삭제, 검색, 화면단위) 및 테이블 관계 입출력
다양한 기능 추가 (삭제, 검색, 화면단위 출력)
▶ 삭제 및 검색, 화면단위 출력 기능
위와 같이 검색기능을 활성화 할 것이다.
st_vi.php
검색창 자료 입력하기"); require('conn.php'); //==========================삭제기능======================================== $del=$_GET[del]; // $del 변수가 null이 아니면 행을 삭제하는 else절이 실행된다. if (empty($del)){} else { $sql="delete from student where sno='$del'"; $result=oci_parse($conn,$sql); oci_execute($result); oci_free_statement($result); } //==========================검색기능========================================= $search = $_POST[search]; if (empty($search)) { $sql="select sno,sname,sex,major,syear,to_char(avr,'0.00') avr from student order by sno"; $result=oci_parse($conn,$sql); } else { $sql="select sno,sname,sex,major,syear,to_char(avr,'0.00') avr from student where sname like '%{$search}%' order by sno"; $result=oci_parse($conn,$sql); } oci_execute($result); //========================================================================== $row_num=oci_fetch_all($result, $row); // $row_num : 전제 행의 수 echo("Row의 개수는 $row_num 입니다."); // 행은 컬럼명, 열은 헹번호 oci_free_statement($result); oci_close($conn); $scale=5; // 화면에 출력할 행의 개수 $start = $_GET[start]; if (empty($start)){$start=0;} // 첫 화면은 0에서 시작, 배열의 키값은 0에서 시작 echo(""); for($i=$start; $i<($start+$scale); $i++) { if ($i<$row_num){ echo(" {$row['SNO'][$i]} {$row['SNAME'][$i]} {$row['SEX'][$i]} {$row['SYEAR'][$i]} {$row['MAJOR'][$i]} {$row['AVR'][$i]} del "); } } echo(""); $p=$start-$scale; // 이전 화면의 시작 위치 $n=$start+$scale; // 다음 화면의 시작 위치 if($p>=0) echo("[이전페이지] "); else echo("이전페이지 "); if($n<$row_num) echo("[다음페이지]"); else echo("다음페이지"); ?>
검색 실행결과 화면단위 실행결과
위 방식으로 프로그램을 구성할 경우 오류가 있다.
다음페이지를 눌렀을 경우 search 변수가 유지가 되지 않아서 다음페이지를 다시 처음부터 받아오는 경우가 생긴다.
search 변수를 출력함으로써 search 변수가 유지되지 않는 것을 확인할 수 있다.
수정된 st_vi.php
검색창 자료 입력하기"); require('conn.php'); //==========================삭제기능======================================== $del=$_GET[del]; // $del 변수가 null이 아니면 행을 삭제하는 else절이 실행된다. if (empty($del)){} else { $sql="delete from student where sno='$del'"; $result=oci_parse($conn,$sql); oci_execute($result); oci_free_statement($result); } //==========================검색기능========================================= $search = $_GET[search]; if (empty($search)) { $sql="select sno,sname,sex,major,syear,to_char(avr,'0.00') avr from student order by sno"; $result=oci_parse($conn,$sql); } else { $sql="select sno,sname,sex,major,syear,to_char(avr,'0.00') avr from student where sname like '%{$search}%' order by sno"; $result=oci_parse($conn,$sql); } oci_execute($result); //========================================================================== $row_num=oci_fetch_all($result, $row); // $row_num : 전제 행의 수 echo("Row의 개수는 $row_num 입니다."); // 행은 컬럼명, 열은 헹번호 oci_free_statement($result); oci_close($conn); $scale=5; // 화면에 출력할 행의 개수 $start = $_GET[start]; if (empty($start)){$start=0;} // 첫 화면은 0에서 시작, 배열의 키값은 0에서 시작 echo(""); for($i=$start; $i<($start+$scale); $i++) { if ($i<$row_num){ echo(" {$row['SNO'][$i]} {$row['SNAME'][$i]} {$row['SEX'][$i]} {$row['SYEAR'][$i]} {$row['MAJOR'][$i]} {$row['AVR'][$i]} del "); } } echo(""); $p=$start-$scale; // 이전 화면의 시작 위치 $n=$start+$scale; // 다음 화면의 시작 위치 if($p>=0) echo("[이전페이지] "); else echo("이전페이지 "); if($n<$row_num) echo("[다음페이지]"); else echo("다음페이지"); echo(""); echo($search); // 확인하기 위해 search 변수 출력 ?>
실행결과
search 변수가 잘 유지되는 것을 확인할 수 있다.
관계(Relationship)을 가진 테이블에 대한 입출력
▶ 유효한 데이터 확인
course(과목) 테이블 입력 폼과 프로그램
co_in.html
course 입력폼 과목번호 과목명 학점수 1, 2, 3, 4 교수번호
이런식으로 과목명을 입력할 경우 교수번호를 알아야하는데 우리는 알 수가 없다. 따라서 아래처럼 교수이름을 출력하도록 수정한다.
수정후 co_in.html
course 입력폼 과목번호 과목명 학점수 1, 2, 3, 4 교수 {$row[PNAME][$i]}"); } oci_free_statement($result); oci_close($conn); ?>
co_in.php
window.alert('과목 입력 장애 입니다.'); history.go(-1); "); exit; } else echo(" "); ?>
sc_in.html
score 입력폼 학생 {$row[SNAME][$i]}"); } oci_free_statement($result); ?> 과목 {$row[CNAME][$i]}"); } ?> 점수
sc_in.php
window.alert('기말고사 점수 입력 장애 입니다.'); history.go(-1); "); exit; } else echo(" "); ?>
추가된 것을 확인할 수 있다.
from http://lemonandgrapefruit.tistory.com/173 by ccl(A) rewrite - 2021-12-24 15:26:37