기록해! 정리해!

HTML -- 성적조회 프로그램 Ver1.0 (1) 본문

Visual studio (PHP)

HTML -- 성적조회 프로그램 Ver1.0 (1)

zsuling 2022. 6. 20. 09:56

06/20

 

2018년 대상종목 외부평가 가이드_정보처리기능사_V1 (2).PDF
0.86MB

 

º 타이틀 적기

º index.php

1. <html> , <head> ,<body> 

2. <head> , <nav> , <section> , <footer>

3. CSS

4. section에 div , body에 div

5. section에 1,2,3,4 자동으로 찍어보기 <ol> <li>

<html>

<head>
 <title> 정보처리기능사 연습 </title>
 <style>
header{
    background-color:blue;
    height:80px;
    line-height:80px;
    color:#ffffff;
    font-size:28px;
    text-align:center;
}
nav{
    background-color:#00aaff;
    height:30px;
    line-height:30px;
    color:#ffffff;
    font-size:14px;
}
section{
    background-color:#cccccc;
    min-height:650px;
}
footer{
    background-color:#0033ff;
    height: 40px;
    line-height:40px;
    text-align:center;
    font-size: 17px;
    color:#ffffff;
}
#section1{
    text-align:center;
    font-size:25px;
}
#body{
    width:80%;
    margin:auto;
}
 </style>
</head>
<body> 
  <div id="body">
<header> (과정평가형 정보처리기능사)성적조회 프로그램 Ver1.0 </header>
<nav> 
  &emsp;&emsp;성적입력
  &emsp;성적조회 
  &emsp;홈으로 
</nav>
<section>
    <br>
     <div id="section1">
      고등학교 성적 조회 프로그램 <br>
     </div>
    <br>
    &emsp;<b>고등학교 성적을 조회하는 프로그램을 작성한다.</b> 
    
    <ol>
        <li>  학생 성적 정보 테이블을 생성한다. <br>
        <li>  학생 성적 테이블에 샘플데이터를 SQL문을 이용하여 추가한다. <br>
        <li>  주어진 화면 디자인을 이용하여 화면을 디자인한다. <br>
        <li>  업무 여건에 따라 프로그램을 작성한다. <br>
    </ol>    
</section>
<footer>
HRDKOREA Copyrightⓒ2018 ALL rights reserved. Human Resources Development Services of Korea
</footer>
  </div>
</body>
</html>

º include해서 top.php, bottom.php 만들어주기

html~nav 까지 top.php  -- <? include "top.php" ?>
footer~html 까지 bottom.php -- <? include "bottom.php" ?>

 

º form.php, list.php 만들기

index.php에서 복사 붙여넣고 맞게 수정해주고

top.php에서 nav 링크 걸어준다

 

<nav> 
  &emsp;&emsp;<a href=form.php>성적입력</a>
  &emsp;<a href=list.php>성적조회</a> 
  &emsp;<a href=index.php>홈으로</a> 
</nav>

 

º form.php

1. 우선 <form>을 만들어주고 

2. 기본적으로 action , method 를 적어준다.

   (자바스크립트도 쓸꺼면 form name, onSubmit, return 값의 이름을 적어준다)

3. 넣어야할 컬럼명과 input type을 작성

4. 테이블 형성

5. div 잡고 가운데 정렬

6. css 해서 스타일 맞춰주기

7. 자바스크립트 만들기

    (alert에 아무글자 넣어서 확인해보고

     return false; 해서 안넘어가게하고

     if 작성하고 else 쓰고

     focus 넣기)

<? include "top.php"?>
<style>
    table{
        width:350px;
        height: 300px;
    }
    td{
        text-align:center;
    }
</style>

    <script>
     function ck1(){
      if(f1.sno.value == ""){
        alert("학번을 입력해 주세요");
        f1.sno.focus();
        return false;
        }else{
        alert("학생 성적이 입력 되었습니다.");
        }
    }
    </script>

<section>
    <br><br>
     <div id="section1">
      학생 성적 입력 <br>
     </div>
    <br>
<div align=center>
     <form name=f1 action=form_ok.php onSubmit="return ck1()" method=get>
      <table border=1>
      <tr><td>학 번</td> <td><input type=text name=sno></td></tr>
      <tr><td>이 름</td> <td><input type=text name=sname></td></tr>
      <tr><td>국 어</td> <td><input type=text name=kor></td></tr>
      <tr><td>영 어</td> <td><input type=text name=eng></td></tr>
      <tr><td>수 학</td> <td><input type=text name=math></td></tr>
      <tr><td>역 사</td> <td><input type=text name=hist></td></tr>
      <tr><td colspan=2 align=center><input type=submit value="성적저장"> </td></tr>
      </table>
     </form>
</div>
</section>
<? include "bottom.php"?>

 

º form_ok.php

1. 아무글자나 써서 넘어가는지 확인해주고

2. $ 부터 적기

3. 데이터베이스 커넥션하기

    ( 위에 $conn = new mysqli("localhost","root","autoset","korea"); 해서 연결하고

      밑에 SQL 쿼리문 작성하고

      실행시키기 $conn -> query($SQL); 

4. 자바스크립트로 list.php로 넘기기  location.href="list.php" ;

5. 데이터베이스 커넥션을 DBconn.php로 만들어주기 <? include "DBconn.php" ?>

<? include "DBconn.php" ?>

<?
$sno = $_GET['sno'];
$sname = $_GET['sname'];
$kor = $_GET['kor'];
$eng = $_GET['eng'];
$math = $_GET['math'];
$hist = $_GET['hist'];

$SQL = "insert into examtbl (sno, sname, kor, eng, math, hist) " ;
$SQL = $SQL . " values ('$sno', '$sname, '$kor', '$eng', '$math', '$hist') " ;

$conn -> query($SQL); 
?>

<script>
  location.href="list.php" ;
</script>

º DBconn.php

<?
$conn = new mysqli("localhost","root","autoset","korea");
?>

 

º list.php

1. DBconn.php 

2. SQL 쿼리문 작성

3. 쿼리문 실행 $result = $conn -> query($SQL);

4. 테이블 만들고 div 잡아서 가운데 정렬하기

5. 그 안에 while문 만들기

  * 합계, 평균을 쿼리문 안에 넣어서 표현해보기

    $SQL = "select sno, sname, kor, eng, math, hist , kor+eng+math+hist as ssum, (kor+eng+math+hist)/4 as savg " ;

    <td>합계</td> <td>평균</td>

    <td><?=$row['ssum']?></td><td><?=$row['savg']?></td></tr>

     -- ssum, savg 같은 경우는 함수 명령어와 겹칠 수 있으므로 s를 하나 더 붙혀서 헷갈리지 않게 해줬다

6. CSS 

7. search(검색창) 만들기

   ( select로 잡고 option 넣고 그 바깥에 창 만들고 앞에 한 거 다 form 으로 잡아줌

      form 했으니까 action 해줘야함 안그러면 자기자신으로 간다 )

 

<form>
<select name= ch1>
    <option value="sno"> 학번 </option> --컬럼명
    <option value="sname"> 이름 </option>
</select>
 <input type=text name=ch2>
 <input type=submit value="검색하기">
</form>

8. if문 써서 쿼리 연결해주기

  <?
$ch1 = "" ; $ch2 ="" ;   --초기값
$ch1 = $_GET['ch1'];
$ch2 = $_GET['ch2'];

if( $ch1 == "")--null을 줘서 원본 성적조회 테이블
    $SQL = " select sno, sname, kor, eng, math, hist , " ;
    $SQL = $SQL . " kor+eng+math+hist as ssum, " ;
    $SQL = $SQL . " round((kor+eng+math+hist)/4,1) as savg " ;
    $SQL = $SQL . " from examtbl order by sno desc " ;
    $result = $conn -> query($SQL);
}else if( $ch1 == "sno"){  --학번을 검색했을 때 나올 테이블
    $SQL = " select sno, sname, kor, eng, math, hist , " ;
    $SQL = $SQL . " kor+eng+math+hist as ssum, " ;
    $SQL = $SQL . " round((kor+eng+math+hist)/4,1) as savg " ;
    $SQL = $SQL . " from examtbl where sno like '%$ch2%' order by sno desc " ;
    //echo $SQL ;
    $result = $conn -> query($SQL);
}else if( $ch1 == "sname"){ --이름을 검색했을 때 나올 테이블
    $SQL = " select sno, sname, kor, eng, math, hist , " ;
    $SQL = $SQL . " kor+eng+math+hist as ssum, " ;
    $SQL = $SQL . " round((kor+eng+math+hist)/4,1) as savg " ;
    $SQL = $SQL . " from examtbl where sname like '%$ch2%' order by sno desc " ;
    //echo $SQL ;
    $result = $conn -> query($SQL);
}
?>

 

* 에러 날때

이렇게 바꾸고 아파치데몬 리스타트해줘야함

오토셋 제어 - 웹서버 재시

* 국어점수도 추가하기

<? include "top.php"?>
<? include "DBconn.php" ?>
<?

$ch1 = $_GET['ch1'];
$ch2 = $_GET['ch2'];

$SQL = " select sno, sname, kor, eng, math, hist , " ;
$SQL = $SQL . " kor+eng+math+hist as ssum, " ;
$SQL = $SQL . " round((kor+eng+math+hist)/4,1) as savg from examtbl " ;

if( $ch1 == "" ){
    $SQL = $SQL . " order by sno desc " ;
    
}else if( $ch1 == "sno"){
    $SQL = $SQL . " where sno like '%$ch2%' order by sno desc " ;
    
}else if( $ch1 == "sname"){
    $SQL = $SQL . " where sname like '%$ch2%' order by sno desc " ;
    
}else if( $ch1 == "kor"){
    $SQL = $SQL . " where kor like '%$ch2%' order by 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> </tr>

<? while ($row = $result -> fetch_assoc()) {?>

    <tr><td><?=$row['sno']?></td> <td><?=$row['sname']?></td> <td><?=$row['kor']?></td> 
    <td><?=$row['eng']?></td> <td><?=$row['math']?></td> <td><?=$row['hist']?>
    <td><?=$row['ssum']?></td><td><?=$row['savg']?></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>
</div>
</section>
<? include "bottom.php"?>
 

* 평점 추가하기

<? 
    if ($row['savg']>=90){ --위에 미리 잡아놓은 값
        $grade = 'A';
    }else if ($row['savg']>=80){
        $grade = 'B';
    }else if($row['savg']>=70){
        $grade = 'C';
    }else{
        $grade = 'F';
    }
    ?>

.

.

.

    <td><?=$grade?></td>

* 총점, 총평균 추가하기

 

<? 
 $i =0;
 $s_kor=0;  $s_eng=0;  $s_math=0;  $s_hist=0;
 $s_sum=0;  $s_avg=0; 

.

.

.

$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'];
?>

.

.

.

<tr>
     <td> &nbsp;  </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> &nbsp;  </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>    


º 이름에 링크걸기

<td><a href=edit.php?sno=<?=$row['sno']?>

        <?=$row['sname']?></a></td>

 

º edit.php 

form.php 를 가져와서 

     <div id="section1">
      학생 성적 수정하기 <br>
     </div>

.

.

action=update_ok.php

<tr><td colspan=2 align=center><input type=submit value="수정하기"> </td></tr>

 

º 학번 검색창에 3 검색하고 그 중 하나 수정했을 때 그대로 3 검색한 화면뜨게 하기

 

<? include "top.php" ?>
<? include "DBConn.php" ?>
<? 
  $sno=$_GET['sno'];
  $ch1=$_GET['ch1'];
  $ch2=$_GET['ch2'];

  $SQL = " select *  from examtbl where sno=$sno "; 
  $result = $conn -> query($SQL);
  $row = $result ->fetch_assoc();

?>


<style>
 table{
   width: 350px ;
   height:300px ; 
 } 

 td{
   text-align:center; 
 }
</style>

<script>
  function ck1(){
    if (f1.sno.value == "") {
      alert("학번을 입력해 주세요");
      f1.sno.focus();
      return false;
    }else{
        alert("학생 성적이 입력 되었습니다.");  
    }
  }

  function ck2(sno, ch1, ch2){

    location.href="delete.php?sno="+sno+"&ch1="+ch1+"&ch2="+ch2;
     
  }

</script>    

<section> 
<br><br>
<div id=section1>   
 학생성적수정하기
</div>
<br>
<div align=center>
<form name=f1 action=update_ok.php onSubmit="return  ck1()"  method=get >
<input  type=hidden  name=ch1 value="<?=$ch1?>" >
<input  type=hidden  name=ch2 value="<?=$ch2?>" >
<table border=1>
<tr><td>학 번</td><td><input  type=text  name=sno value="<?=$row['sno']?>" > </td></tr>
<tr><td>이 름</td><td>  <input  type=text  name=sname  value="<?=$row['sname']?>" ></td></tr>
<tr><td>국 어</td><td>  <input  type=text  name=kor  value="<?=$row['kor']?>" ></td></tr>
<tr><td>영 어</td><td>  <input  type=text  name=eng  value="<?=$row['eng']?>" ></td></tr>
<tr><td>수 학</td><td>  <input  type=text  name=math  value="<?=$row['math']?>" ></td></tr>
<tr><td>역 사</td><td>  <input  type=text  name=hist  value="<?=$row['hist']?>" ></td></tr>
<tr><td colspan=2 align=center><input  type=submit  value="수정하기" >
    <input  type=button  value="삭제하기" onClick="ck2('<?=$sno?>','<?=$ch1?>','<?=$ch2?>')" >
    </td></tr>
</table>
</form>
 
</div>                   
</section>

<? include "bottom.php" ?>

 

º update_ok.php

<? include "DBconn.php" ?>

<?

$ch1 = $_GET['ch1'];
$ch2 = $_GET['ch2'];

$sno = $_GET['sno'];
$sname = $_GET['sname'];
$kor = $_GET['kor'];
$eng = $_GET['eng'];
$math = $_GET['math'];
$hist = $_GET['hist'];

$SQL = "update examtbl set sno='$sno',
        kor='$kor', eng='$eng', 
        math='$math', hist='$hist' " ;
$SQL = $SQL . "where sno='$sno'" ;

$conn -> query($SQL); 
?>

<script>
  location.href="list.php?&ch1=<?=$ch1?>&ch2=<?=$ch2?>" ;
</script>

 

º 삭제버튼만들기

  php에서 자바스크립트로 넘어가는 건 할 수 있는데

  자바스크립트에서 번역한 것을 서버값으로 받을 수는 없다

  edit.php에서

   <input type=button value="삭제하기" onClick="ck2(<?=$sno?>)" 하고

 

  function ck2(sno){
        alert("학번:" + sno );
    }

 

 

º  delete.php

 

<? include "DBConn.php" ?>
<?
  $sno = $_GET['sno'];
  $ch1 = $_GET['ch1'];
  $ch2 = $_GET['ch2'];

$SQL ="delete from examtbl  where sno ='$sno' " ;
$conn -> query($SQL);
?>
<script>
 location.href="list.php?ch1=<?=$ch1?>&ch2=<?=$ch2?>" ;
</script>

º 자료실

 

*오토셋에 

http://127.0.0.1/phpmyadmin/index.php

 

Create table member(
sno varchar(10) not null  primary key ,
img varchar(20),
addr varchar(40)
);

추가하기

 

method=post
enctype="multipart/form-data"

필수 !!

 

º member.php

form.php복붙

<? include "top.php"?>
<style>
    table{
        width:350px;
        height: 300px;
    }
    td{
        text-align:center;
    }
</style>

    <script>
     function ck1(){
      if(f1.sno.value == ""){
        alert("학번을 입력해 주세요");
        f1.sno.focus();
        return false;
        }else{
        alert("학생 성적이 입력 되었습니다.");
        }
    }
    </script>

<section>
    <br><br>
     <div id="section1">
      학생 정보 입력 <br>
     </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>학 번</td> <td><input type=text name=sno></td></tr>
      <tr><td>주 소</td> <td><input type=text name=addr></td></tr>
      <tr><td>사 진</td> <td><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

form_ok.php복붙

<? include "DBconn.php" ?>

<?
$sno = $_REQUEST['sno'];
$addr = $_REQUEST['addr'];
$mfile = $_FILES['img']['name'];
$tmp = $_FILES['img']['tmp_name'];

move_uploaded_file($tmp, "./img/$mfile");



$SQL = "insert into member (sno, addr, img) " ;
$SQL = $SQL . " values ('$sno', '$addr, '$mfile') " ;

$conn -> query($SQL); 
?>

<script>
  location.href="list.php" ;
</script>

 

young이 들어온 것을 확인할 수 있음

 

º member_ok.php

덮어씌기 말고 새파일로..

<? include "DBconn.php" ?>

<?
$sno = $_REQUEST['sno'];
$addr = $_REQUEST['addr'];
$mfile = $_FILES['img']['name'];
$tmp = $_FILES['img']['tmp_name'];

if($mfile ==""){
    $mfile='space.jpg';
}else {
    if(file_exists("./img/$mfile")) {
    $f_fname = basename($mfile, strrchr($mfile, "."));
    $randomNum = date("His",time());
    $fileinfo = pathinfo($mfile);
    $ext = $fileinfo['extension'];
    $mfile = $f_fname."_".$randomNum.".".$ext;
    move_uploaded_file($tmp, "./img/$mfile");
}else{
    move_uploaded_file($tmp, "./img/$mfile");
}

}


$SQL = "insert into member (sno, addr, img) " ;
$SQL = $SQL . " values ('$sno', '$addr, '$mfile') " ;

$conn -> query($SQL); 
?>

<script>
  location.href="list.php" ;
</script>

원래는 덮어씌워지는데 똑같이 cat을 넣으니까 5시48분40초에 새파일로 들어옴

 

º member_list.php

<? include "top.php" ?>
<? include "DBConn.php" ?>
<?
 
 $SQL = "select * from  member " ; 
 $result = $conn -> query($SQL);

?>

<style>
 table{
   width: 500px ;
 } 

 td{
   text-align:center; 
   height: 25px ;
 }
</style>
<section> 
<br>
<div id=section1>   
 성적조회목록
</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><?=$row['addr']?></td>
     <td><?=$row['img']?> </td>     
     <td><img src=./img/<?=$row['img']?> width=50 height=50> </td>
</tr>
<? }  ?>

</table>

</div>                   
</section>

<? include "bottom.php" ?>

 

Comments