0062 读写数据文件来实现学生分数信息的创建和查询

上节课使用PHP和HTML代码完成了一个学生分数信息查询一览网页。

这节课来学习将数据存放到服务器的文本文件中,然后新增一个新建页面可以生成这些数据。

保持检索条件输入值

先来解决上节课的2个遗留问题:

1.页面初始化时没有数据,表头的宽度不对。

2.输入的查询条件在点击查询按钮之后不能记住,比如,选择了科目,点击查询之后,不能看到刚刚选择的是哪些科目,这样条件和结果就匹配不上。

第一个问题比较简单,只需要给表头的那行增加上设置宽度的CSS样式就可以了。

studentlist.php修改如下:

刷新网页:

第二个问题的解决办法:在这里增加一个 value=""的属性值,然后在通过$_POST读取到用户输入的值之后,将值保存到变量$studentname里面,就可以实现点击查询按钮之后,可以保持上次用户输入的检索条件的值了。

studentlist_do.php修改如下:

studentlist.php修改如下:

刷新网页,输入检索条件:

点击查询按钮:

可以看到,所有的输入的查询条件数据都保持住了。

将数据存放在文件当中读取返回

来看一下检索的逻辑,目前还仅仅是一个最简单的根据姓名不同返回不同数据,这离真正的数据查询还很远。

首先,数据的存储肯定不能直接在代码里面写成固定的,肯定要保存在某个地方。那么接下来,就来实现将这些数据存储到文件当中去。然后做一个新建学生分数信息的页面,可以将用户输入的信息保存在这个文件中,然后一览查询页面就从这个文件中把数据读取出来,基本实现一个动态数据的管理功能。

先来将数据复制保存到一个文本文件studentdatas.txt中。

创建一个文本文件,将数据按照一行一个数据记录,字段之间用逗号分隔的形式输入。

分数信息调整一下,方便后面的检索条件查询。

studentdatas.txt修改如下:

然后修改php文件,将固定的数据定义修改为从这个文本文件读取数据。

读取的时候,注意进行字符串分割操作并设置到相应的键值上。

studentlist_do.php修改如下:

刷新网页,输入检索条件姓名为b:

点击检索按钮:

可以看到,显示的数据是文本文件中保存的值。

通过这样的方式,实现了程序逻辑和数据存储的分离,如果要修改显示数据,就很方便了,只需要改数据存储文件就好了,不需要修改程序逻辑了。

编写一个新建学生分数信息的页面

接下来,编写一个新建学生分数信息的页面,收集用户输入的信息,并追加保存到数据文本文件当中。

页面的输入控件的样式可以参考3-4这一节的样式。

新建2个文件studentcreate.php和studentcreate_do.php。

studentcreate.php修改如下:

student.css修改如下:

studentcreate_do.php修改如下:

为了写入数据逻辑正确,在studentdatas.txt最后增加一个空行:

为了不在查询页面出现查询出空行数据,修改studentlist_do.php:

将此文件部署到本地Web服务器目录下,注意修改studentdatas.txt的文件权限为全部可以读写:

打开浏览器访问此文件url:

然后每个项目都输入相应的的数据:

点击保存按钮:

可以看到网页显示保存好了,然后到服务器后台查看数据文件:

可以看到数据已经被添加到文本文件当中了。

然后到一览网页中,在姓名检索条件输入a,点击查询:

可以看到多出来了一条刚刚创建好的数据记录。

将新建网页链接到一览页面当中

然后修改一览页面,增加一个“新建学生分数信息”的按钮,点击按钮后新弹出一个Tab浏览器窗口显示新建页面。

studentlist.php修改如下:

刷新一览页面:

点击按钮之后:

可以看到通过这种方式将2个功能页面链接起来了。

修改查询逻辑根据条件进行筛选

之前的查询逻辑太简单,需要修改得更真实一些,可以根据输入的姓名进行模糊查询,也就是只要姓名包含了输入的文字则都显示出来,完全不包含则不显示。

例如姓名检索条件输入“张”,则将“张三丰”和“张无忌”给显示出来,其它人不显示。

修改查询逻辑,读取所有的学生记录信息,进行遍历,然后判断姓名是否包含搜索条件的字符串,如果包含则返回此条记录信息。

studentlist_do.php修改如下:

刷新一览网页,姓名输入“张”,点击查询:

利用新增页面,添加一条数据姓名为“张无忌”:

回到一览网页,姓名输入“张”,点击查询:

可以看到,正确的数据被检索出来了。

姓名检索条件修改为“段”,点击查询:

可以看到,正确的数据被检索出来了。

删除姓名检索条件的值,点击查询:

可以看到如果不输入条件,则默认全部数据检索出来。

完成其它查询条件

参照上面的方式,完成其它的检索条件。

性别的判断比较容易,直接等于男或者女即可,如果是全部,则不需要比较全部出来。

分数段的判断可以对分数进行判断即可。

科目的判断可以直接等于科目名称即可。

注意如果有多个条件复合查询的时候,多个条件之间是AND的关系,也就是要同时满足这些条件的数据才能显示。

那么可以先完成1个条件,筛选出的数据作为第2个条件的数据源,后续条件以此类推。

studentlist_do.php修改如下:

刷新网页,性别选择“女”,点击查询:

可以看到,符合条件的数据显示出来了。

性别选择“全部”,分数段选择“75-90”,点击查询:

可以看到,符合条件的数据显示出来了。

性别选择“全部”,分数段选择“全部”,科目选择“语文”和“音乐”,点击查询:

可以看到,符合条件的数据显示出来了。

姓名输入“张”,性别选择“全部”,分数段选择“全部”,科目选择“数学”,点击查询:

可以看到复合条件查询也是正确的了,张无忌的科目不是数学,所以被过滤掉了。

自己新建更多的学生记录信息,然后测试更多的条件组合情况,看看是否都正确。

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20181010A0Z2B600?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券