일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ciscopacket
- Oracle
- Java
- 오라클
- rinux
- 네트워크
- VLAN
- NCS
- html
- php
- sql
- 정보처리기사
- 라우터
- 정처기필기
- 리눅스
- 데이터베이스
- 네트워크관리사
- autoset
- 원형그래프
- Cisco
- ospf
- jsp연결
- w3school
- jsp
- 자바
- 이것이 자바다
- 버추얼머신
- 참조타입
- javaee
- cisco packet
- Today
- Total
기록해! 정리해!
HTML --성적조회 프로그램Ver 1.0 (2) 본문
06/21
º method
GET : 소량의 데이터 , url값이 다 노출됨 --테스트용
POST : 대량의 데이터, 바이너리값(파일을 보낼 수 있다) , 보안상 유리(url값이 노출되지 않음)
-- form에서 더 많이 씀
º member.php (자료실)
순서 1.
<form action=member_ok.php
method=post
enctype="multipart/form-data">
순서 2.
학번 <input type=text name=sno>
주소 <input type=text name=addr>
사진 <input type=file name=img>
<input type=submit value="저장하기"> --따옴표 조심!
순서 3.
<table border=1>
<tr><td width=100>학번</td><td> <input type=text name=sno></td><tr> --하나에만 넓이를 줘도 다 적용됨
<tr><td>주소</td><td> <input type=text name=addr></td><tr>
<tr><td> 사진</td><td align=center><input type=file name=img></td><tr>
<tr><td colspan=2 align=center><input type=submit value="저장하기">
</table>
º member_ok.php
$conn -> query($SQL);
echo $SQL; --저장된 걸 보고 넘겨야함 !!
?>
<script>
// location.href="list.php" ; --주석처리시키고 echo해서
</script>
º member.php에 자바스크립트 추가하기
<form action="member_ok.php" onSubmit="return ck1()"
method="post"
enctype="multipart/form-data">
원래있던 member_ok.php는 old로 이름바꾸고
새 파일로 member_ok.php
100 찍히는 거 확인하기
if($mfile == ""){
echo "빈 파일";
$mfile = 'space.png';
} else {
move_uploaded_file($tmp,"./img/$mfile"); -- 파일 저장
}
여기까지는 같은 파일을 업로드하면 덮어씌워짐
근데 이러면 뒤에 jpg 인것만 뺄 수 있음
strrchr : 맨 마지막에 있는 . 을 받아서 그 이하 값을 리턴해줌
(.이 들어가있는 파일명같은 경우에 확장자가 아니고 이름을 지울수도 있는데 이 함수는 맨 끝에 있는 걸 반환함)
시간 나타내기 , 확장자 출력
다 합치기
--파일명 분리 / 확장자 분리
º SQL연결
<? include "DBconn.php"?>
.
.
$SQL = "insert into member(sno, addr, img) values ('$sno','$addr','$mfile')";
$conn -> query($SQL);
echo $SQL;
?>
º 삭제하기
주소에 링크걸기
member_list.php
<td>
<a href=member_delete.php?sno=<?=$row['sno']?>>
<?=$row['addr']?>
</a>
</td>
member_delete.php 생성해서 delete.php 복붙
<? include "DBConn.php" ?>
<?
$sno = $_GET['sno'];
$SQL = "select * from member where sno='$sno'";
$result = $conn -> query($SQL);
$row = $result -> fetch_assoc();
$img = $row['img'];
if ($img != 'space.png' ){ --space.png가 아니면 지우겠다
unlink("./img/$img");
}
$SQL ="delete from member where sno ='$sno' " ;
$conn -> query($SQL);
?>
<script>
location.href="member_list.php" ;
</script>
오토셋에서도 레코드 삭제 되었고
img 파일 안에서도 삭제되었다
º 수정하기
member_edit.php 생성
<? include "top.php" ?>
<? include "DBConn.php" ?>
<?
$sno = $_GET['sno'];
$SQL = "select * from member where sno='$sno'";
$result = $conn -> query($SQL);
$row = $result -> fetch_assoc();
$sno = $row['sno'];
$addr = $row['addr'];
$img = $row['img'];
?>
<style>
table{
width: 350px ;
height:300px ;
}
td{
text-align:center;
}
</style>
<section>
<br><br>
<div id=section1>
학생 정보 수정하기
</div>
<br>
<div align=center>
<form name=f1 action=member_update.php onSubmit="return ck1()"
method=get
enctype="multipart/form-data">
<table border=1>
<tr><td colspan=2 align=center width=400 height=150><img src=./img/<?=$img?>></td></tr>
<tr><td width=100>학번</td><td> <input type=text name=sno></td><tr>
<tr><td>주소</td><td> <input type=text name=addr></td><tr>
<tr><td> 사진</td><td align=center><input type=file name=img></td><tr>
<tr><td colspan=2 align=center><input type=submit value="수정하기">
</table>
</form>
</div>
<br>
</section>
<? include "bottom.php" ?>
member_list.php에 주소에 건 링크를
<a href=member_edit.php?sno=<?=$row['sno']?>>로 바꿔준다
º member_update.php
1. 파일첨부가 없을때 (학번이랑 주소만 수정할때)
2.파일 첨부가있을때, 기존 사진이 없는경우 -> ①(기존 img파일 안에 존재하던 사진이랑) 사진파일명이 동일할때 뒤에
.$time.$ext; 붙여서 수정해서 저장/ ②파일명이 다르면 그대로저장
3.파일 첨부가있을때, 기존 사진이 있는 경우 -> ①(기존 img파일 안에 존재하던 사진이랑) 사진파일명이 동일할때 뒤에 .$time.$ext; 붙여서 수정해서 저장/ ②파일명이 다르면 그대로저장
(--언니가 짱임 다들 꼬순블로그 보시길)
<? include "top.php"?>
<? include "DBConn.php"?>
<?
$sno=$_GET['sno'];
$SQL= "select * from member where sno='$sno'";
$result= $conn-> query($SQL);
$row=$result->fetch_assoc();
$sno= $row['sno'];
$addr= $row['addr'];
$img= $row['img'];
?>
<style>
table{
width:350px;
height:250px;
}
td{
text-align:center;
}
</style>
<script>
function ck1(){
if(f1.sno.value==""){
alert("학번을 입력해주세요");
f1.sno.focus();
return false;
} else{
alert("학생 성적이 정상적으로 입력되었습니다");
}
}
function ck2(sno){
alert("확인 : " + sno);
location.href="member_delete.php?sno="+sno;
}
</script>
<section>
<br><br><div id=section1><b>학생 정보 수정하기</b></div>
<br>
<div align=center>
<form name="f1" action="member_update.php" onSubmit="return ck1()"
method="post"
enctype="multipart/form-data">
<table border=1>
<input type=hidden name=oldimg value=<?=$img?>>
<tr><td colspan=2 align=center width=400 height=150><img src=./img/<?=$img?>></td></tr>
<tr><td width=100>학번</td><td><input type=text name=sno value="<?=$sno?>"></td></tr>
<tr><td>주소</td><td><input type=text name=addr value="<?=$addr?>"></td></tr>
<tr><td>사진</td><td><input type=file name=img></td></tr>
<tr><td colspan=2 align=center>
<input type=submit value="수정하기">
<input type=button value="삭제하기" onClick="ck2('<?=$sno?>')">
</table>
</form>
</div>
<br>
</section>
<? include "bottom.php"?>
º 두 테이블 조인하기 (테이블 조인)
top.php에
 <a href=join_list.php>테이블조인</a> 추가하고
join_list.php 생성
$SQL = " select e.sno, sname, kor, eng, math, hist , addr, img, " ;
$SQL = $SQL . " kor+eng+math+hist as ssum, " ;
$SQL = $SQL . " round((kor+eng+math+hist)/4,1) as savg from examtbl e left join member m on e.sno=m.sno " ;
공백 이미지
if ($row['img'] == null){
$img= 'space.png';
}else{
$img= $row['img'];
}
<td><img src="./img/<?=$img?>" width=30 height=30></td>
<? include "top.php"?>
<? include "DBconn.php" ?>
<?
$ch1 = $_GET['ch1'];
$ch2 = $_GET['ch2'];
$SQL = " select e.sno, sname, kor, eng, math, hist , addr, img, " ;
$SQL = $SQL . " kor+eng+math+hist as ssum, " ;
$SQL = $SQL . " round((kor+eng+math+hist)/4,1) as savg from examtbl e left join member m on e.sno=m.sno " ;
if( $ch1 == "" ){
$SQL = $SQL . " order by e.sno desc " ;
}else if( $ch1 == "sno"){
$SQL = $SQL . " where e.sno like '%$ch2%' order by e.sno desc " ;
}else if( $ch1 == "sname"){
$SQL = $SQL . " where sname like '%$ch2%' order by e.sno desc " ;
}else if( $ch1 == "kor"){
$SQL = $SQL . " where kor like '%$ch2%' order by e.sno desc " ;
}
$result = $conn -> query($SQL);
?>
<style>
table{
width:500px;
}
td{
text-align:center;
height:25px;
}
</style>
<section>
<br>
<div id="section1">
성적조회목록 <br>
</div>
<br>
<div align=center>
<table border=1>
<tr><td>사진</td>
<td>학번</td> <td>이름</td><td>주소</td>
<td>국어</td>
<td>영어</td> <td>수학</td> <td>역사</td>
<td>합계</td> <td>평균</td> <td>평점</td>
</tr>
<?
$i =0;
$s_kor=0; $s_eng=0; $s_math=0; $s_hist=0;
$s_sum=0; $s_avg=0;
while ($row = $result -> fetch_assoc()) {?>
<?
if ($row['savg']>=90){
$grade = 'A';
}else if ($row['savg']>=80){
$grade = 'B';
}else if($row['savg']>=70){
$grade = 'C';
}else{
$grade = 'F';
}
$i = $i + 1 ;
$s_kor=$s_kor+$row['kor'];
$s_eng=$s_eng+$row['eng'];
$s_math=$s_math+$row['math'];
$s_hist=$s_hist+$row['hist'];
$s_sum=$s_sum+$row['ssum'];
$s_avg=$s_avg+$row['savg'];
if ($row['img'] == null){
$img= 'space.png';
}else{
$img= $row['img'];
}
?>
<tr>
<td><img src="./img/<?=$img?>" width=30 height=30></td>
<td><?=$row['sno']?></td>
<td>
<a href=edit.php?sno=<?=$row['sno']?>&ch1=<?=$ch1?>&ch2=<?=$ch2?>>
<?=$row['sname']?></a></td>
<td><?=$row['addr']?></td>
<td><?=$row['kor']?></td>
<td><?=$row['eng']?></td>
<td><?=$row['math']?></td>
<td><?=$row['hist']?></td>
<td><?=$row['ssum']?></td>
<td><?=$row['savg']?></td>
<td><?=$grade?></td>
</tr>
<?}?>
<tr>
<td> </td>
<td></td> <td></td> <td> 총점 </td>
<td><?=$s_kor?> </td> <td><?=$s_eng?> </td>
<td><?=$s_math?></td> <td><?=$s_hist?> </td>
<td><?=$s_sum?> </td> <td><?=$s_avg?> </td>
<td></td>
</tr>
<tr>
<td> </td>
<td></td> <td></td> <td> 평균 (<?=$i?>명) </td>
<td><?=round($s_kor / $i, 1)?> </td> <td><?=round($s_eng / $i, 1)?> </td>
<td><?=round($s_math / $i, 1)?></td> <td><?=round($s_hist / $i, 1)?> </td>
<td><?=round($s_sum / $i, 1)?> </td> <td><?=round($s_avg / $i, 1)?> </td>
<td></td>
</tr>
</table>
<form>
<select name=ch1>
<option value="sno">학번</option>
<option value="sname">이름</option>
<option value="kor">국어점수</option>
</select>
<input type=text name=ch2>
<input type=submit value="검색하기">
</form>
<br>
</div>
</section>
<? include "bottom.php"?>
º 우편주소 오픈 API
https://postcode.map.daum.net/guide#sample
member.php
<? include "top.php" ?>
<style>
table{
width: 400px ;
height:250px ;
}
.td1{
text-align:center;
}
</style>
<script>
function ck1(){
if (f1.sno.value == "") {
alert("학번을 입력해 주세요");
f1.sno.focus();
return false;
}else{
alert("학생 성적이 입력 되었습니다.");
}
}
</script>
<script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
<script>
//본 예제에서는 도로명 주소 표기 방식에 대한 법령에 따라, 내려오는 데이터를 조합하여 올바른 주소를 구성하는 방법을 설명합니다.
function sample4_execDaumPostcode() {
new daum.Postcode({
oncomplete: function(data) {
// 팝업에서 검색결과 항목을 클릭했을때 실행할 코드를 작성하는 부분.
// 도로명 주소의 노출 규칙에 따라 주소를 표시한다.
// 내려오는 변수가 값이 없는 경우엔 공백('')값을 가지므로, 이를 참고하여 분기 한다.
var roadAddr = data.roadAddress; // 도로명 주소 변수
var extraRoadAddr = ''; // 참고 항목 변수
// 법정동명이 있을 경우 추가한다. (법정리는 제외)
// 법정동의 경우 마지막 문자가 "동/로/가"로 끝난다.
if(data.bname !== '' && /[동|로|가]$/g.test(data.bname)){
extraRoadAddr += data.bname;
}
// 건물명이 있고, 공동주택일 경우 추가한다.
if(data.buildingName !== '' && data.apartment === 'Y'){
extraRoadAddr += (extraRoadAddr !== '' ? ', ' + data.buildingName : data.buildingName);
}
// 표시할 참고항목이 있을 경우, 괄호까지 추가한 최종 문자열을 만든다.
if(extraRoadAddr !== ''){
extraRoadAddr = ' (' + extraRoadAddr + ')';
}
// 우편번호와 주소 정보를 해당 필드에 넣는다.
document.getElementById('sample4_postcode').value = data.zonecode;
document.getElementById("sample4_roadAddress").value = roadAddr;
document.getElementById("sample4_jibunAddress").value = data.jibunAddress;
// 참고항목 문자열이 있을 경우 해당 필드에 넣는다.
if(roadAddr !== ''){
document.getElementById("sample4_extraAddress").value = extraRoadAddr;
} else {
document.getElementById("sample4_extraAddress").value = '';
}
var guideTextBox = document.getElementById("guide");
// 사용자가 '선택 안함'을 클릭한 경우, 예상 주소라는 표시를 해준다.
if(data.autoRoadAddress) {
var expRoadAddr = data.autoRoadAddress + extraRoadAddr;
guideTextBox.innerHTML = '(예상 도로명 주소 : ' + expRoadAddr + ')';
guideTextBox.style.display = 'block';
} else if(data.autoJibunAddress) {
var expJibunAddr = data.autoJibunAddress;
guideTextBox.innerHTML = '(예상 지번 주소 : ' + expJibunAddr + ')';
guideTextBox.style.display = 'block';
} else {
guideTextBox.innerHTML = '';
guideTextBox.style.display = 'none';
}
}
}).open();
}
</script>
<section>
<br><br>
<div id=section1>
학생 정보 입력
</div>
<br>
<div align=center>
<form name=f1 action="member_ok.php" onSubmit="return ck1()"
method="post"
enctype="multipart/form-data">
<table border=1>
<tr><td width=100 class="td1">학번</td><td><input type=text name=sno ></td></tr>
<tr><td class="td1" >주소 </td><td>
<input type="text" name="postcode" id="sample4_postcode" placeholder="우편번호">
<input type="button" onclick="sample4_execDaumPostcode()" value="우편번호 찾기"><br>
<input type="text" name="roadAddress" id="sample4_roadAddress" placeholder="도로명주소">
<input type="hidden" id="sample4_jibunAddress" placeholder="지번주소">
<span id="guide" style="color:#999;display:none"></span>
<input type="text"name="detailAddress" d="sample4_detailAddress" placeholder="상세주소">
<input type="text"name="detailAddress" id="sample4_extraAddress" placeholder="참고항목">
</td></tr>
<tr><td class="td1">사진</td><td align=center><input type=file name=img ></td></tr>
<tr><td colspan=2 align=center><input type=submit value="저 장 하 기" ></td></tr>
</table>
</form>
</div>
</section>
<? include "bottom.php" ?>
member_ok.php
<? include "DBConn.php" ?>
<?
$sno=$_POST['sno'];
$addr=$_POST['postcode'] . ":" . $_POST['roadAddress'] . ":" . $_POST['detailAddress'] . ":" . $_POST['detailAddress'];
$mfile=$_FILES['img']['name']; // 파일명 ( 코난.png )
$tmp=$_FILES['img']['tmp_name'];
if ( $mfile =="" ){
$mfile = 'space.png';
} else {
if (file_exists("./img/$mfile")) {
// 파일의 이름 구하기
$f_fname = basename($mfile,strrchr($mfile,'.'));
// 시간 가져오기 (시분초)
$time = date("His", time());
// 확장자 가져오기
$ext = strrchr($mfile,'.') ;
$mfile = $f_fname."_".$time.$ext ;
move_uploaded_file($tmp, "./img/$mfile");
}else{
move_uploaded_file($tmp, "./img/$mfile");
}
}
$SQL ="insert into member(sno,addr,img) values('$sno','$addr','$mfile')" ;
$conn -> query( $SQL);
?>
<script>
location.href="member_list.php" ;
</script>
º 테이블 조인에서 학번누르면 회원가입 창 뜨고 사진이랑 주소 입력할 수 있게 하기
join_list.php에서
<td>
<a href=member.php?sno=<?=$row['sno']?>>
<?=$row['sno']?>
</a></td>
학번에 링크걸어주고
member.php에
<?
$sno=$_GET['sno'];
?>
.
.
<tr><td width=100 class="td1">학번</td><td><input type=text name=sno value="<?=$sno?>" ></td></tr>
º 회원조회목록에 상위 5개만 띄우기
member_list.php에
$SQL = "select * from member order by sno desc limit 0, 5" ;
º 회원조회목록 옆에 회원수 나타내기 (tc로 별칭 나타내기)
$SQLCount = "select count(*) as tc from member " ;
$resultCount = $conn -> query($SQLCount);
$rowCount = $resultCount ->fetch_assoc();
.
.
.
회원 조회 목록 (<?=$rowCount['tc']?> : 명)
member_list.php
<? include "top.php" ?>
<? include "DBConn.php" ?>
<?
// 상위 7개의 레코드 나타내기
$SQL = "select * from member order by sno desc limit 0, 5" ;
$result = $conn -> query($SQL);
// 회원수 별칭잡아서 나타내기
$SQLCount = "select count(*) as tc from member " ;
$resultCount = $conn -> query($SQLCount);
$rowCount = $resultCount ->fetch_assoc();
?>
<style>
table{
width: 500px ;
}
td{
text-align:center;
height: 25px ;
}
</style>
<section>
<br>
<div id=section1>
회원 조회 목록 (<?=$rowCount['tc']?> : 명)
</div>
<br>
<div align=center>
<table border=1>
<tr> <td>학번</td> <td>주소</td><td>파일명</td><td>사진</td>
</tr>
<?
while( $row = $result ->fetch_assoc() ) {
?>
<tr> <td><?=$row['sno']?></td>
<td>
<a href=member_edit.php?sno=<?=$row['sno']?>>
<?=$row['addr']?>
</a>
</td>
<td><?=$row['img']?> </td>
<td><img src=./img/<?=$row['img']?> width=50 height=50> </td>
</tr>
<? } ?>
</table>
<br>
</div>
</section>
<? include "bottom.php" ?>
'Visual studio (PHP)' 카테고리의 다른 글
HTML --성적조회 프로그램Ver 1.0 (3 , 빅데이터) (0) | 2022.06.22 |
---|---|
HTML --성적조회 프로그램Ver 1.0 (2) 코드정리 (0) | 2022.06.22 |
HTML -- 성적조회 프로그램 Ver1.0 (1) 코드정리 (0) | 2022.06.21 |
HTML -- 성적조회 프로그램 Ver1.0 (1) (0) | 2022.06.20 |
HTML -- 학생 성적처리 ver 11 코드정리 (0) | 2022.06.20 |