跟着书上练习,使用$_POST输出多个checkbox值会报错,如下:
HTML代码:
<html>
<head>
<title>post1</title>
</head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><body>
<form name="form1" method="post" action="3-3.php">
输入姓名:<input name="user_name" type="text"><br/><br/>
选择性别:<input name="gender" type="radio" value="male">男 <input name="gender" type="radio" value="female">女<br/><br/>
兴趣与爱好:<input name="hobby[]" type="checkbox" value="reading">阅读<input name="hobby[]" type="checkbox" value="travel">旅游
<input name="hobby[]" type="checkbox" value="sport">运动<input name="hobby[]" type="checkbox" value="internet">上网<br/><br/>
选择职业:
<select name="occup">
<option value="engineer">工程师</option>
<option value="teache">教师</option>
<option value="doctor">医生</option>
<option value="other">其他</option>
</select><br/><br/>
<input type="submit" value="提交数据">
</form>
</body>
</html>PHP代码:
<?php
//通过$_POST全局变量,获取文本框user_name的值,并赋给变量$user_name
header("Content-type:text/html;charset=utf-8");
$user_name = $_POST['user_name'];
$gender = $_POST['gender'];
$hobby = $_POST['hobby'][0]."、".$_POST['hobby'][1]."、".$_POST['hobby'][2]."、".$_POST['hobby'][3];
$pfor = $_POST['occup'];//当用户名为空,即没有输入用户名时,则输出一个提示信息,并中断程序的执行
if($user_name == "")   //用户名如果为空
{
    echo "请返回输入用户名!";
    exit;   //exit语句将使程序立即中断,不再向下执行
}if($gender == "")   
{
    echo "请返回选择性别!";
    exit;   
}if($hobby == "")
{
    echo "请返回选择兴趣与爱好!";
    exit;
}echo "用户名:".$user_name."<br/>";
echo "性别:".$gender."<br/>";
echo "爱好:".$hobby."<br/>";
echo "职业:".$pfor."<br/>";运行结果:Notice: Undefined offset: 2 in /Applications/XAMPP/xamppfiles/htdocs/test/3-3.php on line 6Notice: Undefined offset: 3 in /Applications/XAMPP/xamppfiles/htdocs/test/3-3.php on line 6
用户名:黄磊
性别:male
爱好:reading、travel、、
职业:engineer
这里后面2个爱好没有选择,报错变量为空,但是书上没有报错,最后两个"、"也没有显示出来。我这里报错并显示了最后两个“、”

解决方案 »

  1.   

    程序开始处加上 error_reporting(E_ALL ^ E_NOTICE); 就不报错了如果你的书都不说明这个,那这书就好是别看了
      

  2.   

    你一个一个连接,如果post有值就连接,沒值就跳过
      

  3.   

    你一个一个连接,如果post有值就连接,沒值就跳过
      

  4.   

    hobby这个,你不要指定$hobby = $_POST['hobby'][0]."、".$_POST['hobby'][1]."、".$_POST['hobby'][2]."、".$_POST['hobby'][3];
    可以$hobbys = $_POST['hobby'],然后遍历他,不然有的没有上,你就指定索引,当然出错。