PHP之五_表单数据接收
下面的课程中,我们将完成一个“用户注册”的功能:
这一完整功能其实可以分成三个步骤来实现:接收表单数据,设计数据库,将表单数据编程写入数据库。
所以该案例分三小节:
Part1: 表单数据接收
Part2: MySQL数据库设计
Part3: PHP编程访问MySQL数据库
这一节,我们先学习PHP语言中的表单数据接收。
一、练习一:简易计算器
这是一个非常简单的计算器,只需输入数字1和数字2,并选择一个运算符,就可以在后台通过PHP代码计算出结果。
该练习由两个页面组成,一个页面是demo1.html,是前台页面,一个页面是demo1.php,是后台PHP代码。
为了便于部署和调试,我们先介绍下Dreamweaver中的站点管理功能。
1. 在新建站点时,设置服务器。
在Dreamweaver中,选择菜单“站点”->“新建站点”:
切换到“服务器”页面:
点击“+”,添加服务器:
选择“本地/网络”:
其中“服务器文件夹”指向“C:\wamp\www”,“Web URL”指向“http://localhost”。
配置完成后,站点中的文件就可以快速地部署到服务器上了。只需点击“上传”:
2. 通过Dreamweaver制作demo1.html,源代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>简易计算器</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="demo1.php">
<p>
<label for="a">数字1:</label>
<input type="text" name="a" id="a" />
<select name="ys" id="ys">
<option value="+">+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
</select>
<label for="b">数字2:</label>
<input type="text" name="b" id="b" />
</p>
<p>
<input type="submit" name="button" id="button" value="计算" />
</p>
</form>
</body>
</html>
3. 在Dreamweaver的代码视图中编写demo1.php,源代码如下:
<?php
$a = $_POST["a"];
$b = $_POST["b"];
$ys = $_POST["ys"];
if($ys == "+") {
$c = $a + $b;
} else if($ys == "-") {
$c = $a - $b;
} else if($ys == "*") {
$c = $a * $b;
} else if($ys == "/") {
$c = $a / $b;
}
echo $c;
?>
点上传图标,将站点上传到服务器中。打开浏览器,输入:http://localhost/demo1.html,查看运行结果。
练习一总结:
× 表单的HTML代码是:
<form id="form1" name="form1" method="post" action="demo1.php">
表单的method属性表示提交方式,有get/post两种,action属性表示表单数据提交给谁,即谁来接收表单数据。
× 每一个表单元素如果需要被后台接收到,就应该设置name属性,每个重要的表单元素都应有自己的名字。
× PHP中,用于接收表单数据的函数有三种:_GET['表单元素名']、_POST['表单元素名']和_REQUEST['表单元素名'],其中_GET只接收提交方式为get的表单数据,_POST只接收提交方式为post的表单数据,而_REQUEST可以同时接收两种提交方式的表单数据。
× 接收时,_POST['表单元素名']必须与前面HTML页面中的表单元素名一致方能顺利接收。
二、练习二:用户注册
用户输入各项信息后,点击提交即可注册。
这里比较麻烦的是复选按钮,即最后一行的“业余爱好”一栏。
由于复选按钮可以选择多个,所以在前台和后台都要特别注意。
1. 在Dreamweaver中制作demo2.html,源代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>用户注册</title>
<style type="text/css">
.w160 {
width: 160px;
}
</style>
</head>
<body>
<form id="form1" name="form1" method="post" action="demo2.php">
<table width="800" border="1">
<tr>
<td width="30%" align="right">用户名:</td>
<td><input name="name" type="text" class="w160" /></td>
</tr>
<tr>
<td align="right">密码:</td>
<td><input name="pass" type="password" class="w160" /></td>
</tr>
<tr>
<td align="right">再次输入密码:</td>
<td><input name="pass2" type="password" class="w160" /></td>
</tr>
<tr>
<td align="right">邮箱:</td>
<td><input name="email" type="text" class="w160" id="email" /></td>
</tr>
<tr>
<td align="right">性别:</td>
<td><input type="radio" name="sex" value="男" />
男
<input type="radio" name="sex" value="女" />
女</td>
</tr>
<tr>
<td align="right">业余爱好:</td>
<td><input type="checkbox" name="love[]" value="篮球" />
篮球
<input type="checkbox" name="love[]" value="唱歌" />
唱歌
<input type="checkbox" name="love[]" value="阅读" />
阅读</td>
</tr>
<tr>
<td align="right"> </td>
<td><input type="submit" value="提交" />
<input type="reset" value="重置" /></td>
</tr>
</table>
</form>
</body>
</html>
注意:复选框的命名,命名为“love[]”,在名字后加一对中括号,这样提交到后台的数据可以有多个。
2. 编写demo2.php,源代码如下:
<?php
$name = $_POST["name"];
$pass = $_POST["pass"];
$pass2 = $_POST["pass2"];
$email = $_POST["email"];
$sex = $_POST["sex"];
$love = $_POST["love"];
echo "用户名:", $name, "<br />";
echo "邮箱:", $email, "<br />";
echo "性别:", $sex, "<br />";
echo "业余爱好:<br />";
for($i=0; $i < count($love); $i++) {
echo " ", $love[$i], "<br />";
}
?>
对于复选框的接收,代码上与其它表单元素并无差别。
但接收到的是一个数组,即$love变量是一个数组,而不是普通变量。
使用count函数可以算出数组有几个元素。数组的具体用法与C语言并无太大差别,也可以用for循环对其遍历。