写给产品经理及UI设计师的PHP教程丨文章管理系统
【文章摘要】这一节就要讲到如何用一个可视化的界面操作表单来提交栏目数据,以及时间的获取和时间的格式化。
相关推荐
写给产品经理及UI设计师的PHP教程(一)
写给产品经理及UI设计师的PHP教程丨文章管理系统-创建栏目(1)
上一节我们学习了如何通过指令插入数据。我们试想一下一般一个创建栏目这样的功能操作流程是如何的。
① 从某个页面点击创建栏目按钮
② 进入创建栏目页面
③ 输入栏目名称
④ 点击提交按钮
⑤ 提示栏目创建成功
⑥ 回到某个页面
那插入数据这段指令应该是在什么时候执行呢?相信大家也想到了,应该是在④后⑤前执行。
根据这个我们可以联想出如下一句话。如果点击了提交按钮,那就执行插入数据的指令,其他情况下不执行插入数据的指令。
上面这句话就是程序中的条件语句的基本形式了。
用PHP的格式表现出来的话如下:
if(点了提交按钮) {插入数据} else {啥也不干}
if代表如果,else代表其他,小括号里是需要满足的条件,大括号里需要执行的事情。很简单吧?
控制器页面
OK回到上面的六个步骤,可以看得出来有某个页面和创建栏目的页面。但是一般程序中还会有一个为了优化结构而存在的控制器页面。OK那一共就是三个页面了。
在DW中按键盘CTRL+N键创建PHP页面。如下图所示:
在<body>和</body>之间写上创建栏目,charset改成utf-8,保存为category_add.php到我们的站点目录htdocs\cainiao下,如下图:
再创建一个PHP页面,代码改成如下图,保存为category_list.php
其中<br />代表着换行,跟WORD中的Shift+Enter键的操作是一样的。<a>标签代表的是链接,href中定义需要链接到的页面地址。
因为是PHP教程,HTML的部分就不会讲的太细了。我们学习这个教程的主要目的是通过学习程序来培养逻辑思维能力。HTML和CSS的技术是用于页面的展现效果,跟逻辑思维的部分关系不是很大,所以会一带而过。
现在我们的站点目录下应该有3个文件了。
打开index.php文件,删掉插入数据的那行代码,也就是INSERT INTO category部分,然后把代码改成如下图。
可以看得出来有两部分代码是这次新增的,一个是 error_reporting(E_ALL ^ E_NOTICE); 另外一个是 if 条件语句部分。
error_reporting(E_ALL ^ E_NOTICE); 是用来屏蔽PHP的一般提示,错误提示是会显示出来的。大家可以自己试试删除这行。
保存好代码访问 http://127.0.0.1/cainiao/index.php 可以看到我们进入了栏目列表页面如下图:
点击下方的创建栏目按钮进入到创建栏目页。如下图:
细心的同学可能已经发现了,通过浏览器地址可以看出,一直也没有离开index.php页面,但是显示的内容却是category_list.php和category_add.php两个页面的内容。
这就是include(‘category_add.php’);和include(‘category_list.php’);的功劳了。include是包含,列入的意思。通过include命令把页面category_add.php和category_list.php页面包含到了index.php页面内。
但是为什么这两个页面没有同时被包含进来了呢?我想大家应该已经猜到了,就是if条件语句的作用。当条件为 $_GET[‘act’]==add 的时候我们包含了category_add.php页面,其他时候包含了category_list.php页面。
那 $_GET[‘act’]==add 又是什么意思呢?可以从上图中看出浏览器地址栏的末端index.php后面还有?act=add这样一段,$_GET[‘参数名’] 是PHP从当前链接(URL)地址获取参数值的方法。?act=add中act是参数的名称add是参数的值。
那$_GET[‘act’]==add 这段代码的意思就是从浏览器获取到的参数act的值是等于add的时候。
备注:在程序中两个等号才是等于的意思。
关于变量、URL地址、等号等概念在下一节会重点讲,在这里就先略过了。
整个条件语句总结出来就如下图所示了。
PHP中可以通过双斜杠 // 添加备注信息,备注不会影响程序运行,PHP程序会当他不存在。
现在打开category_add.php增加如下代码:
保存好之后从浏览器打开 http://127.0.0.1/cainiao/index.php ,点击创建栏目进入创建栏目页面,可以看到如下结果。
代码<hr />是一条横线。
从<form>到</form>部分是我们需要操作的部分,称之为表单。文本框和按钮可以理解成表单中的元素,元素有很多种类型(文本框,提交按钮,文本域,下拉选项,单选按钮等等)。我们本次用到了两种类型,input type=”text” 和 input type=”submit”,即文本框和提交按钮。点击提交按钮将把文本框中的参数名为cat_name的参数值传递到服务器上,并跳转到form action中的地址?act=insert中去。当action中的地址格式是问号开始的时候,将会把问号开始及后面的部分全部加到当前地址后方。也就是把?act=insert加到了地址 http://127.0.0.1/cainiao/index.php 后面。也就是action=”?act=insert”和action=”http://127.0.0.1/cainiao/index.php?act=insert”是一样的意思。
form中的method是提交的方法,常见的有post和get两种,get将会把参数值传递到地址栏中并显示出来,post会把参数值隐藏起来,相对来说post方法更为安全一些。
input标签中name是参数名,value是参数值,因为在提交页面不需要默认值所以value=””部分是空的。
我们点击提交按钮可以看到如下变化
可以看出地址栏的URL地址变成了form action中的地址?act=insert,之前有说过当点击了提交按钮之后执行插入数据的指令。那如何去判断有没有点击提交按钮呢?就是通过地址栏的这个地址来判断了。当act的值从add变成insert的时候执行插入数据的命令。
打开index.php页面增加如下代码
红框部分就是本次新增的代码,在if和else中间这次多了个elseif,当我们所需要判断的条件有多个的时候我们就会用elseif来判断第一个条件以外的条件。elseif可以出现N次,如 if(条件一){指令一} elseif(条件二) {指令二} elseif(条件三) {指令三} elseif(条件四) {指令四} else {指令五} 以此类推。
第12行通过echo命令输出了一段javascript代码用于提示栏目添加成功,并返回到index.php页面。
INSERT INTO 部分我们上一节中已经讲过了,不知道有没有同学发现上一节我用的是VALUE这一节我用的是VALUES,其实在高版本的MYSQL里这两种写法都是可以支持的,不过在一些低版本里只能支持VALUES,所以建议还是都写VALUES吧。
$_POST[cat_name]和$_GET方法的道理是一样的,同样用于获取参数值,只不过一个是在地址栏中看不到的,一个是能看到的而已。通过$_POST[cat_name]获取了,在上一页通过表单提交上来的参数值。不过在这里$_POST[cat_name]不能写成$_POST[‘cat_name’],因为外面已经用了一个单引号括起来了,不可在里面再写一次。
保存好之后从http://127.0.0.1/cainiao/index.php开始一步一步添加栏目试试吧。添加成功之后到phpmyadmin里查看数据是否有了没。
我想大家都应该成功了吧?嗯,现在就差一个时间的添加了。当前操作时间总不能像栏目名称一样我们打字进去吧。下面来讲一下关于时间。
时间的获取以及格式化
在DW中新建一个PHP页面,把原有的代码都删掉之后输入如下代码,保存为time.php
time();是PHP中自动获取当前时间的代码,我们通过echo输出了获取到的当前时间。
打开http://127.0.0.1/cainiao/time.php 可以看到页面中有一串不明觉厉的数字。不过,没错,这就是时间。在系统中时间是以这种形式保存着的,这个叫unix时间戳。
我们需要把这串数字格式化成我们能看得懂的样子。代码如下
再次运行可以看到时间格式变正常了。但是大部分同学会发现这个时间和当前时间不一样,差好多小时呢。没办法,谁让程序是老外发明的呢,显示的自然也是老外的时间了。我们需要增加一段代码把时间定位成中国时间。代码如下。
PS:Y-m-d H:i:s大小写要注意,都可以改成大写或者小写,但是所代表的结果都是不一样的。如果有兴趣可以查看PHP手册种的date();方法。
好了,现在轮到把时间跟栏目名称一起提交上去了。index.php页面代码改成如下
在这里我们定义了一个叫nowtime的变量,并把获取到的时间保存到变量nowtime里。
之前也说到过在程序中两个等号才是等于的意思,一个等号的作用的是把等号右侧的结果保存到等号左侧的变量里,也就是赋值的意思。
赋好值的变量我们可以在程序中“随意”调用,在这里我们就在INSER INTO这段代码中调用了nowtime这个变量。
到这里,我们创建栏目的功能算完成了。
留个作业噢,在category表中多加几个字段,并在form表单中多增加几个元素同时提交更多的数据试试。
PS:自己联系的时候建议再建一个独立的文件夹作为新站点来联系,cainiao文件夹就一直用于学习教程用。
后面我们就会陆续讲解如何把添加上去的数据查询并显示出来,如何修改已添加的数据,如何删除数据等功能。敬请期待!