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> 共<?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="되돌아가다" >
<input type="reset" value="초기화.">
<input type="submit" value="제출하다.">
</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="되돌아가다" >
<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 |