开发者学堂课程【Ajax 前端开发入门与实战:PHP 的基础语法_获取学生成绩案例】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/595/detail/8522
PHP 的基础语法_获取学生成绩案例
内容介绍:
一、网站的分类
二、获取学生成绩案例
一、网站的分类
1、静态网站
全部由 HTML 代码格式页面组成的网站,没有数据库的支持,在网站制作和维护方面工作量较大。
2、动态网站
动态网站并不是指具有动画功能的网站,而是指网站内容可根据不同情况动态变更的网站。
所谓的不同情况就是请求的参数不同。请求分为 get 请求和 post 请求,不同的请求有不同的特点,Get 请求,参数在 URL 后面,多个参数用 & 进行连接。
Post 请求参数在请求体中。在获取参数当中值的时候,对于 php 使用多了下划线get 或者多了下划线 post 来进行参数值的获取。
重点是要理解第一块和最后一块的理解。hs 一般情况下动态网站通过数据库进行架构。一般动态网站体现在网页。
一般是以 asp, jsp, php, aspx 等结尾,动态网页以数据库技术为基础,可以大大降低网站维护的工作量,维护方便。
二、获取学生成绩案例
1、在 php 目录下创建一个文件夹,命名为 score,score 英文单词的含义是成绩的意思,score 下面创建一个新的文件,叫 getscore.html,这个是作为查询学生信息的入口,先把标题写出来,查询学生的成绩,在 body 把相关信息也显示出来,h1 标签,
请在下列输入框中输入学生的考号进行查询,在它下面给它一个输入框,应该可以想到输入完之后,是需要点击一个按钮进行提交,
所以需要给它一个 form 表单,除了 action 还有一个 method,method 它有两个值,一个是 get 一个是 post,默认值是 get,在 form 表单给它一个提示,输入一个考号,input 标签,type=text,name=code,最后面输入一个换行,最后给它一个 input type=submit,name 不写,因为这里是一个按钮,输入 value= 查询,接着点击查询按钮时会提交到一个界面,由这个界面进行学生信息的具体查询,提交到哪一个界面呢?
可以在 getscore 同级目录下面创建一个新的文件,命名为 result.php,注意是以php 结尾的一个文件,因为接下来要做的事情可能要查询数据库,根据考号来查询数据库里面一个相关的信息,来做界面具体的展示,所以要以一个 php 的方式来进行一个文件的结尾。需要做事情是根据学生的考号来查询数据库,得到数据之后进行返回的一个操作,对于 getscore 它需要访问的一个界面肯定就是 result.php
代码如下:
<! DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>查询学生的成绩</title>
</ head>
<body>
<h1>请在下列输入框中输入学生的考号进行查询:</h1>
<form action="result.php" method="get">
输入考号:<input type="text" name="code"><br>
<input type="submit" value="查询">
</ form>
</ body>
</html>
通过 get 方式进行请求,测试一下界面的效果。打开浏览器,刷新一下,有一个使用过的文件夹,输入相关的一个信息,点击。
查询之后,确实访问的就是 result.php 等于所输入的字符串。
需要注意 result.php 是 php 的一个文件,这个文件正常是由后端的开发师进行编写,因为到时候需要在这个文件中查询数据库或者还有其他的一些复杂的操作,但是这一部分工作应该是由后端的开发师完成的,但是在后端开发师编写代码之前,前端开发师可能需要先把相关的界面样式先给它写好,可以在这个地方使用一些假数据,界面的样式给它写好,学生成绩结果的界面,给它一个 div,div 下面给它张三成绩如下,div 下面给它一个 ul,ul 跟上很多个 li,可能学生有很多门学科是需要展示的,比如第一个语文112分,接着数学132分,最后是英语72分,这就是所写的界面,完全是 html 界面。
代码如下:
< !DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学生
成绩结
果</title>
</head>
<body>
<div>
<div>
张
三
成绩
如下</div>
<ul>
<li>珸文: 122分</li>
<li>数学: 132分</li>
<li>英珸: 72分</li>
</ul>
</div>
</body>
</html>
此时注意角色是前端工程师,并不是后台工程师,需要做的就是把相关的界面写好,样式配好,再由后端的开发师介入。
首先 getscore 这个界面是前端工程师来写的,getscore 的这个表单当中它将会提交到 result.php,result.php 是由后端工程师开发的,但是在后端工程师开发之前,是由前端开发师先把界面的结构写出来,界面的样式配置出来,可以测试一下,刷新页面,可以发现张三的成绩如下。
如果认为样式不好看,可以在 style 当中进行配置,先把 ul 相关的样式配置一下,list-style:none 可以把小圆点去掉,对于标题可以进行文字大小的操作,在div当中 class=title,把文字用红色进行表示,输入 color:red,再刷新界面,会显示的好看些。
代码如下:
<!DOCTYPE html>
<html lang=" en">
<head>
<meta charset="UTF-8">
<title>学生
成绩结果
</title>
<style>
ul{
list-style: none;
color: red;
}
.title{
font-size: 20px;
}
</style>
</head>
<body>
<div>
<div class="title">
张三成绩
如下</div>
<ul>
<li>
语
文: 122分</li>
<li>数学: 132分</li>
<li>
英语
: 72分</li>
</ul>
</div>
</body>
</
html
>
</head>
<body>
这个就是前端工程师所做的事情,最先使用一些假数据,把这个界面的效果做出来,之后就是把这个界面给后端工程师,后端的工程师会在前端工程师的界面之上做相关的 php 代码的编写,php 代码有时候是可以和 html 代码进行结合使用的。
现在就进行角色的转变,实现 php 当中一些代码的结构,注意现在的角色不是前端工程师,是后台的工程师,需要根据学生的考号查询数据库,得到数据之后进行返回显示的一个操作,所以可以写上 php 相关的一些代码,在这里需要获取到传递过来的学生的考号,学生的考号通过 url 的方式,也就是 get 请求传递到result.php 当中,通过 $code = $_ GET[" code" ] ;的方式获取到 url 当中的参数,查询数据库,先不把数据库相关的内容引入进来,先用一些数据进行模拟,用二维数组模拟,准备一个模拟数据,
注意的是,按道理数据应该是从数据库获取的,这里进行简单的处理,接着可以往这个数字当中填充一些值,用一个二维数组来模拟考生的具体信息,也就是这个学生的考号是123,让它对应的依然是 array,依然是数组,但在数组当中可以把考号对应的学生信息展示出来,比如第一个学生信息叫做张三,接着是一个语文的成绩102分,第二个成绩数学89分,接着是英语成绩是143分,这是一个二维数组,再来一个考生信息,名字进行变化,
代码如下:
< ?php
//准备模拟数据,注意的是,按道理数据应该是从数据库获取的,这里进行简单的处理
$data = array();
$data["123"] = array("name"=>"张三” ," chinese"=>"103" ,"math"=>"89" , "english"=>"143");
$data["234"] =
array("name"=>"李四" , "chinese"=>"123", "math"=>"69",
"english"=>"43");
$data["345" ] = array("name"=>"王五" ,”chinese"=>"83",'math"=>"129" ,"english"=>"63"); T
$code = $_ GET[" code"];
//查询数据库
?>
现在有数据了,再通过 get 的方式来获取传递过来的考生信息,比如在这个地方输入123,点击查询。
在链接中要获取到123,然后把123在数组当中进行下标索引的一个查找,注意在使用变量的时候,要加上 $ 符号,$result 对应的就是这一条数据array("name"=>"张三” ,"
chinese"=>"103" ,"math"=>"89" , "english"=>"143");
找到了这一条数据之后,接着就可以把它变活起来了,张三不能写死,成绩如下可以写死的,是根据所传递过来的有所差异,可能叫做张三,可能叫做李四,可能叫做王五,
所以在这个地方需要使用到 $result 的值,可以在 html 界面当中嵌入 php,再加入一个 echo $result["name"] ,就可以把张三这个文字显示过来,它会根据所传递过来的 code值而去加载对应的数据,所以成绩都可以使用类似的方式来进行动态数据的一个变化,输入语文成绩,数学成绩,英语成绩,把对应信息补齐,这就是后端工程师所需要做的事情,它依赖于前端所写的界面,依赖于前端所做的配置的样式,它只需要做一件事,就把里面的这些数据变活起来,回到界面当中,刷新一下,输入123,张三的成绩就已经出现了。
输入345,王五的成绩就显示出来了,访问的依然是同一个 php 界面。根据所请求的参数不同,加载对应的一个数据。
其实后端工程师还需要做一些考虑错误的事情,比如随便说一个查询的地方,它就报错了,因为考号这样一个数字在数据库当中根本就不存在,在这个地方需要考虑到考号不存在的情况,以下这部分是在数据当中有学生的情况之下才需要进行的一个显示。
<div>
<div·class="title">< ?php ' echo $result["name"]· ?>成绩如下</div>
<ul>
<li>语文: <?php ' echo $result["chinese"] ?>分</li>
<li>数学: <?php . echo $result[ "math"]
?>分</li>
<li>英语: <?php ' echo $result[ "english"] ?>分</li>
</ul>
</div>
如果没有这样一个学生的考号,就需要做另一种显示,所以这个地方必然会有一个条件,就是判断 if else ,所以输入 if(array_ key_ exists(key, $data)) 判断一个数组是否存在小标索引,所以 array 是 $data ,要查询这样一个数组,有没有 $code 这样一个索引,$code 是传递过来的一个值,现在要查询数组有没有这样一个下标索引,有的话才要做界面显示,把花括号去掉,就是证明 if 下面的代码都属于if的条件判断,可以再输入一个 php 标签进行结束,这样只要满足条件,就可以在界面中输出 div,else 代表并没有在数组中有这样一个字段,再将花括号去掉,在下面把花括号补全,在中间就是属于 else 里面,又是在 php 标签之外,所以可以写html 的标签,加一个 div 标签输入该学生考号不存在,这样做完之后就做了一些兼容的处理。
代码如下:
<?php
if(array_ key_ exists($code, $data))
{
$result=$data[$code ];
把代码插入到这里面
,
只有数组当中有这样一个下标索引
,
才能通过下标索引拿到对应的数据
。
?>
<
div>
<div·class="title">< ?php . echo . $result[ "name"]· ?>成绩如下</div>
<ul>
<li>语文: < ?php . echo· $result["chinese"] . ?>G</li>
<li>数学: <?php . echo . $result["math"]· ?>G</li>
<li>英语: < ?php . echo . $result["english"]· ?>G</li>
</ul>
</div>
< ?php
}
else
{
?>
<div>该学生考号不存在</div>
<?php ] ?>
< /body>
</html>
保存好后,做测试,输入123可以查询到张三的信息,输入234可以查询到李四的信息,再返回随意输入一个考号,会显示该学生考号不存在,也就是跑到一个 else
{
?>
<div>该学生考号不存在</div>的分支当中,这就是典型的 php 和 html 相互结合进行使用,前端工程师和后端工程师是有分工的,前端工程师主要做的是界面以及样式的配置,把界面写完之后,把相关的样式写完之后发送到后端工程师,在此基础之上做一个 php 相关代码的一个编写操作,会引入相关的一些操作,这个就是典型的前端和后端结合进行使用的操作,要注意的是在编写代码时候的一个角色变化,对于 get 参数请求传递过来,如果是使用 post 参数请求,输入123发现 url 地址栏后面没有参数,在请求体当中刷新以下的界面。
在 headers 下面有一个 form data code=123,既然是通过 post 的请求来进行一个数据提交,对于 result.php 里就不能通过 $ 下划线 get,应该通过 $ 下划线 post 参数的一个获取,回到上一个界面当中,就可以得到一个正确结果的显示。
Method 之后是写 get 还是 post ,这个是由后端工程师决定的,后端工程师如果在 $ 下划线 get 来获取到请求参数的值,那在这个地方只能写 get ,相反 post 也是,所以很大的程度是取决于后端工程师它是用什么方式来获取数据,在决定用什么方式来获取数据之后,它会告诉前端工程师,这一块的参数是用什么来提交的,当得到这个信息之后,就可以直接选择用 get 还是 post 。