在我们网站开发的时候,往往离不开从数据库访问数据的过程。在这篇BLOG中,我们将一同学习如何从零开始利用PHP搭建一个WEB数据库。

新建数据库

前期准备

在新建数据库之前,我们先准备好我们的工具。这里推荐的是两个轻量化的管理软件——用于网站管理配置的 $PHPStudy$ 以及用于数据库管理的 $Navicat$。

我们首先先在 $PHPStudy$ 中打开 $Apache2.4.39$ 以及 $MySQL5.7.26$,如果这时发现端口被占用无法打开,可以尝试重启电脑或者在配置当中修改端口号。

1.png

接下来我们进入 $Navicat$,首先我们点击左上角的连接选择 $MySQL$,在连接里面主机写 $localhost$ 或者 $127.0.0.1$,,端口就选择默认的端口 $3306$ 就可以了,然后填上用户名和密码。

2.png

这里的用户名和密码可以在 $PHPStudy$ 的数据库配置中看到,我这边是默认的用户名和密码都是 $root$。

6.png

建立数据库

我们在 $Navicat$ 中新建一个数据库,这里我们可以在查询中使用下面这个命令实现。

CREATE DATABASE myschool

3.png

接着我们使用下列语句定义我们的数据库 $DDL$,这也可以在这个数据库中新建查询来实现。

create table classroom
    (building       varchar(15),
     room_number        varchar(7),
     capacity       numeric(4,0),
     primary key (building, room_number)
    );

create table department
    (dept_name      varchar(20), 
     building       varchar(15), 
     budget             numeric(12,2) check (budget > 0),
     primary key (dept_name)
    );

create table course
    (course_id      varchar(8), 
     title          varchar(50), 
     dept_name      varchar(20),
     credits        numeric(2,0) check (credits > 0),
     primary key (course_id),
     foreign key (dept_name) references department (dept_name)
        on delete set null
    );

create table instructor
    (ID         varchar(5), 
     name           varchar(20) not null, 
     dept_name      varchar(20), 
     salary         numeric(8,2) check (salary > 29000),
     primary key (ID),
     foreign key (dept_name) references department (dept_name)
        on delete set null
    );

create table section
    (course_id      varchar(8), 
         sec_id         varchar(8),
     semester       varchar(6)
        check (semester in ('Fall', 'Winter', 'Spring', 'Summer')), 
     year           numeric(4,0) check (year > 1701 and year < 2100), 
     building       varchar(15),
     room_number        varchar(7),
     time_slot_id       varchar(4),
     primary key (course_id, sec_id, semester, year),
     foreign key (course_id) references course (course_id)
        on delete cascade,
     foreign key (building, room_number) references classroom (building, room_number)
        on delete set null
    );

create table teaches
    (ID         varchar(5), 
     course_id      varchar(8),
     sec_id         varchar(8), 
     semester       varchar(6),
     year           numeric(4,0),
     primary key (ID, course_id, sec_id, semester, year),
     foreign key (course_id, sec_id, semester, year) references section (course_id, sec_id, semester, year)
        on delete cascade,
     foreign key (ID) references instructor (ID)
        on delete cascade
    );

create table student
    (ID         varchar(5), 
     name           varchar(20) not null, 
     dept_name      varchar(20), 
     tot_cred       numeric(3,0) check (tot_cred >= 0),
     primary key (ID),
     foreign key (dept_name) references department (dept_name)
        on delete set null
    );

create table takes
    (ID         varchar(5), 
     course_id      varchar(8),
     sec_id         varchar(8), 
     semester       varchar(6),
     year           numeric(4,0),
     grade              varchar(2),
     primary key (ID, course_id, sec_id, semester, year),
     foreign key (course_id, sec_id, semester, year) references section (course_id, sec_id, semester, year)
        on delete cascade,
     foreign key (ID) references student (ID)
        on delete cascade
    );

create table advisor
    (s_ID           varchar(5),
     i_ID           varchar(5),
     primary key (s_ID),
     foreign key (i_ID) references instructor (ID)
        on delete set null,
     foreign key (s_ID) references student (ID)
        on delete cascade
    );

create table time_slot
    (time_slot_id       varchar(4),
     day            varchar(1),
     start_hr       numeric(2) check (start_hr >= 0 and start_hr < 24),
     start_min      numeric(2) check (start_min >= 0 and start_min < 60),
     end_hr         numeric(2) check (end_hr >= 0 and end_hr < 24),
     end_min        numeric(2) check (end_min >= 0 and end_min < 60),
     primary key (time_slot_id, day, start_hr, start_min)
    );

create table prereq
    (course_id      varchar(8), 
     prereq_id      varchar(8),
     primary key (course_id, prereq_id),
     foreign key (course_id) references course (course_id)
        on delete cascade,
     foreign key (prereq_id) references course (course_id)
    );

4.png

最后我们向数据库中插入我们的范例数据信息,我们仍是在 $Navicat$ 中用新建查询的方式进行插入。

delete from prereq;
delete from time_slot;
delete from advisor;
delete from takes;
delete from student;
delete from teaches;
delete from section;
delete from instructor;
delete from course;
delete from department;
delete from classroom;
insert into classroom values ('Packard', '101', '500');
insert into classroom values ('Painter', '514', '10');
insert into classroom values ('Taylor', '3128', '70');
insert into classroom values ('Watson', '100', '30');
insert into classroom values ('Watson', '120', '50');
insert into department values ('Biology', 'Watson', '90000');
insert into department values ('Comp. Sci.', 'Taylor', '100000');
insert into department values ('Elec. Eng.', 'Taylor', '85000');
insert into department values ('Finance', 'Painter', '120000');
insert into department values ('History', 'Painter', '50000');
insert into department values ('Music', 'Packard', '80000');
insert into department values ('Physics', 'Watson', '70000');
insert into course values ('BIO-101', 'Intro. to Biology', 'Biology', '4');
insert into course values ('BIO-301', 'Genetics', 'Biology', '4');
insert into course values ('BIO-399', 'Computational Biology', 'Biology', '3');
insert into course values ('CS-101', 'Intro. to Computer Science', 'Comp. Sci.', '4');
insert into course values ('CS-190', 'Game Design', 'Comp. Sci.', '4');
insert into course values ('CS-315', 'Robotics', 'Comp. Sci.', '3');
insert into course values ('CS-319', 'Image Processing', 'Comp. Sci.', '3');
insert into course values ('CS-347', 'Database System Concepts', 'Comp. Sci.', '3');
insert into course values ('EE-181', 'Intro. to Digital Systems', 'Elec. Eng.', '3');
insert into course values ('FIN-201', 'Investment Banking', 'Finance', '3');
insert into course values ('HIS-351', 'World History', 'History', '3');
insert into course values ('MU-199', 'Music Video Production', 'Music', '3');
insert into course values ('PHY-101', 'Physical Principles', 'Physics', '4');
insert into instructor values ('10101', 'Srinivasan', 'Comp. Sci.', '65000');
insert into instructor values ('12121', 'Wu', 'Finance', '90000');
insert into instructor values ('15151', 'Mozart', 'Music', '40000');
insert into instructor values ('22222', 'Einstein', 'Physics', '95000');
insert into instructor values ('32343', 'El Said', 'History', '60000');
insert into instructor values ('33456', 'Gold', 'Physics', '87000');
insert into instructor values ('45565', 'Katz', 'Comp. Sci.', '75000');
insert into instructor values ('58583', 'Califieri', 'History', '62000');
insert into instructor values ('76543', 'Singh', 'Finance', '80000');
insert into instructor values ('76766', 'Crick', 'Biology', '72000');
insert into instructor values ('83821', 'Brandt', 'Comp. Sci.', '92000');
insert into instructor values ('98345', 'Kim', 'Elec. Eng.', '80000');
insert into section values ('BIO-101', '1', 'Summer', '2017', 'Painter', '514', 'B');
insert into section values ('BIO-301', '1', 'Summer', '2018', 'Painter', '514', 'A');
insert into section values ('CS-101', '1', 'Fall', '2017', 'Packard', '101', 'H');
insert into section values ('CS-101', '1', 'Spring', '2018', 'Packard', '101', 'F');
insert into section values ('CS-190', '1', 'Spring', '2017', 'Taylor', '3128', 'E');
insert into section values ('CS-190', '2', 'Spring', '2017', 'Taylor', '3128', 'A');
insert into section values ('CS-315', '1', 'Spring', '2018', 'Watson', '120', 'D');
insert into section values ('CS-319', '1', 'Spring', '2018', 'Watson', '100', 'B');
insert into section values ('CS-319', '2', 'Spring', '2018', 'Taylor', '3128', 'C');
insert into section values ('CS-347', '1', 'Fall', '2017', 'Taylor', '3128', 'A');
insert into section values ('EE-181', '1', 'Spring', '2017', 'Taylor', '3128', 'C');
insert into section values ('FIN-201', '1', 'Spring', '2018', 'Packard', '101', 'B');
insert into section values ('HIS-351', '1', 'Spring', '2018', 'Painter', '514', 'C');
insert into section values ('MU-199', '1', 'Spring', '2018', 'Packard', '101', 'D');
insert into section values ('PHY-101', '1', 'Fall', '2017', 'Watson', '100', 'A');
insert into teaches values ('10101', 'CS-101', '1', 'Fall', '2017');
insert into teaches values ('10101', 'CS-315', '1', 'Spring', '2018');
insert into teaches values ('10101', 'CS-347', '1', 'Fall', '2017');
insert into teaches values ('12121', 'FIN-201', '1', 'Spring', '2018');
insert into teaches values ('15151', 'MU-199', '1', 'Spring', '2018');
insert into teaches values ('22222', 'PHY-101', '1', 'Fall', '2017');
insert into teaches values ('32343', 'HIS-351', '1', 'Spring', '2018');
insert into teaches values ('45565', 'CS-101', '1', 'Spring', '2018');
insert into teaches values ('45565', 'CS-319', '1', 'Spring', '2018');
insert into teaches values ('76766', 'BIO-101', '1', 'Summer', '2017');
insert into teaches values ('76766', 'BIO-301', '1', 'Summer', '2018');
insert into teaches values ('83821', 'CS-190', '1', 'Spring', '2017');
insert into teaches values ('83821', 'CS-190', '2', 'Spring', '2017');
insert into teaches values ('83821', 'CS-319', '2', 'Spring', '2018');
insert into teaches values ('98345', 'EE-181', '1', 'Spring', '2017');
insert into student values ('00128', 'Zhang', 'Comp. Sci.', '102');
insert into student values ('12345', 'Shankar', 'Comp. Sci.', '32');
insert into student values ('19991', 'Brandt', 'History', '80');
insert into student values ('23121', 'Chavez', 'Finance', '110');
insert into student values ('44553', 'Peltier', 'Physics', '56');
insert into student values ('45678', 'Levy', 'Physics', '46');
insert into student values ('54321', 'Williams', 'Comp. Sci.', '54');
insert into student values ('55739', 'Sanchez', 'Music', '38');
insert into student values ('70557', 'Snow', 'Physics', '0');
insert into student values ('76543', 'Brown', 'Comp. Sci.', '58');
insert into student values ('76653', 'Aoi', 'Elec. Eng.', '60');
insert into student values ('98765', 'Bourikas', 'Elec. Eng.', '98');
insert into student values ('98988', 'Tanaka', 'Biology', '120');
insert into takes values ('00128', 'CS-101', '1', 'Fall', '2017', 'A');
insert into takes values ('00128', 'CS-347', '1', 'Fall', '2017', 'A-');
insert into takes values ('12345', 'CS-101', '1', 'Fall', '2017', 'C');
insert into takes values ('12345', 'CS-190', '2', 'Spring', '2017', 'A');
insert into takes values ('12345', 'CS-315', '1', 'Spring', '2018', 'A');
insert into takes values ('12345', 'CS-347', '1', 'Fall', '2017', 'A');
insert into takes values ('19991', 'HIS-351', '1', 'Spring', '2018', 'B');
insert into takes values ('23121', 'FIN-201', '1', 'Spring', '2018', 'C+');
insert into takes values ('44553', 'PHY-101', '1', 'Fall', '2017', 'B-');
insert into takes values ('45678', 'CS-101', '1', 'Fall', '2017', 'F');
insert into takes values ('45678', 'CS-101', '1', 'Spring', '2018', 'B+');
insert into takes values ('45678', 'CS-319', '1', 'Spring', '2018', 'B');
insert into takes values ('54321', 'CS-101', '1', 'Fall', '2017', 'A-');
insert into takes values ('54321', 'CS-190', '2', 'Spring', '2017', 'B+');
insert into takes values ('55739', 'MU-199', '1', 'Spring', '2018', 'A-');
insert into takes values ('76543', 'CS-101', '1', 'Fall', '2017', 'A');
insert into takes values ('76543', 'CS-319', '2', 'Spring', '2018', 'A');
insert into takes values ('76653', 'EE-181', '1', 'Spring', '2017', 'C');
insert into takes values ('98765', 'CS-101', '1', 'Fall', '2017', 'C-');
insert into takes values ('98765', 'CS-315', '1', 'Spring', '2018', 'B');
insert into takes values ('98988', 'BIO-101', '1', 'Summer', '2017', 'A');
insert into takes values ('98988', 'BIO-301', '1', 'Summer', '2018', null);
insert into advisor values ('00128', '45565');
insert into advisor values ('12345', '10101');
insert into advisor values ('23121', '76543');
insert into advisor values ('44553', '22222');
insert into advisor values ('45678', '22222');
insert into advisor values ('76543', '45565');
insert into advisor values ('76653', '98345');
insert into advisor values ('98765', '98345');
insert into advisor values ('98988', '76766');
insert into time_slot values ('A', 'M', '8', '0', '8', '50');
insert into time_slot values ('A', 'W', '8', '0', '8', '50');
insert into time_slot values ('A', 'F', '8', '0', '8', '50');
insert into time_slot values ('B', 'M', '9', '0', '9', '50');
insert into time_slot values ('B', 'W', '9', '0', '9', '50');
insert into time_slot values ('B', 'F', '9', '0', '9', '50');
insert into time_slot values ('C', 'M', '11', '0', '11', '50');
insert into time_slot values ('C', 'W', '11', '0', '11', '50');
insert into time_slot values ('C', 'F', '11', '0', '11', '50');
insert into time_slot values ('D', 'M', '13', '0', '13', '50');
insert into time_slot values ('D', 'W', '13', '0', '13', '50');
insert into time_slot values ('D', 'F', '13', '0', '13', '50');
insert into time_slot values ('E', 'T', '10', '30', '11', '45 ');
insert into time_slot values ('E', 'R', '10', '30', '11', '45 ');
insert into time_slot values ('F', 'T', '14', '30', '15', '45 ');
insert into time_slot values ('F', 'R', '14', '30', '15', '45 ');
insert into time_slot values ('G', 'M', '16', '0', '16', '50');
insert into time_slot values ('G', 'W', '16', '0', '16', '50');
insert into time_slot values ('G', 'F', '16', '0', '16', '50');
insert into time_slot values ('H', 'W', '10', '0', '12', '30');
insert into prereq values ('BIO-301', 'BIO-101');
insert into prereq values ('BIO-399', 'BIO-101');
insert into prereq values ('CS-190', 'CS-101');
insert into prereq values ('CS-315', 'CS-101');
insert into prereq values ('CS-319', 'CS-101');
insert into prereq values ('CS-347', 'CS-101');
insert into prereq values ('EE-181', 'PHY-101');

5.png

到这里我们的数据库就准备就绪了。

学生信息网页搭建

基本界面

创建站点

我们使用 $Dreamweaver$ 进行网页的开发和编写工作。首先我们先绑定站点,在 $Dreamweaver$ 的站点-新建站点中,我们填上站点的名称和路径新建站点。

7.png

其中本地站点文件夹要选择 $PHPStudy$ 中网站的根目录地址,在我这里是 D:\phpstudy_pro\WWW,具体可以在 $PHPStudy$ 中网站-管理-打开根目录中进行查询。

8.png

接着我们新建 $PHP$ 文件,另存为 $student.php$,我们打上如下代码:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>学生信息管理系统</title>
</head>

<body>
</body>
</html>

我们使用浏览器输入 $localhost/student.php$ 发现确实创建了这个网页。

9.png

由于后面要使用到大量的 $PHP$,所以使用正确的 $PHP$ 版本尤其重要。太新的 $PHP$ 版本容易对我们的祖传老代码不太友好,所以在这里我们使用 $PHP5.6.9$,没有这个版本的话也可以直接在 $PHPStudy$ 中下载安装。

11.png

创建内容

分步实现

接下来我们就要在 $$ 和 $$ 中间做文章了。

首先我们使用 <h1 align="center">学生信息<h1> 来建立页面的标题文字。

由于我们中间有新增和修改等操作,所以我们先在其中加入一个表单,由于是自己传到自己 $action=""$ 并且可以设定 $method = "post"$,现在的界面又是主页所以我们可以让 $name = "indexf"$,所以我们有个大体框架:

<body>
    <h1 align="center">学生信息</h1>
    <form action="" method="post" name="indexf">
        …………
    </form>
</body>

我们下面开始补充 $\dots$ 处的内容。

首先我们使用下面代码新建了一个叫做新建的按钮,这个按钮指向的是叫做 $insert.php$ 的 $PHP$ 文件,这个文件我们会在后面进行创建和编写:

<p align="center">
    <input type="button" value="新增" name="inbut" onClick="location.href = 'insert.php'">
</p>

接下来我们新增一个居中的搜索框,我们让其居中并添加框和搜索部分两个内容:

<p align="center">
    <input type="text" name="sel"><input type="submit" value="搜索" name="selsub">
</p>

最后我们新增一个可以展示我们搜索数据的表格,我们设定表的边框、大小等属性,并定义好表头:

<table align="center" border="1px" cellpadding="0px" width="800px">
    <tr><th>学号</th><th>姓名</th><th>学院</th><th>操作</th></tr>
</table>
完整代码

所以我们这部分的完整代码如下:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>学生信息管理系统</title>
</head>

<body>
    <h1 align="center">学生信息</h1>
    <form action="" method="post" name="indexf">
        <p align="center">
            <input type="button" value="新增" name="inbut" onClick="location.href = 'insert.php'">
        </p>
        <p align="center">
            <input type="text" name="sel"><input type="submit" value="搜索" name="selsub">
        </p>
        <table align="center" border="1px" cellpadding="0px" width="800px">
            <tr><th>学号</th><th>姓名</th><th>学院</th><th>操作</th></tr>
        </table>
    </form>
</body>
</html>

得到的效果如下:

10.png

链接查询数据库

我们下一步就是完善我们的表格,让我们能在我们的数据库当中抓取数据放到我们的网页当中,为此我们需要用到 $PHP$ 语句。

分布实现

我们在表格中插入 $PHP$ 语句框架,其主体是 $<?php?>$,我们写到表格当中。其中 $\dots$ 就是我们这一部分要补全的内容:

<table align="center" border="1px" cellpadding="0px" width="800px">
    <tr><th>学号</th><th>姓名</th><th>学院</th><th>操作</th></tr>
    <?php
        ……

</table>

我们和 $ODBC$ 类似地首先还是要连接数据库。我们使用 $mysqli_connect$ 函数连接数据库,其参数从左到右分别是数据库的 $ip$ 地址,数据库的登录账户,数据库的登录密码,数据库名称以及端口号。然后我们还是要加上一个对连接的判断来增加我们代码的健壮性,如果 $!\$link$ 也就是说我们的连接失败了的话我们就直接退出并返回数据库连接失败的信息就可以了。

$link = mysqli_connect('localhost', 'root', 'root', 'myschool', '3306');
if(!$link) {
    exit('数据库连接失败!');
}

接着我们就要对我们的查询来做文章了。我们上面定义了搜索框和搜索按键,如果用户没有搜索需求直接进入了我们这个页面,那我们就直接返回学生信息表的所有内容导出到变量 $\$res$ 中。但如果用户在使用了搜索,我们就先用一个变量 $\$sel$ 存储搜索框中内容,然后把搜索框中的信息和所有学生的学号、姓名和学院信息进行匹配,只要一个学生的上一任意属性和搜索框的输入信息匹配我们就要返回这个学生的所有信息。为此我们还是使用 $like$ 的模糊匹配,这部分的代码如下:

if(empty($_POST["selsub"])) {
    $res = mysqli_query($link, "select * from student");
}//全结果集
else {
    $sel = $_POST["sel"];
    $res = mysqli_query($link, "select * from student where ID like '%$sel%' or name like '%$sel%' or dept_name like '%$sel%'");
}//搜索框得到的结果集

我们最后要做的就是在我们的表格中显示这些学生的信息。首先我们使用 $while(\$row = mysqli_fetch_array(\$res))$ 取出结果的每一行,接着我们使用 $echo$ 语句直接添加 $html$ 语句以实现我们四个属性数据 $row[0] \sim row[3]$ 的填入,最后我们还需要添加两个按钮分别是修改和删除。这里有一点需要注意,我们在修改和删除按钮的命名上加入了 $\$row[0]$,这是因为我们有这么多一样的按钮我们需要一个标记来区分哪个按钮属于哪一行,而 $\$row[0]$ 是学生的学号是我们数据库的主元列是唯一的,所以我们可以使用 $\$row[0]$ 来进行我们行的一个标记:

while($row = mysqli_fetch_array($res)) {
    echo '<tr align="center">';//居中

    echo "<td>$row[0]</td>";
    echo "<td>$row[1]</td>";
    echo "<td>$row[2]</td>";
    echo "<td>$row[3]</td>";

    echo "<td>";
    echo "<input type = 'submit' name = 'upsub$row[0]' value = '修改'>";
    echo "<input type = 'submit' name = 'delsub$row[0]' value = '删除'>";
    echo "</td>";

    echo '</tr>';
}

完整代码

所以我们到这一步的完整代码就如下所示:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>学生信息管理系统</title>
</head>

<body>
    <h1 align="center">学生信息</h1>
    <form action="" method="post" name="indexf">
        <p align="center">
            <input type="button" value="新增" name="inbut" onClick="location.href = 'insert.php'">
        </p>
        <p align="center">
            <input type="text" name="sel"><input type="submit" value="搜索" name="selsub">
        </p>
        <table align="center" border="1px" cellpadding="0px" width="800px">
            <tr><th>学号</th><th>姓名</th><th>学院</th><th>总学分</th><th>操作</th></tr>
            <?php
                $link = mysqli_connect('localhost', 'root', 'root', 'myschool');
                if(!$link) {
                    exit('数据库连接失败!');
                }
                if(empty($_POST["selsub"])) {
                    $res = mysqli_query($link, "select * from student");
                }//全结果集
                else {
                    $sel = $_POST["sel"];
                    $res = mysqli_query($link, "select * from student where ID like '%$sel%' or name like '%$sel%' or dept_name like '%$sel%'");
                }//搜索框得到的结果集
                while($row = mysqli_fetch_array($res)) {
                    echo '<tr align="center">';//居中

                    echo "<td>$row[0]</td>";
                    echo "<td>$row[1]</td>";
                    echo "<td>$row[2]</td>";
                    echo "<td>$row[3]</td>";

                    echo "<td>";
                    echo "<input type = 'submit' name = 'upsub$row[0]' value = '修改'>";
                    echo "<input type = 'submit' name = 'delsub$row[0]' value = '删除'>";
                    echo "</td>";

                    echo '</tr>';
                }
            ?>
        </table>
    </form>
</body>
</html>

我们尝试运行我们的网站发现可以正常显示所有学生信息:

12.png

我们对姓名进行筛选,只看 $Zhang$:

13.png

我们再尝试筛选计算机学院 $comp$:

14.png

实现新增功能

我们在之前创建新建按钮的时候有提到过,点击按钮会进入 $insert.php$,所以我们先在网站根目录下创建 $insert.php$,下面我们讲一步步完成 $insert.php$。

分步实现

我们还是从最原始的 $php$ 代码框架开始,我们先定义我们的网页名称为新增学生记录:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>新增学生记录</title>
</head>

<body>
</body>
</html>

下面我们完善 $$ 和 $$ 之间的内容。

由于有数据的提交,我们还是新建一个表单,并在里面建立数据读入的数据框,并建立提交按键:

<form action="" method="post" name="inf">
    <p align="center">学生学号:<input type = "text" name = "sid"></p>
    <p align="center">学生姓名:<input type = "text" name = "sname"></p>
    <p align="center">学生学院:<input type = "text" name = "sdept"></p>
    <p align="center"><input type = "submit" name = "insub" value="提交"></p>
</form>

然后我们需要使用 $PHP$ 链接数据库,并讲我们读取到的数据填入数据库。

首先我们还是和上面一样地链接数据库,如果无法连接数据库则返回出错信息:

$link = mysqli_connect('localhost', 'root', 'root', 'myschool', '3306');
if(!$link) {
    exit('数据库连接失败!');
}

接着我们就是去判断,如果我们的按钮被点击了也就是 $!empty(\$_POST["insub"])$ 我们就用变量存储我们从数据框读取到的内容,然后使用 $mysqli_query$ 语句插入一条学生记录。这里优一点要注意,就是由于我们的学号是主键,所以插入的时候如果学号冲突了就会无法插入,所以我们要用一个变量存储我们的 $mysqli_query$ 语句返回结果,如果值为 $0$ 就表示插入失败我们就返回插入失败姐可以了。最后我们只要通过 $header$ 语句跳转回到我们的 $student.php$ 也就是学生信息的主页就可以了。

所以这一部分的代码如下:

<?php
    $link = mysqli_connect('localhost', 'root', 'root', 'myschool', '3306');
    if(!$link) {
        exit('数据库连接失败!');
    }
    if(!empty($_POST["insub"])) {
        $sid = $_POST["sid"];
        $sname = $_POST["sname"];
        $sdept = $_POST["sdept"];
        $res = mysqli_query($link, "insert student values('$sid', '$sname', '$sdept', 0)");
        if(!$res) {
            exit('数据插入失败!');
        }
        header('location:student.php');
    }
?>

完整代码

所以这部分 $insert.php$ 的完整代码就如下所示:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>新增学生记录</title>
</head>

<body>
    <h1 align="center">新增学生记录</h1>
    <form action="" method="post" name="inf">
        <p align="center">学生学号:<input type = "text" name = "sid"></p>
        <p align="center">学生姓名:<input type = "text" name = "sname"></p>
        <p align="center">学生学院:<input type = "text" name = "sdept"></p>
        <p align="center"><input type = "submit" name = "insub" value="提交"></p>
    </form>
    <?php
        $link = mysqli_connect('localhost', 'root', 'root', 'myschool', '3306');
        if(!$link) {
            exit('数据库连接失败!');
        }
        if(!empty($_POST["insub"])) {
            $sid = $_POST["sid"];
            $sname = $_POST["sname"];
            $sdept = $_POST["sdept"];
            $res = mysqli_query($link, "insert student values('$sid', '$sname', '$sdept', 0)");
            if(!$res) {
                exit('数据插入失败!');
            }
            header('location:student.php');
        }
    ?>
</body>
</html>

我们从主页跳转到新增界面,填入新增的信息:

15.png

点击提交键,自动跳转回到学生信息主页,发现成功新增了这名学生的信息:

18.png

如果这时我们尝试再次添加一名一模一样的学生信息,就会因为主键冲突返回新增失败的信息:

17.png

实现修改功能

分步实现

我们修改功能的按键是设定在表格的最右栏,设定的名称是 $name = 'upsub\$row[0]'$,所以首先我们需要用 !empty($_POST["upsub$row[0]"]) 来判定用户对我们的按钮进行了点击。

如果我们检测到用户点击了修改按钮,我们就要在表格中新建一行,其中前四列都是文本框,里面默认填上原来的学生信息,用户可以根据须求对学生信息进行修改,修改完成后可以点击最后一列的确认修改按钮。这里还是使用简单的文本框和按钮来进行实现:

if(!empty($_POST["upsub$row[0]"])) {
    echo '<tr align="center">';
    echo "<td><input type='text' name='upid' value = '$row[0]'></td>";
    echo "<td><input type='text' name='upname' value = '$row[1]'></td>";
    echo "<td><input type='text' name='updept' value = '$row[2]'></td>";
    echo "<td><input type='text' name='upcred' value = '$row[3]'></td>";
    echo "<td><input type='submit' value='确认修改' name='upsubs$row[0]'></td>";
    echo '</tr>';
}

接下来就是当我们检测到确认修改按钮按下后对数据库的修改工作,检测按钮被点击还是照常对照按钮的名称使用 !empty($_POST["按钮名称"]) 来实现。首先我们先使用四个变量存储我们此时四个修改文本框内的信息,然后我们使用 $mysqli_query$ 语句直接运用 $SQL$ 语句修改数据库。这里有一点需要注意,我们使用 $SQL$ 语句修改数据库信息的时候要记得限定 where ID = '$row[0]' 也就是要修改正确对的行,不写这一句的话全部的信息都会被修改。当然为了我们的健壮性,我们还是开一个变量 $\$flag$ 来存储我们修改的返回信息,如果修改失败就返回修改失败的信息。最后最后可以使用 header('location:#')? 来让当前页面刷新这样就能直接看到更新后的结果啦。所以这一部分的代码如下:

if(!empty($_POST["upsubs$row[0]"])) {
    $upid = $_POST['upid'];
    $upname = $_POST['upname'];
    $updept = $_POST['updept'];
    $upcred = $_POST['upcred'];

    $flag = mysqli_query($link, "update student set ID = '$upid', name = '$upname', dept_name = '$updept', tot_cred = $upcred where ID = '$row[0]'");
    header('location:#');
    if(!$flag) {
        exit('数据修改失败!');
    }
}

完整代码

到这一步为止,我们将我们的 $student.php$ 完善成下面这样:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>学生信息管理系统</title>
</head>

<body>
    <h1 align="center">学生信息</h1>
    <form action="" method="post" name="indexf">
        <p align="center">
            <input type="button" value="新增" name="inbut" onClick="location.href = 'insert.php'">
        </p>
        <p align="center">
            <input type="text" name="sel"><input type="submit" value="搜索" name="selsub">
        </p>
        <table align="center" border="1px" cellpadding="0px" width="800px">
            <tr><th>学号</th><th>姓名</th><th>学院</th><th>总学分</th><th>操作</th></tr>
            <?php
                $link = mysqli_connect('localhost', 'root', 'root', 'myschool', '3306');
                if(!$link) {
                    exit('数据库连接失败!');
                }
                if(empty($_POST["selsub"])) {
                    $res = mysqli_query($link, "select * from student");
                }//全结果集
                else {
                    $sel = $_POST["sel"];
                    $res = mysqli_query($link, "select * from student where ID like '%$sel%' or name like '%$sel%' or dept_name like '%$sel%'");
                }//搜索框得到的结果集
                while($row = mysqli_fetch_array($res)) {
                    echo '<tr align="center">';//居中

                    echo "<td>$row[0]</td>";
                    echo "<td>$row[1]</td>";
                    echo "<td>$row[2]</td>";
                    echo "<td>$row[3]</td>";

                    echo "<td>";
                    echo "<input type = 'submit' name = 'upsub$row[0]' value = '修改'>";
                    echo "<input type = 'submit' name = 'delsub$row[0]' value = '删除'>";
                    echo "</td>";

                    echo '</tr>';

                    if(!empty($_POST["upsub$row[0]"])) {
                        echo '<tr align="center">';
                        echo "<td><input type='text' name='upid' value = '$row[0]'></td>";
                        echo "<td><input type='text' name='upname' value = '$row[1]'></td>";
                        echo "<td><input type='text' name='updept' value = '$row[2]'></td>";
                        echo "<td><input type='text' name='upcred' value = '$row[3]'></td>";
                        echo "<td><input type='submit' value='确认修改' name='upsubs$row[0]'></td>";
                        echo '</tr>';
                    }
                    if(!empty($_POST["upsubs$row[0]"])) {
                        $upid = $_POST['upid'];
                        $upname = $_POST['upname'];
                        $updept = $_POST['updept'];
                        $upcred = $_POST['upcred'];

                        $flag = mysqli_query($link, "update student set ID = '$upid', name = '$upname', dept_name = '$updept', tot_cred = $upcred where ID = '$row[0]'");
                        header('location:#');
                        if(!$flag) {
                            exit('数据修改失败!');
                        }

                    }
                }
            ?>
        </table>
    </form>
</body>
</html>

我们对之前新增的 $Konjac$ 同学的信息进行修改,我们将其更名为 $Jvruo$:

19.png

我们点击确认修改,页面自动刷新,我们可以看到信息成功修改:

20.png

实现删除功能

分步实现

我们当然可以仿照上面的代码,直接捕捉删除按键,如果捕捉到了就直接使用 $mysqli_query$ 语句运用 $SQL$ 语句从数据库中删除这行元素,然后刷新页面:

if(!empty($_POST["delsub$row[0]"])) {
    mysqli_query($link, "delete from student where ID = '$row[0]'");
    header('location:#');
}

但这样就会很不优雅,一般来说删除是一件大事,一般都会有弹窗之类的提醒确认后才会正式删除,为此我们在这里写一个弹窗。涉及到弹窗就要多一个 $PHP$ 文件,所以我们还是先新增一个 $delete.php$。

由于我们要在两个 $PHP$ 中传输我们要删除哪一行也就是要删除的同学的学号信息,所以我们要用到缓存,我们在 $student.php$ 这个文件的 $<?php$ 下加入 session_start(); 语句来开启缓存。

接下面我们使用 $JacaScript$ 来写一个简单的弹窗,我们还是使用 $echo$ 来传出代码,我们使用 $confirm$ 来建立一个有着“是否确认删除”内容的弹窗,如果用户点击确定那么我们就跳转到我们的 $delete.php$ 来实现我们的删除操作。

if(!empty($_POST["delsub$row[0]"])) {
    $_SESSION['del'] = $row[0];
    echo "<script>";
    echo "if(confirm('是否确认删除') == true) {
              location.href = 'delete.php';
          }";
    echo "</script>";
}

$delete.php$ 的主体也很简单,我们首先还是先使用 session_start(); 启用缓存,然后我们照搬连接数据库的代码和数据库进行连接,接着我们用变量 $\$del$ 来存储缓存中存放的待删除学生的 $ID$ 信息,下面我们就照旧使用 $mysqli_query$ 语句运用 $SQL$ 语句从数据库中删除这行元素,然后刷新跳转页面到学生信息主页就可以啦:

<?php
    session_start();
    $link = mysqli_connect('localhost', 'root', 'root', 'myschool', '3306');
    if(!$link) {
        exit('数据库连接失败!');
    }
    $del = $_SESSION['del'];
    mysqli_query($link, "delete from student where ID = '$del'");
    header('location:student.php');
?>

完整代码

所以我们完整的 $student.php$ 的代码就如下了:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>学生信息管理系统</title>
</head>

<body>
    <h1 align="center">学生信息</h1>
    <form action="" method="post" name="indexf">
        <p align="center">
            <input type="button" value="新增" name="inbut" onClick="location.href = 'insert.php'">
        </p>
        <p align="center">
            <input type="text" name="sel"><input type="submit" value="搜索" name="selsub">
        </p>
        <table align="center" border="1px" cellpadding="0px" width="800px">
            <tr><th>学号</th><th>姓名</th><th>学院</th><th>总学分</th><th>操作</th></tr>
            <?php
                session_start();
                $link = mysqli_connect('localhost', 'root', 'root', 'myschool', '3306');
                if(!$link) {
                    exit('数据库连接失败!');
                }
                if(empty($_POST["selsub"])) {
                    $res = mysqli_query($link, "select * from student");
                }//全结果集
                else {
                    $sel = $_POST["sel"];
                    $res = mysqli_query($link, "select * from student where ID like '%$sel%' or name like '%$sel%' or dept_name like '%$sel%'");
                }//搜索框得到的结果集
                while($row = mysqli_fetch_array($res)) {
                    echo '<tr align="center">';//居中

                    echo "<td>$row[0]</td>";
                    echo "<td>$row[1]</td>";
                    echo "<td>$row[2]</td>";
                    echo "<td>$row[3]</td>";

                    echo "<td>";
                    echo "<input type = 'submit' name = 'upsub$row[0]' value = '修改'>";
                    echo "<input type = 'submit' name = 'delsub$row[0]' value = '删除'>";
                    echo "</td>";

                    echo '</tr>';

                    if(!empty($_POST["upsub$row[0]"])) {
                        echo '<tr align="center">';
                        echo "<td><input type='text' name='upid' value = '$row[0]'></td>";
                        echo "<td><input type='text' name='upname' value = '$row[1]'></td>";
                        echo "<td><input type='text' name='updept' value = '$row[2]'></td>";
                        echo "<td><input type='text' name='upcred' value = '$row[3]'></td>";
                        echo "<td><input type='submit' value='确认修改' name='upsubs$row[0]'></td>";
                        echo '</tr>';
                    }
                    if(!empty($_POST["upsubs$row[0]"])) {
                        $upid = $_POST['upid'];
                        $upname = $_POST['upname'];
                        $updept = $_POST['updept'];
                        $upcred = $_POST['upcred'];

                        $flag = mysqli_query($link, "update student set ID = '$upid', name = '$upname', dept_name = '$updept', tot_cred = $upcred where ID = '$row[0]'");
                        header('location:#');
                        if(!$flag) {
                            exit('数据修改失败!');
                        }
                    }

                    if(!empty($_POST["delsub$row[0]"])) {
                        $_SESSION['del'] = $row[0];
                        echo "<script>";
                        echo "if(confirm('是否确认删除') == true) {
                                  location.href = 'delete.php';
                              }";
                        echo "</script>";
                    }
                }
            ?>
        </table>
    </form>
</body>
</html>

$delete.php$ 的代码则如下:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>删除学生信息</title>
</head>

<body>
    <?php
        session_start();
        $link = mysqli_connect('localhost', 'root', 'root', 'myschool', '3306');
        if(!$link) {
            exit('数据库连接失败!');
        }
        $del = $_SESSION['del'];
        mysqli_query($link, "delete from student where ID = '$del'");
        header('location:student.php');
    ?>

</body>
</html>

我们对 $Konjac$ 这名同学点击删除:

21.png

出现删除信息的确认弹窗,我们点击确定:

22.png

自动跳转回到主页,删除成功:

23.png

附加功能制作

学生修课信息查询

分步实现

我们的需求是输入学生的学号,输出一个表格,表格内有学生的姓名、学院、选修课程编号、选修课程名称、选修课程的学分以及这门课程的成绩。我们仿照上面的 $student.php$ 进行编写。

我们还是新建一个表单,在里面打上我们的标题、搜索框和表头,在表格内要用到 $PHP$ 框架语言连接数据库我们也先准备好数据库的连接。所以下面是我们的大体框架:

<body>
    <h1 align="center">学生修课信息查询</h1>
    <form action="" method="post" name="indexf">
        <p align="center">
            请输入待查询的学生学号:
            <input type="text" name="sel"><input type="submit" value="搜索" name="selsub">
        </p>
        <table align="center" border="1px" cellpadding="0px" width="800px">
            <tr><th>姓名</th><th>学院</th><th>课程号</th><th>课程名称</th><th>学分</th><th>成绩</th></tr>
            <?php
                $link = mysqli_connect('localhost', 'root', 'root', 'myschool', '3306');
                if(!$link) {
                    exit('数据库连接失败!');
                }
                …………
            ?>
        </table>
    </form>
</body>

接下里我们补全 $\dots$ 的部分。我们还是用熟悉的 $empty$ 函数还获取用户的点击信息,然后我们用变量 $\$sel$ 来存储我们搜索框的信息。接着我们用 $\$stu$ 来存储这名学生的个人信息,$\$res$ 存储这名学生选择的课程信息。由于 $\$stu$ 只有一行我们从 $\$stu$ 中取出第一行存储在 $\$temp$ 中则 $\$temp$ 存储了该学生的完整信息。接下来我们遍历这名学生选择的课程信息,先输出 $\$temp$ 中存储的学生姓名和学院,然后输出课程编号。接下来对于课程的名称和学分,存储在了 $course$ 表中,我们以课程编号为筛选条件得到对应的课程名称和学分并输出,最后我们从选课信息中选出我们的成绩信息输出就可以了:

if(!empty($_POST["selsub"])) {
    $sel = $_POST["sel"];
    $stu = mysqli_query($link, "select * from student where ID = '$sel'");
    $res = mysqli_query($link, "select * from takes where ID = '$sel'");

    $temp = mysqli_fetch_array($stu);
    while($row = mysqli_fetch_array($res)) {

        echo '<tr align="center">';//居中

        echo "<td>$temp[1]</td>";
        echo "<td>$temp[2]</td>";
        echo "<td>$row[1]</td>";

        $course = mysqli_query($link, "select * from course where course_id = '$row[1]'");
        $info = mysqli_fetch_array($course);
        echo "<td>$info[1]</td>";
        echo "<td>$info[3]</td>";

        echo "<td>$row[5]</td>";

        echo "</tr>";

    }
}//搜索框得到的结果集

完整代码

根据我们上面的部分,我们得到这部分 $take.php$ 的完整代码如下:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>学生修课信息查询</title>
</head>

<body>
    <h1 align="center">学生修课信息查询</h1>
    <form action="" method="post" name="indexf">
        <p align="center">
            请输入待查询的学生学号:
            <input type="text" name="sel"><input type="submit" value="搜索" name="selsub">
        </p>
        <table align="center" border="1px" cellpadding="0px" width="800px">
            <tr><th>姓名</th><th>学院</th><th>课程号</th><th>课程名称</th><th>学分</th><th>成绩</th></tr>
            <?php
                $link = mysqli_connect('localhost', 'root', 'root', 'myschool', '3306');
                if(!$link) {
                    exit('数据库连接失败!');
                }
                if(!empty($_POST["selsub"])) {
                    $sel = $_POST["sel"];
                    $stu = mysqli_query($link, "select * from student where ID = '$sel'");
                    $res = mysqli_query($link, "select * from takes where ID = '$sel'");

                    $temp = mysqli_fetch_array($stu);
                    while($row = mysqli_fetch_array($res)) {

                        echo '<tr align="center">';//居中

                        echo "<td>$temp[1]</td>";
                        echo "<td>$temp[2]</td>";
                        echo "<td>$row[1]</td>";

                        $course = mysqli_query($link, "select * from course where course_id = '$row[1]'");
                        $info = mysqli_fetch_array($course);
                        echo "<td>$info[1]</td>";
                        echo "<td>$info[3]</td>";

                        echo "<td>$row[5]</td>";

                        echo "</tr>";

                    }
                }//搜索框得到的结果集
            ?>
        </table>
    </form>
</body>
</html>

我们尝试查找 $Zhang$ 的课程信息,可以正常得到:

24.png

学业危机信息查询

分步实现

我们仿照之前的代码,还是先新建出一个表单,然后我们使用搜索框得到对于学业危机的定义—即不及格的科目数量。然后我们还是使用 $PHP$ 连接数据库并检测连接是否成功建立,我们的基本框架也如下所示:

<h1 align="center">学业危机信息查询</h1>
<form action="" method="post" name="indexf">
    <p align="center">
        请输入不及格科目数量:
        <input type="text" name="sel"><input type="submit" value="搜索" name="selsub">
    </p>
    <table align="center" border="1px" cellpadding="0px" width="800px">
        <tr><th>学号</th><th>姓名</th><th>学院</th></tr>
        <?php
            $link = mysqli_connect('localhost', 'root', 'root', 'myschool', '3306');
            if(!$link) {
                exit('数据库连接失败!');
            }
            …………
        ?>
    </table>
</form>

下面我们补全 $\dots$ 的部分。

我们先考虑,怎么样使用 $SQL$ 计算有那些同学有至少 $k$ 门不及格科目呢?这里我们可以使用嵌套查询来实现:

select * 
from student 
where (select COUNT(*) 
       from takes 
             where takes.grade like 'F%' and student.ID = takes.ID) >= k

接下来我们就只要将这个 $k$ 替换成我们在读入框中得到科目数,最后将得到的数据展示在表格当中就可以了。所以这部分的代码如下:

if(!empty($_POST["selsub"])) {
    $sel = $_POST["sel"];
    $res = mysqli_query($link, "select * 
                                from student 
                                where (select COUNT(*) 
                                       from takes 
                                       where takes.grade like 'F%' 
                                             and 
                                             student.ID = takes.ID) >= $sel");
    while($row = mysqli_fetch_array($res)) {
        echo '<tr align="center">';//居中

        echo "<td>$row[0]</td>";
        echo "<td>$row[1]</td>";
        echo "<td>$row[2]</td>";

        echo "</tr>";

    }
}//搜索框得到的结果集

完整代码

这部分 $danger.php$ 的完整代码就如下所示:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>学业危机信息查询</title>
</head>

<body>
    <h1 align="center">学业危机信息查询</h1>
    <form action="" method="post" name="indexf">
        <p align="center">
            请输入不及格科目数量:
            <input type="text" name="sel"><input type="submit" value="搜索" name="selsub">
        </p>
        <table align="center" border="1px" cellpadding="0px" width="800px">
            <tr><th>学号</th><th>姓名</th><th>学院</th></tr>
            <?php
                $link = mysqli_connect('localhost', 'root', 'root', 'myschool', '3306');
                if(!$link) {
                    exit('数据库连接失败!');
                }
                if(!empty($_POST["selsub"])) {
                    $sel = $_POST["sel"];
                    $res = mysqli_query($link, "select * 
                                                from student 
                                                where (select COUNT(*) 
                                                       from takes 
                                                       where takes.grade like 'F%' 
                                                             and 
                                                             student.ID = takes.ID) >= $sel");
                    while($row = mysqli_fetch_array($res)) {

                        echo '<tr align="center">';//居中

                        echo "<td>$row[0]</td>";
                        echo "<td>$row[1]</td>";
                        echo "<td>$row[2]</td>";

                        echo "</tr>";

                    }
                }//搜索框得到的结果集
            ?>
        </table>
    </form>
</body>
</html>

我们尝试搜索不及格科目数量大于等于 $0$ 的同学,这时输出了所有的同学:

25.png

我们尝试搜索不及格科目数量大于等于 $1$ 的同学,这时只输出了一位有不及格记录的同学:

26.png

课程信息查询

分步实现

和查询学生信息非常类似,我们还是先新建出一个表单,然后我们使用搜索框得到对于学业危机的定义—即不及格的科目数量。然后我们还是使用 $PHP$ 连接数据库并检测连接是否成功建立,我们的基本框架也如下所示:

<h1 align="center">学业危机信息查询</h1>
<form action="" method="post" name="indexf">
    <p align="center">
        课程名称:
        <input type="text" name="sel"><input type="submit" value="搜索" name="selsub">
    </p>
    <table align="center" border="1px" cellpadding="0px" width="800px">
        <tr><th>学号</th><th>姓名</th><th>学院</th></tr>
        <?php
            $link = mysqli_connect('localhost', 'root', 'root', 'myschool', '3306');
            if(!$link) {
                exit('数据库连接失败!');
            }
            …………
        ?>
    </table>
</form>

下面我们补全 $\dots$ 的部分。

我们现在要做的是,根据我们文本框读入到的内容去匹配所有名称含有该内容的课程。这就可以用到我们的 $like$ 模糊匹配。当然如果没有使用搜索功能,我们还是要返回完整的课程信息表。所以这里我们还是要用到我们的老朋友 $empty(\$_POST["selsub"])$ 来判断我们是否有点击搜索按钮,如果没有的话我们就返回完整的课程信息表,反之我们就返回我们经过搜索得到的结果。所以这部分的代码如下:

if(empty($_POST["selsub"])) {
    $res = mysqli_query($link, "select * from course");
}
else {
    $sel = $_POST["sel"];
    $res = mysqli_query($link, "select * from course where title like '%$sel%'");
}//搜索框得到的结果集

while($row = mysqli_fetch_array($res)) {
    echo '<tr align="center">';//居中

    echo "<td>$row[0]</td>";
    echo "<td>$row[1]</td>";
    echo "<td>$row[2]</td>";
    echo "<td>$row[3]</td>";

    echo '</tr>';
}

完整代码

所以我们这部分 $course.php$ 的代码如下:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>课程信息管理查询系统</title>
</head>

<body>
    <h1 align="center">课程信息</h1>
    <form action="" method="post" name="indexf">
        <p align="center">
            课程名称:
            <input type="text" name="sel"><input type="submit" value="搜索" name="selsub">
        </p>
        <table align="center" border="1px" cellpadding="0px" width="800px">
            <tr><th>编号</th><th>课程名</th><th>学院</th><th>学分</th></tr>
            <?php
                $link = mysqli_connect('localhost', 'root', 'root', 'myschool', '3306');
                if(!$link) {
                    exit('数据库连接失败!');
                }
                if(empty($_POST["selsub"])) {
                    $res = mysqli_query($link, "select * from course");
                }
                else {
                    $sel = $_POST["sel"];
                    $res = mysqli_query($link, "select * from course where title like '%$sel%'");
                }//搜索框得到的结果集

                while($row = mysqli_fetch_array($res)) {
                    echo '<tr align="center">';//居中

                    echo "<td>$row[0]</td>";
                    echo "<td>$row[1]</td>";
                    echo "<td>$row[2]</td>";
                    echo "<td>$row[3]</td>";

                    echo '</tr>';
                }
            ?>
        </table>
    </form>
</body>
</html>

我们直接进入网页可以正常显示网页:

27.png

我们筛选课程名称带 $Comp$ 的课程:

28.png

首页有机组合

我们上面写了这么多的页面,下面我们需要用一个主页将他们整合起来。最简单的方法当然是使用按钮进行跳转,我们新建 $index.php$,其中代码如下:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>数据库管理系统</title>
</head>

<body>
    <h1 align="center">数据库管理系统</h1>
    <form action="" method="post" name="indexf">
        <p align="center">
            <input type="button" value="学生信息管理" name="inbut" style='font-size:25px' onClick="location.href = 'student.php'">
        </p>
        <p align="center">
            <input type="button" value="选课信息查询" name="inbut" style='font-size:25px' onClick="location.href = 'take.php'">
        </p>
        <p align="center">
            <input type="button" value="学业危机查询" name="inbut" style='font-size:25px' onClick="location.href = 'danger.php'">
        </p>
        <p align="center">
            <input type="button" value="课程信息查询" name="inbut" style='font-size:25px' onClick="location.href = 'course.php'">
        </p>
    </form>
</body>
</html>

我们得到了如下界面,点击按钮即可跳转:

29.png

结语

在这次的小项目中,我们从零开始完成了数据库 $WEB$ 网页开发,完美完成了任务。这次的实验耗时三个星期,从零开始的感觉确实很不错。最后希望你喜欢这个$BLOG$!

Last modification:March 21st, 2022 at 10:49 am
If you think my article is useful to you, please feel free to appreciate