学哥量化交易学习
持续学习,提高认知,磨炼技艺,从零基础学编程并跨过量化程序交易的大门。
 返回首页
 
 
0060 PHP代码嵌入到HTML网页当中
作者:学哥
发布时间:2018-10-8
前面2节课全部都是之前写过的程序重新用PHP编程语言来实现。
这节课开始学习如何使用PHP结合HTML网页来实现具体的动态数据网页。
学哥计划做一个学生分数管理功能的网页,首先来做一个一览查询页面。
查询页面上可以输入一些查询条件,例如学生姓名或者科目等信息,点击查询按钮之后,下面显示相应的查询结果,查询结果使用表格的形式来显示。

PHP嵌入HTML的方式
前面几节课都是纯粹的PHP代码,然后通过php命令执行php文件代码的方式来运行PHP代码。 在这一章的第一节课里面,其实已经学习过将PHP代码嵌入HTML网页中的方式,来复习一下: <html> <body> <?php echo "Hello World"; ?> </body> </html> 可以看到,虽然这个文件名最后保存为helloworld.php,但是其本质还是一个html规范格式文件,因为最终这个文件的内容是要显示在浏览器当中的,所以起本质仍然是一个html规范文件。 PHP代码的作用,仅仅是通过动态编程语言生成需要的数据或者是显示格式。 可以这样理解,PHP代码在服务器端运行,运行结束后的文件内容是HTML内容。这样的好处不言而喻,可以根据需求对每一个客户端浏览器生成完全不同的网站内容。 上面的代码,其实也可以完全用PHP代码来实现: <?php echo "<html>"; echo "<body>"; echo "Hello World"; echo "</body>"; echo "</html>"; ?> 这段代码运行起来的结果,和上面的一段代码运行的结果是一模一样的。 这也就是说,在PHP代码里面,不在<?php ?>这组开始和结束标签里面的内容,其实就是默认相当于使用echo输出的方式返回给浏览器的。这也是PHP的一种默认的代码规范。 出了echo函数外,使用其他的标准输出函数,也是类似于echo一样,将输出内容返回到浏览器的。例如print函数、print_r函数、var_dump函数等等。只不过输出的内容如果不符合html规范的话,可能显示在浏览器里面就不是期望的样子了。
编写一览查询页面
创建2个文件studentlist.php文件和student.css文件。 参照之前的index.html和index.css样式,编写html文件和显示样式。 先通过div分成上下3个区域,最上面显示一个标题“学生信息查询”,然后下面2个div分别显示查询条件和查询按钮。 查询条件如下:姓名(文本输入)/性别(单选)/科目(多选)/分数段(下拉框选择)。 下面的区域显示查询一览结果,使用table显示,第一行是表头,显示下列数据: ID/姓名/性别/科目/分数。 修改studentlist.php文件: 修改student.css文件: 将这2个文件部署到本地服务器的相应目录中,然后启动本地Web服务程序,然后通过浏览器访问这个php网页: 然后在下面一行的td里面编写显示查询一览结果的table。 显示下列数据:ID/姓名/性别/科目/分数。 第一行是表头,第二行是数据。表头和数据的显示样式可以不一样,以示区别。 修改studentlist.php文件: 修改student.css文件,新增下列代码: 刷新网页: 可以看到网页中显示了一个表格,内容是学生分数查询结果。 将数据行复制多行,并且让奇数行和偶数行显示不一样的底色,这样看起来更美观。 修改studentlist.php文件: 修改student.css文件,增加一个样式tdb: 刷新网页: 可以看到表格显示了多行数据,并且行之间有明显分隔。
使用PHP代码循环显示一个table的数据
通过编写静态html内容的方式,可以完成显示样式的编码。 然后将这里的多行显示内容修改为用PHP代码来动态生成。 首先将刚刚增加的4行数据行删除,只保留一行数据。 然后,在这个数据行的前面和后面分别增加PHP代码,将这行数据放入一个for循环当中,也就是让这行数据重复显示5次。 修改studentlist.php文件: 刷新网页: 可以看到,页面显示5行完全一模一样的数据。这就是PHP代码的威力。 如果要将5行变成100行,也只需要修改一个数字即可。而如果是纯粹的HTML代码,要重复100行的话,也要花很多时间进行复制粘贴。 如果要将奇数行和偶数行的显示变得不一样,可以这样修改: 首先设置一个用于显示样式是tda还是tdb的变量,名字为tds; 然后根据当前行是偶数行则赋予tds的值为tdb字符串; 然后在需要显示样式的地方,输出这个变量。这样循环当中,当变量$i变化时,对2求模的结果会是0或者1,也就是奇数还是偶数,这样变量tds的值就会变成tda或者tdb,最后输出的时候就会不一样了。 修改studentlist.php文件: 刷新网页: 如果要将这5行的ID和姓名显示的不一样,应该怎么处理呢? 一个简单的办法就是修改显示的内容为跟随当前循环变量来生成: 修改studentlist.php文件,同时调整代码的分行位置: 刷新网页: 可以看到,每一行的ID和名字都不一样了。 当然,在实际项目中,一般是不采用这样的方式的,一般来说,整个数据结果集肯定是一起返回到页面显示的地方,然后通过访问这个数据结果集来嵌入到HTML的table里面来进行显示的。 一般的方式是采用二维数组变量来保存数据结果集的。 增加一个变量$alldatas,然后内容是二维数据,外面一层是每一行的意思,里面一层用键和值来表示不同的字段数据。 然后显示循环内部,通过访问这个二维数组的某个键来获得对应的数据,并通过echo来输出到网页内容中。 修改studentlist.php文件: 刷新网页: 可以看到数据显示了5行,每一行的姓名都是按照数组变量中的值来进行显示。通过这样的方式,可以很方便的显示出后台数据。 但是有一个不正确的地方,那就是数据的行数长度为5,代码仍然是用for循环5次,加入数据的行数长度不是5,那么这里for循环就不正确了。应该改为foreach针对二维数组变量进行遍历循环,这样才能完全按照存储变量的数据来显示行数和内容。 修改循环方式和变量显示,同时将其他的字段都修改为按照这样的方式来显示。 修改studentlist.php文件: 刷新网页: 可以看到,所有的显示内容都是依赖于数组变量里面存储的值了。只要修改这个变量里面存储的数据,网页就会显示不同的内容了。 这就是动态网站的精髓之所在。
编写各个查询项目和查询按钮
接下来,编写上面的查询条件和查询按钮。 在3-4这一节当中,大致介绍了各种输入项的编写方式,来复习一下: <input type="text">可以在网页上显示一个文本输入框。 <input type="radio">可以在网页上显示一个单选按钮。 <input type="checkbox">可以在网页上显示一个多选按钮。 <input type="submit">可以在网页上显示一个按钮。 使用select元素可以显示一个下拉框。 <select> <option>选项1</option> <option>选项2</option> </select> 以上代码可以在网页中显示一个下拉框选项,里面有2个选择项目。 按照以上方式,在上面区域中增加下列查询条件和一个查询按钮。 姓名(文本输入)/性别(单选)/科目(多选)/分数段(下拉框选择)/查询按钮。 首先来规划一下这5个项目如何摆放在页面中。 打算将查询按钮放在最右侧,然后左边分成上下2行,上面一行分成3列,分别显示姓名和性别和分数段; 下面一行由于是科目多选,需要的长度比较长,因此下面一行占用3列宽度,这样正好利用table的合并单元格属性来实现。 首先,写好table的各个tr和td的分布,将边框显示出来,验证排版是否正确: 修改studentlist.php文件: 刷新网页看看效果: 然后,编写所有的查询条件和查询按钮: 修改studentlist.php文件: 修改student.css文件: 刷新网页看看效果: 可以看到,查询网页已经基本成型了,那么接下来就是实现点击查询按钮之后的功能,也就是根据输入不同的条件,返回不同的查询数据结果。
学哥量化交易学习团队
   致力于:持续学习,提高认知,磨炼技艺,持续输出高质量的教程和课程,帮助更多的人从零基础学编程并跨过量化程序交易的大门。
零基础学编程Python入门课程
课程包含以下内容:
1.图文教程《零基础学编程入门-从Python到Web网站.pdf》,学哥原创版权,共计1024页高清图文教程。
2.视频课程《零基础学编程Python入门》,学哥原创版权,共计24节课45个高清视频。
3.视频教程《玩转魔方》,学哥原创版权,可以送给孩子,共计16个高清视频。
4.图文教程《如何寻找编程相关的电子书下载资源.pdf》。
5.加入学哥编程学习辅导QQ群在线交流。

客服 10:00-17:00
QQ: 44556287
微信公众号
学哥量化交易学习
 
  微信公众号:学哥量化交易学习     QQ群1:603559164    客服QQ号:44556287
工信部备案/许可证编号:沪ICP备15050545号-4