常用的表单控件的数据获取方式

来源:互联网 发布:仓库存储储位优化 编辑:程序博客网 时间:2024/06/01 10:23

下面介绍常用的表单控件的数据获取方式。
4.2.1 文本框
文本框是最常用的表单元素,用于输入用户名、地址、密码等(密码类型的文本框,需
要将类型设置为password)。
下面是一个简单的文本框表单元素:
<INPUT type=text maxLength=25 size=16 name=login >
文本框表单控件的名称为“login”,在处理页面时,可以用下面几种方法来获取:
$login //直接通过全局变量来获取数据,不推荐使用
$_GET['login'] //如果通过GET 方法提交,推荐使用
$_POST['login'] //如果通过POST 方法提交,推荐使用
4.2.2 单选按钮
单选按钮表示从多个选项中选择一个。通常情况下,同一组单选按钮的名称是一样的。
假如有多个单选按钮,在实际提交数据的时候,PHP 只会分配一个变量给该组单选按钮,看
下面的代码:
<input type="radio" name="gender" value="1" checked>
<input type="radio" name="gender" value="2" >
以上代码创建了一组两个单选按钮,按钮的名称为“gender”,但是“value”值有两个,
分别为“1”和“2”。提交后,假如用户选择了“1”,则该变量的值就为1,如果为“2”,则
变量的值也为2,依此类推,如果一组有多个选项也一样。
要获取单选按钮的值,可以采用下面的语法:
$_GET["gender "] //通过get 方法提交
$_POST["gender "] //通过post 方法提交
提示 由于 PHP 不鼓励使用全局变量的方法,因此本书后面不会采用这种方法。
4.2.3 复选框
复选框通常能够让用户选择多个选项,比如个人爱好等。一般来说,同一组复选框按钮
的名称是不一样的,但是也可以都一样。
第4 章 PHP 与HTML 表单 145
实例 4-3 获取复选框提交的数据
本实例由两个文件组成,第1 个为表单文件,文件名为checkbox.htm,如代码4-6 所示;
第2 个为提交数据获取页面,文件名为showcheckbox.php,如代码4-7 所示。
【代码 4-6】 checkbox.htm
<html>
<head>
<title>
爱好调查表
</title>
</head>
<body>
你的爱好:<br>
<form method=get action="showcheckbox.php">
<input type="checkbox" name="dance" value="dance" >跳舞<br>
<input type="checkbox" name="tour" value="tour" >旅游<br>
<input type="checkbox" name="sing" value="sing" >唱歌<br>
<input type="checkbox" name="ball" value="ball" >打球<br>
<input type="submit" name="submit" value="提交">
<input type="reset" name="reset" value="重填">
<br>
</body>
<html>
Checkbox.htm 的运行界面如图4-5 所示。

你的爱好:

跳舞
旅游
唱歌
打球

图 4-5 checkbox.htm 的运行界面
以上的一组复选框,由于名称都不一样。与其他表单属性不同,即如果该复选框没有被
选中,则PHP 不会为其分配变量。因此如果直接获取它的值,系统会报错。
【代码 4-7】 showcheckbox.php
<?php
echo $_GET['dance'];
echo $_GET['tour'];
echo $_GET['sing'];
echo $_GET['ball'];
?>
同前面介绍的方法一样,因为是通过GET 方法提交,因此用$_GET 来获取数据。因为4
个复选框名称不一样,因此用了4 个不同的变量来输出。在图4-5 中,选中“旅游”和“打
球”两项。然后单击“提交”按钮,执行的结果如图4-6 所示。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <title> showcheckbox.php </title>
  <meta charset="UTF-8">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
 </head>

 <body>
<?php
echo $_GET['dance'];
echo $_GET['tour'];
echo $_GET['sing'];
echo $_GET['ball'];
?>
 </body>
</html>

dancetoursing


( ! ) Notice: Undefined index: ball in D:\LearnWebDevelop\php\MyPhpExse\showcheckbox.php on line16Call Stack#TimeMemoryFunctionLocation10.0021370280{main}( )..\showcheckbox.php:0


 

图 4-6 showcheckbox.php 的执行结果
从图中可以看出,由于其中有两个表单没有提交数据,因此出现了错误。为了解决这个
问题,需要判断该变量是否为空。
实例 4-4 安全获取复选框提交的数据
本实例由两个文件组成,一个为前台的文件,如代码4-6 所示,但要将checkbox.htm 名
称改为checkbox1.htm,然后将代码中的<form method=get action="showcheckbox.php">修改为
<form method=get action="showcheckbox1.php">,其他代码不变。另一个文件为获取数据文件,
文件名为checkbox1.php,如代码4-8 所示。
【代码 4-8】 showcheckbox1.php
<?php
if (!empty($_GET['dance']))
echo $_GET['dance'] . "<br>";
if (!empty($_GET['tour']))
echo $_GET['tour']. "<br>";
if (!empty($_GET['sing']))
echo $_GET['sing'] . "<br>";
if (!empty($_GET['ball']))
echo $_GET['ball'] . "<br>";
?>
在浏览器中输入“http://localhost/chap04/checkbox1.htm”,显示的界面同图4-5 一样。然
后选择“旅游”和“打球”两个复选框,接着单击“提交”按钮,则会出现如图4-7 所示的
界面。

在浏览器中输入“http://localhost/chap04/checkbox1.htm”,显示的界面同图4-5 一样。然
后选择“旅游”和“打球”两个复选框,接着单击“提交”按钮,则会出现如图4-7 所示的
界面。
图 4-7 showcheckbox1.php 的执行结果
从图 4-7 中可以看出,代码没有错误,而且输出了用户选择的内容。但是这样处理
会很复杂,需要对每个字段都要判断是否为空,接下来介绍一种快速获得复选框提交值
的方法。
提示
在实际编程中,这样判断比较麻烦。因为这样的错误警告属于提示级别,
不影响整个程序的运行,因此如果不想这样繁琐,可以在php.ini 文件中,设置
错误报告的级别。将error_reporting 设置为E_ALL &~(E_NOTICE),表示会出
现警告问题和错误问题,而提示问题不显示。
修改过之后,再运行实例 4-3,则不会出现提示。
第4 章 PHP 与HTML 表单 147
实例 4-5 快速获取复选框提交的数据
快速获取复选框提交数据的方法是将所有的复选框名称统一,即所有的复选框名称相同,
而值(value)设置不同。本实例由两个文件组成,一个为前台文件,用于显示表单,文件名
为checkbox2.htm,如代码4-9 所示;另一个文件名为showcheckbox2.php,显示提交的复选
框选项,如代码4-10 所示。
【代码 4-9】 checkbox2.htm
<html>
<head>
<title>
爱好调查表
</title>
</head>
<body>
你的爱好:<br>
<form method=get action="showcheckbox2.php">
<input type="checkbox" name="hobby[]" value="dance" >跳舞<br>
<input type="checkbox" name="hobby[]" value="tour" >旅游<br>
<input type="checkbox" name="hobby[]" value="sing" >唱歌<br>
<input type="checkbox" name="hobby[]" value="ball" >打球<br>
<input type="submit" name="submit" value="提交">
<input type="reset" name="reset" value="重填">
<br>
</body>
<html>
此处的表单名称为“hobby[]”而不是简单的“hobby”,这是因为PHP 会自动将名称相同
的表单控件提交的值保存在数组中,如果不加上“[]”,则系统默认只保存一个值。
如果要获取所有提交的数值,只需要通过foreach 语句就可以实现了,实现代码如代码
4-10 所示。
【代码 4-10】 showcheckbox2.php
<?php
echo "你的爱好如下:";
if (!empty($_GET['hobby']))
foreach ($_GET['hobby'] as $hobby)
echo($hobby . "<br>");
?>
showcheckbox2 的执行结果如图4-8 所示。
图 4-8 showcheckbox2.php 执行结果
148 PHP 网络编程技术与实例
从 showcheckbox2.php 简单的处理结果可以看出,通过将所有的复选框名称改成一样的
之后,就很容易进行处理了。


4.2.4 列表框
列表框控件用于让用户进行单项或者多项选择。创建一个列表框可以通过select 和option
关键字来实现。通常列表框可以用来进行多选和单选。
实例 4-6 获取列表框提交的数据
本实例用于获取列表框提交的数据,由两个文件组成,前台文件名为select.htm,如代码
4-11 所示,后台文件名为showselect.php,如代码4-12 所示。
【代码 4-11】 select.htm
<html>
<head>
<title>
选择月份
</title>
</head>
<body>
选择月份:<br>
<form method=post action="showselect.php">
<select name="bmonth">
<option value="01" selected>1</option>
<option value="02">2</option>
<option value="03">3</option>
<option value="04">4</option>
<option value="05">5</option>
<option value="06">6</option>
<option value="07">7</option>
<option value="08">8</option>
<option value="09">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select>
<input type="submit" name="submit" value="提交">
<input type="reset" name="reset" value="重填">
<br>
</body>
<html>
以上列表框保存了一年中的12 个月,如果需要选择哪个月份,可以通过鼠标选择,其中
第1 个月被默认选中。但是以上的定义只能是单选的,不能多选。
代码 4-11 的执行结果如图4-9 所示。
虽然列表框有多个选项,但是只有一个名称即“bmonth”,PHP 对单选列表框进行处理
的时候,直接通过该名称来获取提交值,它的值就是被用户选中的“value”属性的值。
第4 章 PHP 与HTML 表单 149
【代码 4-12】 showselect.php
<?php
echo "你选择的月份是:<BR>";
echo $_POST['bmonth'] . " 月";
?>
Showselect.php 的执行结果如图4-10 所示。
图 4-9 select.htm 的执行结果 图4-10 Showselect.php 的执行结果
以上介绍的是单选列表框的数据处理方法,列表框可以进行多选。在进行多项选择的时
候,只需要在该元素后面添加“multiple”属性。
实例 4-7 获取列表框提交的多个选项
本实例获取列表框提交的多个选项。由两个文件组成,前台文件名为select1.htm,如代
码4-13 所示;后台文件名为showselect1.php,如代码4-14 所示。
【代码 4-13】 select1.htm
…省略部分代码
<form method=post action="showselect1.php">
<select name="bmonth[]" multiple size=12>
<option value="01" selected>1</option>
<option value="02">2</option>
<option value="03">3</option>
<option value="04">4</option>
<option value="05">5</option>
<option value="06">6</option>
<option value="07">7</option>
<option value="08">8</option>
<option value="09">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select>
…省略部分代码
其中“size=12”表示的是列表框的高度为12,这样方便用户选择。select1.htm 的执行结
果如图4-11 所示(可以按住CTRL 键在图中进行多选)。
细心的读者会发现,在定义多选列表框的时候,将其名称定义为了数组的形式即
“bmonth[]”,这是因为PHP 在进行多选列表框数据处理的时候,将被选中的数据以数组的形
式保存。如果名称只是简单的“bmonth”,虽然用户能够进行多选,但是提交到服务器之后,
实际得到的将是最后选择的值,其他值并没有被PHP 捕捉到。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <title> selectArray.php </title>
  <meta charset="UTF-8">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
 </head>

 <body>
<form method="post" action="">
<select name="bmonth[]" multiple size=12>
<option value="01" selected>1</option>
<option value="02">2</option>
<option value="03">3</option>
<option value="04">4</option>
<option value="05">5</option>
<option value="06">6</option>
<option value="07">7</option>
<option value="08">8</option>
<option value="09">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select>
<input type="submit">
</form>
<?php
if(isset($_POST))
{
var_dump($_POST);
}
?>
 </body>
</html>


array  'bmonth' =>     array      0 => string '03' (length=2)      1 => string '05' (length=2)      2 => string '09' (length=2)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <title> selectArray2.php </title>
  <meta charset="UTF-8">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
 </head>

 <body>
<form method="post" action="">
<select name="bmonth" multiple size=12>
<option value="01" selected>1</option>
<option value="02">2</option>
<option value="03">3</option>
<option value="04">4</option>
<option value="05">5</option>
<option value="06">6</option>
<option value="07">7</option>
<option value="08">8</option>
<option value="09">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select>
<input type="submit">
</form>
<?php
if(isset($_POST))
{
var_dump($_POST);
}
?>
 </body>
</html>


array  'bmonth' => string '09' (length=2)


4.2.5 隐藏字段
隐藏字段是允许用户把辅助信息附加到窗体上的完全不可见的控件。也就是说,隐藏字
段将出现在浏览器的窗口中,但是用户无法修改,而且也不会受这些隐含字段的影响。通常
这些字段是不可见的。
隐藏字段的表单控件的 HTML 语法结构如下:
<input type="hidden" name="age" value="20">
其中type="hidden"指定了该控件是隐藏控件,后面的name 和value 属性同其他控件的定
义是一样的。
隐藏字段通常用在页面跟踪的过程中。比如有时候需要将一个用户的姓名、密码、年龄
等信息传到下一页,但是又不想这些信息被显示出来,此时可以使用隐含字段来实现。
实例 4-8 获取隐藏字段值
本实例演示如何获取隐藏字段的值。由两个文件组成,前台文件名为hide.php,如代码
4-15 所示;后台文件名为showhide.php,如代码4-16 所示。
【代码 4-15】 hide.php
<html>
<head>
<title>
隐藏字段
</title>
</head>
<body>
第4 章 PHP 与HTML 表单 151
<?php
$username="dog";
?>
<form method=get action="showhide.php">
帐号:<INPUT maxLength=25 size=16 name=login ><br>
<input type="hidden" name="hidename" value="<?php print 'hello'; ?>">
<input type="submit" name="submit" value="提交">
<input type="reset" name="reset" value="重填">
</body>
<html>
提示 因为 hide.php 文件中使用了php 代码所以文件名不能使用hide.htm。
【代码 4-16】 showhide.php
<?php
//获取隐藏字段信息
echo "你的隐藏字段信息为:<br>";
echo $_GET['hidename'] ;
?>
执行结果如图4-13 所示。
图 4-13 获取隐藏字段信息







0 0