php mysql数据库驱动_用PHP和MySQL构建一个数据库驱动的网站(五)

news/2024/5/18 23:43:42/文章来源:https://blog.csdn.net/weixin_32390279/article/details/113519051

mysql|数据|数据库

虽然看上去一切都好了,但是我们仍没有达到我们真正地与用户交互的目的,我们的用户应该能够输入任意的信息,并将它交给PHP来处理。接着我们的个性化欢迎页面的例子,我们想要让我们的用户任意地输入他(或她)的名字并将其显示到信息中,要让用户输入数据,我们需要用到HTML的表单。

这儿是表单的代码:First Name:

Last Name:

除了在这里你可以任意输入你的名字以外,这个表单所起的效果和我们上面的第二个连接(在查询字符串中使用firstname=Kevin&lastname=Yank)完全一样。当你按提交按钮(标志为“GO”)时,浏览器会装载welcome.php并自动为你在查询字符串中添加变量和它们的值。变量名就是在INPUT TYPE=TEXT标识中的NAME属性,变量值就是用户输入的相应的内容。

INPUT TYPE=TEXT标识中的METHOD属性是用来告诉浏览器如何在请求中发送变量名及变量值的。GET(就是我们在上面使用的)表示在查询字符串中传递变量,但是还有另外一种选择。将变量显示在查询字符串中并不总是令我们满意的--甚至有的时候在技术上就是不可行的。如果在你的表单中包含了一个TEXTAREA标识用来让用户输入大量的文本,这部分文本也显示在查询字符串中实在是太长了,而且会超过浏览器所能支持的URL的最大长度。另外一种方法可以允许浏览器隐藏地传递信息。这种方法的代码和我们上面看到的表单的代码几乎一样,只是我们将表单的方法从GET变成了POST:

First Name:

Last Name:

这个表单和我们之前的那个在功能上完全一样。唯一的不同是当用户在按“GO”按钮时所装载页面的URL将没有一个查询字符串。一方面,这可以让你通过表单提交大量的数据或者是敏感的数据(例如密码),而不在一个查询字符串中显示出来。另一方面,如果用户将提交表单生成的结果页添加到收藏夹,这个收藏夹是没有用的,因为它不包含提交的数据。另外,附带说一下,象AltaVista这样的搜索引擎总是利用查询字符串来提交查询条件,其主要原因就是为了便于用户将查询结果页添加到收藏夹中,以便在将来进行同样的搜索,因为搜索条件是包含在URL之中的。

这儿讲了利用表单来实现用户与PHP的交互的基本的原理。在以后的例子中,我们将讨论一些更高级的问题和技术。

控制语句

在我们之前看到的PHP的代码的例子中,要么是只有一个单独的向Web页面输出文本语句;要么是一系列的依次执行的语句。如果你用其他语言编写过程序,你应该知道,实际上很少有这么简单的程序。

和任何其他的编程语言一样,PHP也提供了很方便地处理脚本中的“控制流”的方法。就是说,PHP中包含了一些特殊的语句,通过这些语句你可是不受依次执行的顺序的束缚。这种语句被称之为“控制语句”。不理解?不要担心!有一些例子会很好地帮助你。

最基本最常用到的控制语句是if-else语句。它的结构是这样的:

if ( ) {

//如果是真,将执行的语句。

} else {

//(可选)如果是假,将执行的语句。

}

这个控制语可以让我们告诉PHP根据一些条件的真假来决定相应地执行哪一组语句。如果你不觉得我这么做有点空虚,我们可以将我们刚才建立的welcome.php文件修改为:

if ( $name == "Kevin" ) {

echo( "Welcome, oh glorious leader!" );

} else {

echo( "Welcome, $name!" );

}

现在,如果传递给这个页面的name变量的值是Kevin,将显示一个特殊的信息。否则,将显示一个包含输入的name的普通的信息。

需要指出的是,在这个结构中,“else子句”(它指出了if-else结构中条件为假时执行的内容)是可选的。对于上面的例子,如果我们的目的是当适当的名字被输入时,显示特殊的信息,否则就什么也不显示。这段代码应该是这样的:

if ( $name == "Kevin" ) {

echo( "Welcome, oh glorious leader!" );

}

在上面条件中所使用的==是用比较两个值是否相等的运算符。要特别记住的是在这儿你需要输入两个等号。如果你输入的是一个等号,你实际上使用的是前面我们讨论过的赋值运算符,你将不再是对两个变量的值进行比较,而是给变量赋了一个新值(这个操作会附带地返回一个true)。这样做的结果不仅仅是导致这个条件永远是true,它还可能改变我们所要检查的变量的值,这可能会导致很多问题。

防止发生这种错误有一种安全的做法,那就是象下面这样颠倒用来比较的变量和常量的位置:

if ( "Kevin" == $name ) {

这样做的效果是完全相同的,但是当你忘了第二个等号时,我们来看看会发生什么情况。PHP会试图将变量($name)的值插入常量("Kevin")中。因为你不能改变常量的值,PHP会中断并提示一个错误信息,这将立即提示你忘了第二个等于号!

条件可以比单个的比较是否相等来得更复杂。回忆我们修改的welcome.php3,它是可以同时获取firstname和lastname的。如果我们想要为某个特定的人显示一个特殊的信息,我们可以同时比较这两个变量:

if ( "Kevin" == $firstname and "Yank" == $lastname ) {

echo( "Welcome, oh glorious leader!" );

}

只有$firstname的值是Kevin,而且$lastname的值是Yank时这个条件才会返回真。and的意义就是只有两个比较都为真时,整个条件才会返回真。还有一个符号是or,这使得两个比较中至少有一个为真时,整个条件就返回真。如果你对JavaScript和C中的运算符(&&(and)和||(or))熟悉的话,你也可以在PHP中同样地使用它们。

在下面我们将看到一些更复杂的比较。现在,我们只需要对if-else语句有个基本的理解就可以了。

另一个常用的PHP控制语句是while循环。if-else语句使我们可以根据条件选择是否执行一组语句,while循环使我们可以根据条件来决定重复执行一组语句多少次。while循环的基本格式应该是这样的:

while ( ) {

//只要是真时反复执行的语句

}

这和一个没有else子句的if-else 语句非常相象。不同点在于当条件为真时语句执行完后,将不再是接着执行结束符(})后面的语句,而是再次检查条件。如果这个条件仍为真。将会重复执行语句,直到条件不再为真时为止。当这个条件首次返回假时(不管是第几次检查它),将会跳转执行循环后面的语句(在结束符后面)。

这样的循环可以用来处理一个事物的较长的列表(例如存储在数据库中的笑话),下面我们举了一个简单的例子:计数到10。

$count = 1;

while ($count <= 10) {

echo( "$count " );

$count++;

}

我知道这段语句可能看上去挺恐怖,但是我们可以一行行地来看它。第一行定义了一个叫$count的变量并将其赋值为1。第二行是while循环的开始,条件是$count小于或等于(<=)10。第三行和第四行是while循环的循环体,当条件为真时,我们将重复执行它。第三行简单地输出了一$count的值,并在其后加了一个空格。第四行将$count的值加一($count++是$count = $count + 1的缩写--两者的意义是完全一样的)。

现在我们可以看看这段程序是如何执行的了。当第一次检查条件时,$count的值是1,所以条件为真。$count的值(1)被输出,接着$count被赋予了一个新值2。当第二次检查条件时条件仍为真,所以2 被输出,并赋了一个新值3 。这个过程被继续下去,输出了3 ,4 ,5 ,6 ,7 ,8 ,9 直到10 。最后,$count被赋予值11,条件为假,循环结束。最终的结果是输出了这样一个字符串“1 2 3 4 5 6 7 8 9 10”。

在这个例子的条件中我们使用了一个新的运算符:<= (小于或等于)。其他用于数值比较的运算符还有>=(大于或等于),(大于)和!=(不等于)。最后一个也可以使用于字符串比较中。

多用途的页面

如果你想在你建立的网站的每一个网页的顶端都显示访问者的姓名。使用我们前面的自动显示欢迎信息的例子,我们已经基本上成功了一半。现在我们只要对我们示例解决这几个问题就行了:

我们需要在站点的每一个页面都显示,而不是仅仅在一个页面上。

我们无法控制在我们的站点上那一个页面会首先显示。

第一个问题的解决不是太困难的。当我们在一个页面上获得了用户名这个变量后,我们可以在任何请求中通过将其添加到一个查询字符串来传递这个变量:

A link

请注意我们在HTML标识符的中间嵌入了PHP的代码。实际上这是非常常用的。我们已经对echo这个函数很熟悉,但是我们还不熟悉urlencode函数。这个函数的功能是将字符串中一些特殊的字符(例如空格)转换成特定的编码,以使它们能够在查询字符串中显示。例如,如果$name变量的值是"Kevin Yank",其中的空格在查询字符串中不允许存在,urlencode的输出将是Kevin+Yank,在newpage.php中建立$name时,值将会被自动转换回来。

Ok,现在已经可以将用户名传递给我们站点的第一个连接了。现在我们所需要的就是在其第一次出现时,要能获得它的值。在我们上面的例子中,我们已经做了一个HTML页面用来处理获得用户名的表单。而问题是我们不能强迫用户在每一次访问我们的站点时都从这个页面开始。

解决方案是在我们站点的每一个页面都检查是否指定了一个用户名,如果需要,应该提求用户输入用户名。这意味着我们站点上的每一个页面都必须能显示用户名,在未指定用户名时,应提示用户输入。如果你现在就想到了使用if-else语句,那证明你的学习能力真的不错!

我们的“多功能页面”应该根据不同的条件显示完全不同的内容,这个页面的源程序将会是这样的:

Multi-Purpose Page Outline

) { ?>

这段程序初看上去很混乱,但是事实上这仍然是普通的if-else语句,只不过在其中插入了HTML代码,而不是我们之前使用的PHP语句。这个例子说明了PHP的一个很大的优点:你可以自由地选择在什么时候进行或退出“PHP模式”。你可以将看成是返回到“普通的HTML模式”的命令。这样上面的例子就变得很容易理解了。

if-else语句还有另外的一种格式,使用这种格式将使你的程序更易读懂。如果使用这种格式,我们的“多功能页面”的源程序将是这样的:

Multi-Purpose Page Outline

): ?>

Ok,现在我们已经有了所有我们需要的工具,让我们看看我们的站点中的一个样页:

Sample Page

Your name:

This paragraph contains a

link that passes the

name variable on to the next document.

METHOD=GET>

Please enter your name:

在上面的程序中出现了两个新的东西,但是理解它们应该不是太困难的。首先,我们在条件中使用了一个新的函数:isset。当变量已经被赋值(在我们这里也就是指提供了用户名),该函数将返回(输出)一个逻辑真;当变量没有被赋值(在我们这里也就是指没有提供用户名),该函数将返回(输出)一个逻辑假。第二个新东西是在指定FORM标志中的ACTION属性中使用了$PHP_SELF变量。这个变量是自动产生的系统变量之一。具体地说,$PHP_SELF总是被设置成当前页面的URL。当一个表单在提交时指向同一个页面时,这给我们提供一个简单的做法。只不过这时的 $name变量已经被赋值了。

将这一段加到你的网站上的所有网页上后,不管访问者第一次访问的是什么网页,都会被提示输入用户名。只有在输入了用户名并按了“GO”,才能到达他们真正想要访问的网页。输入的用户名会被通过每个连接中的查询字符串传递到之后的各个页面,这样就可以确保只要求访问者输入一次用户名。

结语

在这一章内,我们介绍了PHP的所有的基本语法:语句、变量、运算符以及控制语句。我们的例子是非常的简单。但是事实上PHP的强大功能在于它内置的数百个函数,利用这些函数你可以访问MySQL数据库中的数据来发送邮件,可以通过动态产生的图象来建立PDF文件,你还可以做其他的很多事情。

在第四章,我们将探讨如果利用MySQL在Web上发布我们在上一章中建立的笑话数据库!

f68f2add0b68e4f9810432fce46917b7.png

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_770019.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于阿里云Centos服务器搭建Java网站不能访问的问题

首先阿里云提供的手册是没问题的 手工搭建 然后我在地址栏输入服务器地址之后总是提示无法访问&#xff01; 输入命令 netstat -tunlp&#xff0c;80端口确实是在监听&#xff08;这里不是8080&#xff0c;因为我在tomcat的配置文件里吧8080变成了80&#xff09; 然后查查查&am…

php 四表联查统计,phpb2b研究(四)地区区域表,网站公告

---- 表的结构 pb_areas ---地区表--CREATE TABLE IF NOT EXISTS pb_areas (id smallint(6) NOT NULL auto_increment,attachment_id int(10) NOT NULL default 0,areatype_id smallint(3) NOT NULL default 0,child_ids text,top_parentid smallint(6) NOT NULL default 0,lev…

网站安装打包 软件环境检测与安装[二] 下

这一节主要说安装&#xff01; 1。操作系统 这个应该不用了&#xff0c;没系统也没法运行了&#xff01; 2。IIS安装 这个是重点&#xff0c;最后面介绍&#xff01; 3。framework安装 这个也不用了&#xff0c;工具安装时会先检测&#xff0c;如果没安装这工具也打不开了&…

2015年网站设计将有这十大趋势

每年&#xff0c;网站设计都在快速进步&#xff0c;每天几乎都有新的设计出现。我可以想象得到&#xff0c;2015年将出现最好的网站&#xff0c;包括2014年已经预测到的许多趋势。随着这些趋势在2015年左右实现&#xff0c;现在该是时候让我们预测2015年可能出现的新趋势了。每…

AWWWB 网站克隆器 更新到1.02 修正错误

修正了写入网页时&#xff0c;未能按照原始文件的编码写入&#xff0c;导致显示乱码的问题&#xff1a; 最新版下载&#xff1a;http://www.uushare.com/user/icesee/file/2254609 本文转自斯克迪亚博客园博客&#xff0c;原文链接&#xff1a;http://www.cnblogs.com/SkyD/arc…

入门django———搭建第一个django的网站

背景 最近一直在学Java&#xff0c;每天和各种对象打交道。当够了’渣男’突然想起来好久没有写python了&#xff0c;毕竟python才是我的最爱。另外最近也在搭建ubuntu的caffetensorflowdigits环境&#xff0c;老师也让我们自己学学flask和django。说实话digits真的不好搭&…

Cisco网站学习资源更新

这阵子收到很多Cisco的mail&#xff0c;最近整理了下&#xff0c;发觉Cisco也开始像Microsoft学习了&#xff0c;在提高自己提供的免费学习资料的含金量&#xff0c;更新增了视频培训课程&#xff0c;叫思科技术达人秀类似Microsoft的Technet视频广播。以下内容&#xff0c;均通…

团队-爬虫电影网站-最终程序

托管平台地址:https://gitee.com/w789369/PaChong/tree/master 小组名称:简单 小组成员合照:无 程序运行方法:python 程序运行示例及运行结果:转载于:https://www.cnblogs.com/lws1111/p/7944180.html

企业网站SEO的日常工作小记

各位看官&#xff0c;春节好&#xff0c;拜个晚年&#xff0c;祝各位SEOER晚年幸福&#xff0c;开个小玩笑&#xff0c;书归正传&#xff0c;春节假期回来&#xff0c;各位SEOER想必非常抓耳挠腮&#xff0c;排名较之之前有的小幅下滑&#xff0c;有的干脆挤出几页开外了。那么…

新站上线后应该做哪些有利于seo的工作

seo优化人员一定要重视基础工作&#xff0c;夯实基础会给后期网站优化工作带来很大便利&#xff0c;本篇文章主要是从实操视角审视一下企业网站上线后seoer应该做哪些工作&#xff0c;帮助网站更快获得排名和收录。1.填写网站标题和描述根据企业主提供的需要做的核心关键词来填…

使用LNMP架构部署动态网站环境。

&#xff08;1&#xff09;安装主机具备编译程序源码的环境&#xff0c;他需要具备C语言、C语言、Perl语言的编译器&#xff0c;以及各种常见的编译支持函数库程序。把安装LNMP动态网站部署架构所需的16个软件源码包和1个用于检查效果的论坛网站系统软件包上传到与本书配套的站…

SEO关键词优化:如何理解被百度快速索引?

经常会有SEO人员讨论&#xff0c;为什么我的SEO关键词总是不被快速索引&#xff0c;而实际上这里主要指的是&#xff0c;针对特定关键词的核心内容&#xff0c;那么&#xff0c;它主要涉及如下两个指标&#xff1a;索引快速收录这里值得说明的是&#xff1a;索引并不等于收录&a…

有病毒的u盘文件上传到服务器,还在被u盘病毒困扰?送你15个文件传输网站以及20+u盘工具...

哈喽大家好&#xff0c;我是无知便是罪&#xff0c;专注于收集和分享互联网上不为人知的好东西。今天让我们继续聊一聊文件传输&#xff0c;这要分为两类吧&#xff0c;一种是个人多设备之间的跨平台传输&#xff0c;就像手机与电脑之间&#xff0c;我们前面已经介绍过了。今天…

BAT架构师分享之:大型网站技术架构

2019独角兽企业重金招聘Python工程师标准>>> 早期的网站为了节省成本一般会设计成集中式系统&#xff0c;应用程序、数据库等都部署在一台服务器上。 但随着业务的快速度发展&#xff0c;逐渐出现瓶颈&#xff0c;按一定原则**&#xff08;应用拆分、服务拆分、数据…

仿某某网站模板thinkphp_建网站一般多少钱?300足够了

网站&#xff0c;就相当于公司在互联网的上一个门面&#xff0c;所以其实不管什么行业&#xff0c;公司规模大小&#xff0c;个人建议还是都应该建一个属于自己公司的官网。再说&#xff0c;现在建一个网站真是非常的便宜&#xff0c;不像之前动辄上万&#xff0c;少则大几千&a…

php旅游管理系统,基于Laravel框架开发的旅游网站管理系统PHP源码

源码介绍旅游网站管理系统是一款基于Laravel框架开发的在线旅游网站系统&#xff0c;一个类似企业网站的张家界旅游网站&#xff0c;主要目标是为了实现对张家界的各个景点&#xff0c;文化艺术&#xff0c;当地生活的描述。同时实现可以登陆注册网站上订购门票和酒店&#xff…

anguler 画面布局适应屏幕大小_自适应与响应式网站设计特点是什么?有哪些优缺点?...

自从2007年第一代iPhone问世以来&#xff0c;移动设备在日常使用中变得更加方便。目前约有25亿人使用智能手机来完成日常活动&#xff0c;其中包括浏览网站。由于越来越多的用户更喜欢使用移动设备而不是更大的电脑&#xff0c;因此网页设计师们将大部分精力都放在了完善这类设…

linux虚拟主机网站,linux网站中虚拟主机的实现

一台linux中网站虚拟主机的完成主要有三种方式&#xff1a;a、根据ip地址&#xff1b;b、根据端口号&#xff1b;c、根据域名。一下为完成进程&#xff1a;(本试验的linux虚机系统为rhel5.6)1、基于域名的实现&#xff1a;这种方式需要搭建dns域名服务器。#cat/etc/sysconfig/n…

网站二级页面后总有html,二级网页打不开,详细教您浏览器二级页面打不开怎么解决...

很多电脑用户使用浏览器进行一些网页上的操作&#xff0c;不过有用户遇到了浏览器可以正常打开网站的主页&#xff0c;但是网站中的其他链接却打不开&#xff0c;咋回事&#xff1f;那么用户遇到二级网页打不开情况该怎么办&#xff1f;下面&#xff0c;小编跟大家介绍浏览器二…

Android程序员35岁之后还在招聘网站上投简历找工作丢人吗?

5.没啥明显长处&#xff0c;但做事踏踏实实&#xff0c;交给你的事情不会出漏子&#xff0c;和你工作过的人觉得和你搭档舒心。 6.虽然有个性&#xff0c;但也有创意&#xff0c;能做别人想不出来的好策划&#xff0c;好设计。 7.要么擅长娱乐酒席&#xff0c;要么擅长活动组…