개발 꿀팁/PHP

PHP+MySQL 데이터베이스 첨삭개조, 학생정보관리시스템

Jammie 2022. 6. 28. 14:50
반응형

PHP+MySQL 데이터베이스 첨삭 변경 확인
학생 정보 관리 시스템을 통해 PHP+MySQL 첨삭 개량 조사를 숙지하고 학생 정보 관리 시스템을 소개했다.
이 프로젝트의 운영 환경: Apache 2.4.41 PHP 7.3.8
데모 보기
주소 1:http://student.lgcweb.cn/ 

대체 주소:http://39.105.0.128/PHP/php_mysql_student/

항목 주소:https://pan.baidu.com/s/1OQDBoRqOBMH7gBdUF_lcBQ

MySQL 데이터베이스 생성
창고문
#데이터베이스 만들기
CREATE DATABASE `studb`;
# 데이터베이스 사용
USE `studb`; 
#데이터시트 만들기
CREATE TABLE `student` (

  `id` int(10) NOT NULL AUTO_INCREMENT,

  `name` varchar(32) DEFAULT NULL COMMENT '이름',

  `sex` char(2) DEFAULT NULL COMMENT '성별',

  `age` varchar(6) DEFAULT NULL COMMENT '연령',

  `edu` varchar(12) DEFAULT NULL COMMENT '학력',

  `salary` decimal(10,2) DEFAULT NULL COMMENT '월급',

  `bonus` decimal(10,2) DEFAULT NULL COMMENT '보너스',

  `city` varchar(32) DEFAULT NULL COMMENT '본적',

  PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;
#테스트 데이터 삽입
INSERT INTO `student` VALUES ('1', '테스트1', '테스트', '22', '전문대학', '4500.00', '1000.00', '광동 사오관');

INSERT INTO `student` VALUES ('2', '테스트2', '여자', '20', '테스트', '5000.00', '500.00', '후난성 창사');

INSERT INTO `student` VALUES ('3', '선단1', '여자', '22', '전문대학.', '5000.00', '700.00', '후난 성 천저우');

INSERT INTO `student` VALUES ('4', '선단2', '여자', '25', '본과', '8000.00', '200.00', '호남루저');

INSERT INTO `student` VALUES ('5', '后台', '남자', '22', '전문대', '7000.00', '200.00', '후난 성 천저우');
학생 목록 데이터베이스 만들기:

1. 데이터베이스를 조회하다.

1.1. 파일 만들기conn.php, 상수 저장

<?php

// 데이터베이스 연결, 문자 집합 설정
$link = mysqli_connect('localhost', 'root', 'root', 'studb');

mysqli_set_charset($link, 'utf8');

?>
1.2. 엔트리 파일 생성 index.html(데이터베이스 연결, 데이터 조회)

<?php

//데이터베이스 연결

include 'conn.php';

 //쿼리 sql 문장 만들기

$sql = 'SELECT * FROM `student`';

//쿼리 작업, 처리 결과 세트 실행

$result = mysqli_query($link, $sql);

if (!$result) {

    exit('쿼리 sql 문 실행이 실패했습니다.오류 메시지:'.mysqli_error($link));  // 오류 정보 가져오기
}
$data = mysqli_fetch_all($result, MYSQLI_ASSOC);

//쿼리 수 sql 문장 작성

$sql = 'SELECT COUNT(*) FROM `student`';

//쿼리 작업, 처리 결과 세트 실행

$n = mysqli_query($link, $sql);

if (!$n) {exit('조회수 sql문 실행이 실패했습니다.오류 메시지:'.mysqli_error($link));  //오류 정보 가져오기}

$num = mysqli_fetch_assoc($n);

//1차원 배열의 값을 문자열로 변환하기
$num = implode($num);
?>
<html>

<head>

 <meta charset="UTF-8">

 <title>학생정보관리시스템</title>

</head>

<style type="text/css">

.wrapper {width: 1000px;margin: 20px auto;}

h1 {text-align: center;}

.add {margin-bottom: 20px;}

.add a {text-decoration: none;color: #fff;background-color: #00CCFF;padding: 6px;border-radius: 5px;}

td {text-align: center;}

</style>

<body background="student.jpg">

    <div class="wrapper">

       <h1>학생정보관리시스템</h1>

       <div class="add">

           <a href="addStudent.html">添加学生</a>&nbsp;&nbsp;&nbsp;共<?php echo $num; ?>个学生

       </div>

       <table width="960" border="1">

           <tr>
     <th>번호</th>

              <th>姓名</th>

              <th>성별</th>

              <th>연령</th>

              <th>학력</th>

              <th>월급</th>

              <th>보너스</th>

              <th>본적</th>

              <th>조작하다</th>

           </tr>

           <?php

              foreach ($data as $key => $value) {

                 foreach ($value as $k => $v) {

                     $arr[$k] = $v;

                  }

              echo "<tr>";

              echo "<td>{$arr['id']}</td>";

              echo "<td>{$arr['name']}</td>";

              echo "<td>{$arr['sex']}</td>";

              echo "<td>{$arr['age']}</td>";

              echo "<td>{$arr['edu']}</td>";

              echo "<td>{$arr['salary']}</td>";

              echo "<td>{$arr['bonus']}</td>";

              echo "<td>{$arr['city']}</td>";

              echo "<td>

                <a href='javascript:del({$arr['id']})'>삭제하다</a>

                <a href='editStudent.php?id={$arr['id']}'>고치다</a>

               </td>";

              echo "</tr>";

              // echo "<pre>";

              // print_r($arr);

              // echo "</pre>";

                  }

              // 연결 닫기

              mysqli_close($link);

                ?>

       </table>  

    </div>

      <script type="text/javascript">

       function del (id) {

         if (confirm("이 학생을 삭제하시겠습니까?")){

           window.location = "action_del.php?id="+id;

         }

       }

    </script>

 </body>

</html>

  1.2. 이미지 student.jpg(배경사진) 만들기

화면:

2. 학생 추가

2.1 파일 생성addStudent.htmt
<!doctype html>

<html>

  <head>

    <meta charset="UTF-8">

    <title>학생정보관리시스템</title>

   <style type="text/css">

    .box {display:table;margin:0 auto;}

    h2 {text-align: center;}

    .add {margin-bottom: 20px;}

</style>

  </head>

  <body background="student.jpg">

    <!--커스텀 폼 출력-->

    <div class="box">

            <h2>학생 추가</h2>

      <div class="add">

        <form action="action_addStudent.php" method="post" enctype="multipart/form-data">

          <table border="1">

          <tr><th>이 름:</th><td><input  type="text"  name="name"  size="25"  value=""></td></tr>

          <tr><th>성 별:</th><td>

              <label><input checked  type="radio"  name="sex"  value="남자">남자</label>

              <label><input   type="radio"  name="sex"  value="여자">여자</label>

          </td></tr>

          <tr><th>연령:</th><td><input  type="text"  name="age"  size="25"  value=""></td></tr>

          <tr><th>학력:</th><td>

              <select  name="edu" >

                  <option selected value="">--선택해 주세요--</option>

                  <option  value="대학원생">대학원생</option>

                  <option  value="본과">본과</option>

                  <option  value="전문대">전문대</option>

                  <option  value="고등 학교">고등 학교</option>

                  <option  value="중학교">중학교</option>

              </select>

          </td></tr>

          <tr><th>월급:</th><td><input  type="text"  name="salary"  size="25"  value=""></td></tr>

          <tr><th>장려금:</th><td><input  type="text"  name="bonus"  size="25"  value=""></td></tr>

          <tr><th>본적:</th><td><input  type="text"  name="city"  size="25"  value=""></td></tr>

          <tr><th></th><td>

                <input  type="button"  onClick="javascript :history.back(-1);"  value="되돌아가다" >&nbsp;&nbsp;&nbsp;

                <input  type="reset"  value="초기화.">&nbsp;&nbsp;&nbsp;

                <input  type="submit"  value="제출하다.">&nbsp;&nbsp;&nbsp;

          </td></tr>

          </table>       

        </form>

      </div>

    </div>

  </body>

</html>
화면:

직접 제출하는 경우, 어떠한 데이터도 제출하지 않습니다

3초 후 첫 페이지로 돌아가기:

2.2 추가 뉴스를 처리하기 위한 서비스 파일 만들기action_addStudent.php
<?php

//데이터베이스 연결

include 'conn.php';

 

// 늘어난 학생 정보를 얻다

$name = $_POST['name'];

$sex = $_POST['sex'];

$age = $_POST['age'];

$edu = $_POST['edu'];

$salary = $_POST['salary'];

$bonus = $_POST['bonus'];

$city = $_POST['city'];

 

        //사전 처리된 sql 문장 만들기

        $sql = "INSERT INTO `student` VALUES(NULL, ?, ?, ?, ?, ?, ?, ?)";

        //사전 처리 SQL 템플릿

        $stmt = mysqli_prepare($link, $sql);

        // 인수가 바인딩되고 이미 바인딩된 변수에 값을 할당합니다.

        mysqli_stmt_bind_param($stmt, 'sssssss', $name, $sex, $age, $edu, $salary, $bonus, $city);

       

 

        if ($name) {

               // 전처리 실행(1차 실행)

               $result = mysqli_stmt_execute($stmt);

               //연결 닫기

               mysqli_close($link);

 

               if ($result) {

               //학생 추가 성공

                       //첫 페이지로 이동

                       header("Location:index.php");

               }else{

                       exit('학생 sql문 추가에 실패했습니다.오류 메시지:' . mysqli_error($link));

               }

        }else{

               //학생 추가 실패

               //힌트 출력, 첫 페이지로 이동

               echo "학생 추가 실패!<br><br>";

               header('Refresh: 3; url=index.php');  //3s 뒤돌기
  }
 
3. 학생 정보를 삭제하고 있다.

삭제 단추를 클릭하면 되네요.서비스를 진행한 적이 없다 삭제 파일 처리 끝. action_del.php
<?php

//데이터베이스 연결

include 'conn.php';

 

$id = $_GET['id'];

//지정 데이터를 삭제하고 있다.

//sql 문장 삭제하기

$sql = "DELETE FROM student WHERE id={$id}";

//쿼리 작업, 처리 결과 세트 실행

$result = mysqli_query($link, $sql);

if (!$result) {

    exit('쿼리 데이터 sql문 실행이 실패했습니다.오류 메시지:'.mysqli_error($link));  // 오류 정보 가져오기

}

 

// 메인 화면을 삭제하고 있다. 다 넘어가는데

header("Location:index.php"); 
화면:

js 팝업 메시지:
4. 학생정보 수정

4.1 수정버튼 클릭, 파일 editStudent.php로 이동 수정 처리
<?php

//데이터베이스 연결

include 'conn.php';

 

//획득id

$id = $_GET['id'];

//쿼리 sql 문장 만들기

$sql = "SELECT * FROM `student` WHERE `id`=$id";

//쿼리 작업, 처리 결과 세트 실행
$result = mysqli_query($link, $sql);

if (!$result) {

    exit('쿼리 sql 문 실행이 실패했습니다.오류 메시지:'.mysqli_error($link));  // 잘못된 정보를 얻고 있습니다.

}

$data = mysqli_fetch_all($result, MYSQLI_ASSOC);

 

//2차원 배열에서 1차원 배열로 변환

foreach ($data as $key => $value) {

  foreach ($value as $k => $v) {

    $arr[$k]=$v;

  }

}

 

// echo "<pre>";

// var_dump($arr);

// echo "</pre>";

 

?>

 

<html>

  <head>

    <meta charset="UTF-8">

    <title>학생 정보 관리 시스템.</title>

   <style type="text/css">

    .box {display:table;margin:0 auto;}

    h2 {text-align: center;}

    .add {margin-bottom: 20px;}

</style>

  </head>

  <body background="student.jpg">

    <!--커스텀 폼 출력-->

    <div class="box">

            <h2>학생 정보 수정</h2>

      <div class="add">

        <form action="action_editStudent.php" method="post" enctype="multipart/form-data">

          <table border="1">

          <tr><th>번호:</th><td><input  type="text"  name="id"  size="5"  value="<?php echo $arr["id"] ?>" readonly="readonly"></td></tr>

          <tr><th>이름:</th><td><input  type="text"  name="name"  size="25"  value="<?php echo $arr["name"] ?>"></td></tr>

          <tr><th>성별:</th><td>

              <label><input <?php if ($arr["sex"] == "남자") {

                echo "checked";

              } ?>  type="radio"  name="sex"  value="남자">남자</label>

              <label><input  <?php if ($arr["sex"] == "여자") {

                echo "checked";

              } ?>  type="radio"  name="sex"  value="여자">여자</label>

          </td></tr>

          <tr><th>연령:</th><td><input  type="text"  name="age"  size="25"  value="<?php echo $arr["age"] ?>"></td></tr>

          <tr><th>학력:</th><td>

              <select  name="edu" >

                  <option <?php if (!$arr["edu"]) {

                echo "selected";

              } ?> value="">--선택해 주세요--</option>

                  <option  <?php if ($arr["edu"] == "대학원생") {

                echo "selected";

              } ?>  value="대학원생">대학원생</option>

                  <option  <?php if ($arr["edu"] == "본과") {

                echo "selected";

              } ?>  value="본과">본과</option>

                  <option  <?php if (!$arr["edu"] == "전문대") {

                echo "selected";

              } ?>  value="전문대">전문대</option>

                  <option  <?php if (!$arr["edu"] == "고등 학교") {

                echo "selected";

              } ?>  value="고등 학교">고등 학교</option>

                  <option  <?php if (!$arr["edu"] == "중학교") {

                echo "selected";

              } ?>  value="중학교">중학교</option>

              </select>

          </td></tr>

          <tr><th>월급:</th><td><input  type="text"  name="salary"  size="25"  value="<?php echo $arr["salary"] ?>"></td></tr>

          <tr><th>장려금:</th><td><input  type="text"  name="bonus"  size="25"  value="<?php echo $arr["bonus"] ?>"></td></tr>

          <tr><th>본적:</th><td><input  type="text"  name="city"  size="25"  value="<?php echo $arr["city"] ?>"></td></tr>

          <tr><th></th><td>

                <input  type="button"  onClick="javascript :history.back(-1);"  value="되돌아가다" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

                <input  type="submit"  value="제출하다.">

          </td></tr>

          </table>       

        </form>

      </div>

    </div>

  </body>

</html>
페이지는 다음과 같습니다.

4.2 서비스 측 파일 action_editStudent.php를 통한 수정 처리
<?php

//데이터베이스 연결

include 'conn.php';

 

// 수정된 학생 정보 가져오기v

$id = $_POST['id'];

$name = $_POST['name'];

$sex = $_POST['sex'];

$age = $_POST['age'];

$edu = $_POST['edu'];

$salary = $_POST['salary'];

$bonus = $_POST['bonus'];

$city = $_POST['city'];

 

 

      //사전 처리된 sql 문장 만들기

      $sql = "UPDATE `student`

                  SET

                       `name`= ?,

                       `sex`= ?,

                       `age`= ?,

                       `edu`= ?,

                       `salary`= ?,

                       `bonus`= ?,

                       `city`= ?

                  WHERE `id`= ?";

 

      //사전 처리 SQL 템플릿

      $stmt = mysqli_prepare($link, $sql);

      // 인수가 바인딩되고 이미 바인딩된 변수에 값을 할당합니다.

      mysqli_stmt_bind_param($stmt, 'ssssssss', $name, $sex, $age, $edu, $salary, $bonus, $city, $id);

     

 

      if ($name) {

            // 전처리 실행(1차 실행)

            $result = mysqli_stmt_execute($stmt);

            //연결 끊기로 했다.

            mysqli_close($link);

 

            if ($result) {

                //학생 수정 성공

                  //첫 페이지로 이동

                  header("Location:index.php");

            }else{

                  exit('학생정보 sql문구 수정에 실패했습니다.오류 메시지:' . mysqli_error($link));

            }

      }else{

            //수정에 실패했다. 학생

            //힌트 출력, 첫 페이지로 이동

            echo "학생 수정 실패!<br><br>";

            header('Refresh: 3; url=index.php');  //3s 뒤돌기
  }

수정된 이름을 비워 두면 다음을 제출하십시오.

출력 실패 알림:

3초 후 첫 페이지로 돌아가기:

반응형

'개발 꿀팁 > PHP' 카테고리의 다른 글

PHP 기본 지식  (0) 2022.06.28
PHP 파일 실행 방법  (0) 2022.06.28
php 반사 API를 이용한 클래스 정보 획득  (0) 2022.06.27
PHP에서 ->와 =>의 의미  (0) 2022.06.27
PHP는 해석형입니까, 컴파일형입니까?  (0) 2022.06.27