php表单和用户输入(二)

2020-06-24  本文已影响0人  烂笔头2020
PHP 下拉菜单单选

以下实例设置了下拉菜单三个选项,表单使用 GET 方式获取数据,action 属性值为空表示提交到当前脚本,我们可以通过 select 的 name 属性获取下拉菜单的值:(这里action为空值,表示到当前脚本)

<html>
<head>
<meta charset="utf-8">
<title>PHP 下拉菜单单选</title>
</head>
<body>
<?php
$q = isset($_GET['q'])? htmlspecialchars($_GET['q']): ''; //三元运算符?,isset()函数判断变量是否已设置或者为NULL
if($q) {
        if($q =='RUNOOB') {
                echo '菜鸟教程<br>http://www.runoob.com';
        } else if($q =='GOOGLE') {
                echo 'Google 搜索<br>http://www.google.com';
        } else if($q =='TAOBAO') {
                echo '淘宝<br>http://www.taobao.com';
        }
} 
else { //如果$q值不为上面三种情况就显示下拉菜单,这里中间嵌入html语句,需要先把上面的<?php先关闭
?> 

<form action="" method="get"> 
    <select name="q">
        <option value="">选择一个站点:</option>
        <option value="RUNOOB">Runoob</option>
        <option value="GOOGLE">Google</option>
        <option value="TAOBAO">Taobao</option>
    </select>
    <input type="submit" value="提交">
</form>

<?php //接上php脚本中else的闭括号
}
?>
 
</body>

</html>

对上面的进行修改一下,使用单选按钮:

<html>
<head>
<meta charset="utf-8">
<title>PHP 下拉菜单单选</title>
</head>
<body>
<?php
$q = isset($_GET['q'])? htmlspecialchars($_GET['q']) : '';
if($q) {
       if($q =='RUNOOB') {
               echo '菜鸟教程<br>http://www.runoob.com';
       } else if($q =='GOOGLE') {
               echo 'Google 搜索<br>http://www.google.com';
       } else if($q =='TAOBAO') {
               echo '淘宝<br>http://www.taobao.com';
       }
} else {
?><form action="" method="get"> 
   <input type="radio" name="q" value="RUNOOB" />Runoob
   <input type="radio" name="q" value="GOOGLE" />Google
   <input type="radio" name="q" value="TAOBAO" />Taobao
   <input type="submit" value="提交">
</form>
<?php
}
?>

</body>

</html>
PHP 下拉菜单多选

如果下拉菜单是多选的( multiple="multiple"),我们可以通过将设置 select name="q[]" 以数组的方式获取,以下使用 POST 方式提交,代码如下所示:

<html>
<head>
<meta charset="utf-8">
<title>PHP 下拉菜单多选</title>
</head>
<body>
<?php
$q = isset($_POST['q'])? $_POST['q'] : '';
if(is_array($q)) {
    $sites = array(
            'RUNOOB' => '菜鸟教程: http://www.runoob.com',
            'GOOGLE' => 'Google 搜索: http://www.google.com',
            'TAOBAO' => '淘宝: http://www.taobao.com',
    );//如果$q为一个数组,则执行该代码:定义一个关联数组$sites,并且遍历数组$q,以数组$q的值为键,输出$sites的值$sites[$val]
    foreach($q as $val){ 
        echo $sites[$val] . "<br/>";
    }
}
else
{
?>
    <form action="" method="post"> 
    <select multiple="multiple" name="q[]">
    <option value="">选择一个站点:</option>
    <option value="RUNOOB">Runoob</option>
    <option value="GOOGLE">Google</option>
    <option value="TAOBAO">Taobao</option>
    </select>
    <input type="submit" value="提交">
    </form>
<?php
}
?>

</body>
</html>

在这里用在不同操作系统和浏览器中,选择多个选项的差异:
对于 windows:按住 Ctrl 按钮来选择多个选项
对于 Mac:按住 command 按钮来选择多个选项
由于上述差异的存在,同时由于需要告知用户可以使用多项选择,对用户更友好的方式是使用复选框。
下面把代码修改一下,使用复选框:

<html>
<head>
<meta charset="utf-8">
<title>PHP 下拉菜单多选</title>
</head>
<body>
<?php
$q = isset($_POST['q'])? $_POST['q'] : '';
if(is_array($q)) {
    $sites = array(
            'RUNOOB' => '菜鸟教程: http://www.runoob.com',
            'GOOGLE' => 'Google 搜索: http://www.google.com',
            'TAOBAO' => '淘宝: http://www.taobao.com',
    );//如果$q为一个数组,则执行该代码:定义一个关联数组$sites,并且遍历数组$q,以数组$q的值为键,输出$sites的值$sites[$val]
    foreach($q as $val){ 
        echo $sites[$val] . "<br/>";
    }
}
else
{
?>
    <form action="" method="post"> 
        <input type="checkbox" name="q[]" value="RUNOOB">菜鸟教程<br/>
        <input type="checkbox" name="q[]" value="GOOGLE">Google 搜索<br/>
        <input type="checkbox" name="q[]" value="TAOBAO">淘宝
        <input type="submit" value="提交">
    </form>
<?php
}
?>

</body>
</html>

知识积累:

这里想讲一下name属性和value属性的作用:
name属性规定了标签的元素名称,name属性用于在JavaScript中引用元素,或在表单提交后引用表单数据,只有设置了name属性的表单元素才能在提交表单时传递它们的值,<value>属性规定在表单被提交时发送到服务器的内容,如果没有规定,则默认为标签中的值.

上一篇 下一篇

猜你喜欢

热点阅读