21일차_PHP

서창민·2023년 4월 10일
0

HTML

목록 보기
13/18
post-thumbnail

23.04.10 월 21일차

학생 성적 조회 프로그램

  • 성적입력

성적을 입력하는 프로그램의 성적 입력 폼 작성
스크립트를 활용하여 미기입된 입력칸 존재시 알림 발생시키는 것이 핵심

<section>
<br/>
<div align=center id=sectionTitle> <b>고등학교 성적 입력 프로그램</b></div><br/>
<div id=sectionDiv align=center>
<br/>

 // 테이블 값 입력 후 submit 동작
<form name=f1 action=/0410/form_ok0410.php onSubmit="return formCK()">
<table border=1 width=300 height=300>
    <tr>
        <td width=80>학번</td>
        <td><input type=text name=sNo>
        </td>    
    </tr>       
    <tr>
        <td>성명</td>
        <td><input type=text name=sName>
        </td>    
    </tr>       
    <tr>
        <td>국어</td>
        <td class=num1>&emsp;
        <input type=number min=0 max=100 name=kor>
        </td>    
    </tr>       
    <tr>
        <td>영어</td>
        <td class=num1>&emsp;
        <input type=number min=0 max=100 name=eng>
        </td>    
    </tr>       
    <tr>
        <td>수학</td>
        <td class=num1>&emsp;
        <input type=number min=0 max=100 name=math>
        </td>    
    </tr>       
    <tr>
        <td>역사</td>
        <td class=num1>&emsp;
        <input type=number min=0 max=100 name=hist>
        </td>    
    </tr>        

    <tr>
        <td colspan=2 align=center><input type=submit value="성적저장"></td>    
    </tr> 
</table>
</form>
</div>
<br/>

// 자바스크립트로 학번, 이름 미입력 시 알림 발생 
<script>
    function formCK(){
        if (f1.sNo.value==""){
            alert("학번을 입력해주세요")
            return false;
            } else if (f1.sName.value==""){
                    alert("이름을 입력해주세요")
                    return false;
                    }else{
                        alert("성적입력이 완료 되었습니다.!!")
                        f1.submit();
                        }
                    }
</script>

</section>
  • 학번 자동 증가입력(기존 학번 최대 값의 + 1)

학번 입력칸에 학번이 자동으로 입력되도록 만들기
쿼리문을 활용해서 input 태그에 값을 넣어주는것이 핵심

<?php
// 서버 불러오기
$servername = "localhost";
$username = "root";
$password = "autoset";
$dbname = "ppk";
$conn = new mysqli($servername, $username, $password, $dbname);

// 학번 최대값 + 1 쿼리문 작성 
$sql_i = "select max(sNo)+1 m_s from examtbl";
$result_i = $conn -> query($sql_i);
$row_i = $result_i -> fetch_assoc();
?>

// 테이블 값 출력
<table border=1 width=300 height=300>
    <tr>
        <td width=80>학번</td><td><input type=text name=sNo value=<?=$row_i['m_s']?>></td>    
    </tr>      
</table>

  • 리스트 이름에 링크 부여
// 학번을 기준으로 이름에 링크 부여
    <tr>
        <td><a href=/0410/edit0410.php?sNo=<?=$row['sNo']?>>
        <?=$row['sName']?></a></td>
    </tr>

  • 수정 화면
// 서버
$servername = "localhost";
$username = "root";
$password = "autoset";
$dbname = "ppk";
$conn = new mysqli($servername, $username, $password, $dbname);

// 서버 값 불러오기
$sNo = $_REQUEST['sNo'];

// 목록 값 확인 쿼리문
$SQL = "select * from examtbl where sNo = $sNo";
$result = $conn -> query($SQL);
$row = $result -> fetch_assoc();

<form name=f1 action=/0410/update_ok0410.php onSubmit="return formCK()">

<table border=1 width=300 height=300>
    <tr>
        <td width=80>학번</td>
        <td>
            <input type=text name=sNo value=<?=$row['sNo']?> readonly>
        </td>    
    </tr>       
    <tr>
        <td>성명</td>
        <td>
            <input type=text name=sName value=<?=$row['sName']?> readonly>
        </td>    
    </tr>       
    <tr>
        <td>국어</td>
        <td class=num1>&emsp;
            <input type=number min=0 max=100 name=kor value=<?=$row['kor']?>>
        </td>    
    </tr>       
    <tr>
        <td>영어</td>
        <td class=num1>&emsp;
            <input type=number min=0 max=100 name=eng value=<?=$row['eng']?>>
        </td>    
    </tr>       
    <tr>
        <td>수학</td>
        <td class=num1>&emsp;
            <input type=number min=0 max=100 name=math value=<?=$row['math']?>>
        </td>    
    </tr>       
    <tr>
        <td>역사</td>
        <td class=num1>&emsp;
            <input type=number min=0 max=100 name=hist value=<?=$row['hist']?>>
        </td>    
    </tr>        

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

  • 수정 동작
<?
// 서버
$servername = "localhost";
$username = "root";
$password = "autoset";
$dbname = "ppk";
$conn = new mysqli($servername, $username, $password, $dbname);

// 값 불러오기
$sNo = $_REQUEST['sNo'];
$sName = $_REQUEST['sName'];
$kor = $_REQUEST['kor'];
$eng = $_REQUEST['eng'];
$math = $_REQUEST['math'];
$hist = $_REQUEST['hist'];

$SQL = "update examtbl 
        set kor=$kor, eng=$eng, math=$math, hist=$hist
         where sNo='$sNo'";
    // 값 확인 쿼리문 테스트
    // echo $SQL;        
$conn -> query($SQL);
header('Location:/0406/list0406.php'); 
?>
  • 삭제하기 버튼
// 버튼 만들기
<table>
    <tr>
        <td colspan=2 align=center>
            <input type=submit value="성적수정">
            <input type=button onClick="delK()" value="삭제하기">
        </td>    
    </tr>
</table>

// 버튼 동작 스크립트
<script>
    function delK(){
        alert('<?=$row['sNo']?> 삭제하기'); // 학번과 삭제하기 알림창
        // 삭제 동작되는 파일로 이동
        location.href="/0410/delete0410.php?sNo="+<?=$row['sNo']?>; 
    }
</script>

  • 파일 삭제
-- 삭제 파일
<?
// 서버
$servername = "localhost";
$username = "root";
$password = "autoset";
$dbname = "ppk";
$conn = new mysqli($servername, $username, $password, $dbname);

$sNo = $_REQUEST['sNo'];
// 동작확인
echo $sNo. "<br>";
// 삭제 쿼리문
$SQL = "delete from examtbl where sNo='$sNo' ";
$conn -> query($SQL);
// 동작 확인
echo $sNo;
// 동작시 해당 파일 화면으로 이동
header('Location:/0406/list0406.php');
?>
  • 목록보기 버튼
<table>
        <tr>
             <td colspan=2 align=center>
 	     <input type=button onClick="script:location.href='/0406/list0406.php'" value="목록보기">
             </td>    
        </tr>             
</table> 

  • 느낀점

스크립트를 활용하는 부분이 아직은 많이 미숙하다.
쿼리문을 작성해서 버튼 동작하는 방법이 재밌었다.
리스트를 추가, 수정, 삭제 하는 방법에 조금 익숙해진것 같다.
오류 발생부분을 다시금 작성해보며 오류발생을 줄이도록 해야겠다.

profile
Back-end Developer Preparation Students

0개의 댓글