php-php와 오라클 연동(2)
2020. 1. 10. 14:30ㆍSecurity/language
1. 과목 테이블 입력을 위한 폼 파일 작성(co_in.html)
2. 과목 테이블에 입력된 데이터를 전달 받아 입력할 프로그램을 작성(co_in.php)
3. co_in.html의 입력 부분 개선
4. co_vi.php 개선
<?
session_start();
if(empty($_GET["logout"])){}
else session_unset(); // session_destroy 사용과 비교한다.
$id = $_SESSION["id"];
$passwd = $_SESSION["passwd"];
require('conn.php');
$sql="select * from id
where id = '$id'
and passwd = DBMS_CRYPTO.Hash(to_clob(to_char('$id$passwd')),2)";
$result=oci_parse($conn,$sql);
$re=oci_execute($result);
$row_num1=oci_fetch_all($result,$row);
if($row_num1 == 1){ // 로그인 상태일때
echo("<a href=./co_in.html>자료 입력하기</a>
<a href=./co_vi.php?logout=$row_num1>logout</a><hr>
");
}
else{ // 비로그인 상태일때
echo(" <a href=./id.html>계정등록</a>
<a href=./check.html>login</a><hr>");
}
//==========================================================================
$del=$_GET[del]; // $del 변수가 null이 아니면 행을 삭제하는 else절이 실행된다.
if (empty($del)){}
else {
$sql="delete from course where cno='$del'";
$result=oci_parse($conn,$sql);
oci_execute($result);
oci_free_statement($result);
}
//==========================================================================
$search = $_GET[search];
if (empty($search)) // $search 변수가 없을 때 $sql
{
$sql="select cno, cname, st_num, pname
from course, professor
where course.pno=professor.pno
order by cname"; // pno 대신 pname이 보이게 수정
$result=oci_parse($conn,$sql);
}
else // $search 변수가 있을 때 $sql
{
$sql="select cno, cname, st_num, pname
from course, professor
where course.pno=professor.pno
and cname like '%{$search}%'
order by cname"; // pno 대신 pname이 보이게 수정
$result=oci_parse($conn,$sql);
}
oci_execute($result);
echo("<form name='search' method='get' action='co_vi.php'>
검색창 <input type='text' name='search'>
<input type='submit' name='확인' value='확인'>
</form>
");
//==========================================================================
$row_num=oci_fetch_all($result, $row);
oci_free_statement($result);
oci_close($conn);
$scale=5;
$start = $_GET[start];
if (empty($start)){$start=0;}
echo("<table border='0'>");
for($i=$start; $i<($start+$scale); $i++){
if($i<$row_num){
echo("
<tr>
<td width='50'><p align='center'>{$row[CNO][$i]}</p></td>
<td width='100'><p align='center'>{$row[CNAME][$i]}</p></td>
<td width='20'><p align='center'>{$row[ST_NUM][$i]}</p></td>
<td width='50'><p align='center'>{$row[PNAME][$i]}</p></td>
");
if($row_num1==1){
echo("
<td width='30'><a href=./co_vi.php?del={$row[CNO][$i]}&start=$start&search=$search>del</a></td>
</tr>
");
}
}
}
echo("</table><hr>");
$p=$start-$scale; // 이전 화면의 시작 위치
$n=$start+$scale; // 다음 화면의 시작 위치
if($p>=0)
echo("<a href=./co_vi.php?start=$p&search=$search>[이전페이지]</a> ");
else
echo("이전페이지 ");
if($n<$row_num)
echo("<a href=./co_vi.php?start=$n&search=$search>[다음페이지]</a>");
else
echo("다음페이지");
?>
<hr>
<a href=../20200110/index.html>홈화면으로</a>
<?
echo("<hr>");
show_source(__FILE__);
?>
테이블 검색 결과가 pno 대신 pname이 보이도록 개선한다
5. 이와 같은 방식으로 sc_in.html과 sc_in.php 작성
5-1. 점수 테이블 입력을 위한 폼 파일 작성(sc_in.html)
<html><head>
<meta http-equiv="content-type" content="text/html; charset=euc-kr">
<title> score 입력폼 </title>
</head>
<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">
<form name="insert" action="sc_in.php" method="POST">
<center>
<table border="0" width="300">
<tr>
<td width="70"><p align="center">학생</p></td>
<td><select name="sno">
<?
require('conn.php'); // 학생의 명단을 나열한다.
$sql="select sno, sname
from student";
$result=oci_parse($conn,$sql);
oci_execute($result);
$row_num=oci_fetch_all($result, $row);
for ($i=0; $i<$row_num; $i++) {
echo("<option value='{$row[SNO][$i]}'>{$row[SNAME][$i]}</option>"); // 불러오는 것은 sno지만 보이는 것은 sname
}
oci_free_statement($result);
?>
</td>
</tr>
<tr>
<td width="50"><p align="center">과목</p></td>
<td><select name="cno">
<?
$sql="select cno, cname
from course"; // 과목정보를 나열한다.
$result=oci_parse($conn,$sql);
oci_execute($result);
$row_num=oci_fetch_all($result, $row);
oci_free_statement($result);
oci_close($conn);
for ($i=0; $i<$row_num; $i++) {
echo("<option value='{$row[CNO][$i]}'>{$row[CNAME][$i]}</option>"); // 불러오는 것은 cno지만 보이는 것은 cname
}
?>
</td>
</tr>
<tr>
<td width="50"><p align="center">점수</p></td>
<td><input type="text" name="res"></td>
</tr>
<tr>
<td colspan="2">
<p align="center"><input type="submit" name="확인" value="확인"></p>
</td>
</tr>
<table>
</form>
</body></html>
5-2. 점수 테이블에 입력된 데이터를 전달 받아 입력할 프로그램을 작성(sc_in.php)
<?
$sno = $_POST[sno];
$cno = $_POST[cno];
$res = $_POST[res];
require('conn.php');
$sql="insert into score (sno, cno, result)
values ('$sno', '$cno', $res)";
$result=oci_parse($conn,$sql); // SQL문을 파싱해서 실행 계획을 생성한다.
$re=oci_execute($result); // SQL문을 실행한다.
oci_free_statement($result);
oci_close($conn);
if(!$re)
{echo(" <script>
window.alert('점수 입력 장애 입니다.');
history.go(-1);
</script>
");
exit;
}
else
echo(" <meta http-equiv='Refresh' content = '0; URL=sc_vi.php'>");
?>
<?
echo("<hr>");
show_source(__FILE__);
?>
5-3. sc_vi.php 개선
<?
session_start();
if(empty($_GET["logout"])){}
else session_unset(); // session_destroy 사용과 비교한다.
$id = $_SESSION["id"];
$passwd = $_SESSION["passwd"];
require('conn.php');
$sql="select * from id
where id = '$id'
and passwd = DBMS_CRYPTO.Hash(to_clob(to_char('$id$passwd')),2)";
$result=oci_parse($conn,$sql);
$re=oci_execute($result);
$row_num1=oci_fetch_all($result,$row);
if($row_num1 == 1){ // 로그인 상태일때
echo("<a href=./sc_in.html>자료 입력하기</a>
<a href=./sc_vi.php?logout=$row_num1>logout</a><hr>
");
}
else{ // 비로그인 상태일때
echo(" <a href=./id.html>계정등록</a>
<a href=./check.html>login</a><hr>");
}
//==========================================================================
$del1 = $_GET[del1]; // $del 변수가 null이 아니면 행을 삭제하는 else절이 실행된다.
$del2 = $_GET[del2];
if (empty($del1) && empty($del2)){}
else {
$sql="delete from score where sno ='$del1' and cno='$del2'";
$result=oci_parse($conn,$sql);
oci_execute($result);
oci_free_statement($result);
}
//==========================================================================
$search = $_GET[search];
if (empty($search)) // $search 변수가 없을 때 $sql
{
$sql="select cname, sname, to_char(result,'00') result
from student, course, score
where student.sno=score.sno and course.cno=score.cno
order by cname, sname"; // cno, sno대신 cname, sname이 검색되게 개선
$result=oci_parse($conn,$sql);
}
else // $search 변수가 있을 때 $sql
{
$sql="select cname, sname, to_char(result,'00') result
from student, course, score
where student.sno=score.sno and course.cno=score.cno
and sname like '%{$search}%'
order by cname, sname"; // cno, sno대신 cname, sname이 검색되게 개선
$result=oci_parse($conn,$sql);
}
oci_execute($result);
echo("<form name='search' method='get' action='sc_vi.php'>
검색창 <input type='text' name='search'>
<input type='submit' name='확인' value='확인'>
</form>
");
//==========================================================================
$row_num=oci_fetch_all($result, $row);
oci_free_statement($result);
oci_close($conn);
$scale=5;
$start = $_GET[start];
if (empty($start)){$start=0;}
echo("<table border='0'>");
for($i=$start; $i<($start+$scale); $i++){
if($i<$row_num){
echo("
<tr>
<td width='100'><p align='center'>{$row[SNAME][$i]}</p></td>
<td width='100'><p align='center'>{$row[CNAME][$i]}</p></td>
<td width='40'><p align='center'>{$row[RESULT][$i]}</p></td>
");
if($row_num1==1){
echo("
<td width='30'><a href=./sc_vi.php?del1={$row[SNO][$i]}&del2={$row[CNO][$i]}&start=$start&search=$search>del</a></td>
</tr>
");
}
}
}
echo("</table><hr>");
$p=$start-$scale; // 이전 화면의 시작 위치
$n=$start+$scale; // 다음 화면의 시작 위치
if($p>=0)
echo("<a href=./sc_vi.php?start=$p&search=$search>[이전페이지]</a> ");
else
echo("이전페이지 ");
if($n<$row_num)
echo("<a href=./sc_vi.php?start=$n&search=$search>[다음페이지]</a>");
else
echo("다음페이지");
?>
<hr>
<a href=../20200110/index.html>홈화면으로</a>
<?
echo("<hr>");
show_source(__FILE__);
?>
테이블의 검색 결과가 cno, sno대신 cname, sname이 검색되게 개선
* DB 연동 사이트 구축
1. 메인 페이지(index.html) 작성
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=euc-kr">
<title>index.html</title>
</head>
<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">
<table border="0" align="center" width="300">
<tr>
<td>
<p align="center"><a href="st_vi.php">student 검색</a></b></p>
<p align="center"><a href="pr_vi.php">professor 검색</a></b></p>
<p align="center"><a href="co_vi.php">course 검색</a></b></p>
<p align="center"><a href="sc_vi.php">score 검색</a></b></p>
</td>
<tr>
</table>
</body>
</html>
2. 입력이 다된후 메인 홈페이지로 돌아가도록 변경
echo(" <meta http-equiv='Refresh' content = '0; URL=index.html'>");
st_in.php, pr_in.php, sc_in.php, co_in.php의 url을 index.html로 변경해준다.
'Security > language' 카테고리의 다른 글
php-세션 (0) | 2020.01.03 |
---|---|
php-php와 오라클 연동 (0) | 2019.12.31 |
php-DB 접속 (0) | 2019.12.30 |
php-함수 (0) | 2019.12.30 |
php-배열(2차원 배열) (0) | 2019.12.26 |