信息系统的大作业选的是 教室预约管理系统

功能:

  • 用户 登录,分为 管理员普通用户
  • 用户 搜索预约教室,以及 取消预约
  • 管理员对预约进行审核,可以 取消用户的预约

设计:

  • 页面用HTML实现
    • 登陆界面
    • 预约主界面
    • 用户管理界面
    • 搜索界面
    • 后台管理
  • 数据库建三个表:
    • 用户表:ID、name、password、authority
    • 教室表:Id、zone(west\east)、roomnum、size、adminID
    • 预约表:ID、roomnum、username、ordertime

如何交互

页面有了,数据有了,如何把两者结合起来,与用户进行交互呢?因为没有接触过后台,所有很长一段时间里一直不得其解,学长听我说在做这个作业,撂下句“那个很easy”,留下我在风中凌乱了好久……,后来进行实现时,果真如他所言,比想象的容易很多。

新手困惑

我在学习很多新的内容时,多数情况像是无头苍蝇,四处乱撞,因为理解不了当前所学的内容在这一门技术中承担的任务,从头开始学,效率低,效果还预见不了,例如这次的信息系统,两三天的时间就得完成,PHP的语法看一遍,复习下mysql的语法,然而看完语法之后该怎么做还是一头雾水,如果有人能带着自己从前到后用几分钟梳理下可能就不会这样了,而且单凭借Google+度娘,无法做到很短时间内对一门技术在宏观上进行详细的了解,大多数的博主写的文章是站在自己的角度,然而站在小白的角度,看到的信息可能会非常少,甚至与作者的立意相差甚远。

新手课程

如果你有这样的困扰,我建议你可以看一下慕课网的PHP和Mysql关系揭秘,这个作者用一个文章发布系统很详细的阐述了PHP、Mysql、HTML如何结合,看完之后如果对于前后台的关系有更清楚的认识,请给作者点赞。

访问数据库前

  • 连接数据库
    PHP内置了大量的Mysql函数,多数操作需要通过这些内置函数完成。访问数据库之前需要连接数据库,,你得告诉后台你的数据库的地址,以及用于登陆数据库的用户名与密码。
    $con=mysqli_connect(HOST,USERNAME,PASSWORD);,连接函数连接成功时会返回连接标识符,失败则返回false。
  • 选择数据库
    进入数据库,具体用哪个数据库呢,这时候选择需要使用的数据库,上一步的连接标识符在这一步就有作用了,选库的函数有两个参数:连接标志符、目标库名。
    mysqli_select_db($con,'roomis')
  • 定义字符集
    避免输出乱码,定义编码格式为UTF-8。
    mysqli_query($con,'set names utf8')

获取表单内容

表单输入

1
2
3
4
5
6
7
8
9
10
11
12
13
  <form role="form" class="col-md-12 " method="post" action="login.php" style="margin-top: 50px;">
<div class="col-md-12">
<span class="col-md-1 col-md-offset-4 text-center" style="line-height: 30px;font-size: 20px;"> ID:</span>
<input class="text-center center-block col-md-2"name="id" style="line-height: 30px;border-radius: 5px;"></input>
</div>
<div class="col-md-12" style="margin-top: 30px;">
<span class="col-md-1 col-md-offset-4 text-center" style="line-height: 30px;font-size: 20px;"> 密码:</span>
<input class="text-center center-block col-md-2" name="password" type="password" style="line-height: 30px;border-radius: 5px;"></input>
</div>
<div class="col-md-12" style="margin-top: 30px;">
<input type="submit" class="col-md-2 col-md-offset-5 btn btn-default"/>
</div>
</form>

上面是登陆界面的表单代码,表单的method属性有两个属性POSTGET,这里使用POST属性。action指向PHP写的登陆程序,每个输入框都需要names属性,否则输入的内容后台会获取不到

后台获取

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
require_once('connect.php');
$userid=$_POST['id'];
$password=$_POST['password'];
$selectuser="select * from user where username = '$userid'";
$query=mysqli_query($con,$selectuser);
if($query&&mysqli_num_rows($query)){
$userinfo=mysqli_fetch_row($query);
if(!strcmp($userinfo[2],$password)){
if($userinfo[3]){
setcookie("loginname",$userinfo[1]);
echo"<script>alert('登陆成功');window.location.href='user.php'; </script>";
}else{
setcookie("loginname",$userinfo[1]);
echo"<script>alert('登陆成功');window.location.href='admin.php';</script>";
}
}else{
echo"<script>alert('密码错误');window.location.href='index.php'</script>";
}
}
else{
echo "<script>alert('用户ID错误');window.location.href='index.php'</script>";
}
?>

我把连库、选库、设置编码格式的代码放在了connect.php文件里,数据库操作之前都需要先进行引用。
表单提交的数据都保存在$_POST[]这个关联数组中,用name属性进行访问

1
2
$selectuser="select * from user where username = '$userid'";
$query=mysqli_query($con,$selectuser);

将Mysql语句放在$selectuser,通过PHP的内置函数mysqli_query执行。操作不同,函数返回值也不同。

  • 查询语句:
    • 成功:返回资源对象
    • 失败:返回false
  • 增删改语句:
    • 成功:返回True
    • 失败:返回false
1
2
3
4
5
6
7
8
9
mysqli_query(connection,query,resultmode);

参数:
connection //必需。要使用的 MySQL 连接。即之前连库时传回的连接标识符
query //必需,需要查询字符串。
resultmode
//可选,这里没填。一个常量。可以是下列值中的任意一个:
MYSQLI_USE_RESULT //如果需要检索大量数据,请使用这个
MYSQLI_STORE_RESULT //默认