为什么checkbox总是只能获取数组的最后一个值?
下面是我的表格页面
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0" />
<title>配餐前的会员信息录入</title>
<style type="text/css">
td{
text-align: left;
font-size:25px;
}
table{
border-spacing: 9px;
}
input[type="checkbox"]{
width:25px;
height:25px;
}
input[type="radio"]{
width:25px;
height:25px;
}
h1{
font-size:28px;
}
h2{
font-size:28px;
color:red;
}
p{
font-size:25px;
}
input[type="submit"]{
width:90px;
height:60px;
font-size:26px;
}
input[type="reset"]{
width:90px;
height:60px;
font-size:26px;
}
input[type="text"]{
width:100px;
height:30px;
font-size:26px;
}
</style>
</head>
<body>
<form action='error_check.php' method="post">
<?php
session_start();//这里必须一开始就要启用,不然后面的session无法设置
require_once("../dataBase.php");//connect the database
$userName=$_SESSION['userName'];
$sql="SELECT testTime FROM result_table WHERE userName='$userName'";
$result=$conn->query($sql);
$recordNumber=$result->num_rows;
$testTime=array();//建立一个数组
if($recordNumber>0){
while($row=$result->fetch_assoc()){
$testTime=$row; //把数值循环放入数组中,感觉数组就是来者不拒,所有的赋值都会被纳入大家庭
}
}else{
echo '您尚未进行评测,请从首页进入"中华医学会九种体质评测”';
}
$testTime=max($testTime);//求出数组中最大的数,从而获取最近的一次体质评测的次数,同时通过同样的命名,将数组取消掉
//上面已经明确了用户最近的评测数据了,接下来就要读出其对应的体质评测结果了
$sql="SELECT yangxu,yinxu,shire,tanshi,qixu,qiyu,xueyu,tebing,pinghe FROM result_table WHERE userName='$userName' and testTime='$testTime'";
$result=$conn->query($sql);
//下面不做记录是否为零的判断了,因为经过之前的筛选,一定有记录
$body_feature=array();//设置一个数组用来装入结果进行排序,取出最前面的两个体质
while($row=$result->fetch_assoc()){
$body_feature=$row;
}
$max=max($body_feature);
$bodyOne=array_search($max,$body_feature);//获得了最大值对应的键名
//接着将数组降序排列,然后就可以根据数组的顺序读出第二个值,然后在通过该值找到对应的键名
/*rsort($body_feature);//这里降序排列,第二大的序列自然就是 1
$secMax=$body_feature[1];通过这种排序取键名的方式,虽然数组在,但是键名被改换成了数字,不能取到体质名称,所以用不了,只能使用后面的删除最大数,然后重新取数的办法获得第二大的值,然后通过该值而获得键名了
$bodyTwo=array_search($secMax,$body_feature);
echo $bodyTwo;
*/
unset($body_feature[$bodyOne]);//这里根据键名删除了第一大的数值,便于后面使用函数找第二大的数值
$secMax=max($body_feature);
$bodyTwo=array_search($secMax,$body_feature);
//echo $bodyTwo;
$name_array=array("阳虚"=>"yangxu","阴虚"=>"yinxu","湿热"=>"shire","痰湿"=>"tanshi","气虚"=>"qixu","气郁"=>"qiyu","血瘀"=>"xueyu","特禀"=>"tebing","平和"=>"pinghe");//建立这个数组便于转换为对应的中文名字
$bodyOne=array_search($bodyOne,$name_array);
$bodyTwo=array_search($bodyTwo,$name_array);
$_SESSION['bodyOne']=$bodyOne;
$_SESSION['bodyTwo']=$bodyTwo;
?>
<br>
<h2><?php
if($_SESSION["form_caution"]!= Null){
echo $_SESSION["form_caution"]; }
?>
</h2>
<h1>您最近的主要体质是<a href="../loginPage.php">(如未测评请点击)</a><br></h1>
<p><?php echo $bodyOne ?> <?php echo $bodyTwo ?></p>
<hr>
<h1>请勾选与您相关的疾病或状态(非必选)<br></h1>
<table >
<tr>
<td>
<input name="person_situation[]" type='checkbox' value='postnatal'>产后
</td>
<td>
<input name="person_situation[]" type='checkbox' value='obesity'>肥胖
</td>
</tr>
<tr>
<td>
<input name="person_situation[]" type='checkbox' value='pregnacy'>孕期
</td>
<td>
<input name="person_situation[]" type='checkbox' value='thin'>消瘦
</td>
</tr>
<tr>
<td>
<input name="person_situation[]" type='checkbox' value='insomnia'>失眠
</td>
<td>
<input name="person_situation[]" type='checkbox' value='diabetes'>糖尿病
</td>
</tr>
<tr>
<td>
<input name="person_situation[]" type='checkbox' value='hypertension'>高血压
</td>
<td>
<input name="person_situation" type='checkbox' value='coronary_artery_disease'>冠心病
</td>
</tr>
<tr>
<td>
<input name="person_situation[]" type='checkbox' value='high_uric_acid'>高尿酸
</td>
<td>
<input name="person_situation" type='checkbox' value='hyperlipidemia'>高血脂
</td>
</tr>
<tr><td>
<input name="person_situation[]" type='checkbox' value='asthma'>哮喘
</td>
<td>
<input name="person_situation[]" type='checkbox' value='hyperthyroidism'>甲亢
</td>
</tr>
<tr>
<td>
<input name="person_situation[]" type='checkbox' value='hypothyroidism'>甲减
</td>
<td>
<input name="person_situation[]" type='checkbox' value='tumour'>肿瘤
</td>
</tr>
</table>
<hr>
<h1>请填写您的个人情况<br></h1>
<p>
<input name='person_sex' type="radio" value='male'>男
<input name='person_sex' type='radio' value='female'>女
<br><br>
体重:<input name="person_weight" type="text" >KG(千克)<br><br>
身高:<input name="person_height" type="text">CM(厘米)<br><br>
年龄:<input name="person_age" type="text">岁<br><br>
<br>
</p>
<input type="submit" value="提交">
<input type="reset" value="重填">
</form>
</body>
</html>
点击提交的 errorCheck.php页面来进行判断 person_situation 这个数组 总是只能显示出最后的一项?为什么?下面是errorCheck.php的代码:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0" />
<title>Untitled Document</title>
</head>
<?php
session_start();//启动session,这样后面才能调用
$_SESSION["person_situation"]=$_POST["person_situation"];
$person_situation=$_POST["person_situation"];
$count_recorder=count($person_situation);
echo $count_recorder;
$_SESSION["person_age"]=$_POST["person_age"];
$_SESSION["person_weight"]=$_POST["person_weight"];
$_SESSION["person_height"]=$_POST["person_height"];
$_SESSION["person_sex"]=$_POST["person_sex"];
//下面对于每个填入的数据进行是否为空值的判断
if($_SESSION["bodyOne"]|$_SESSION["bodyTwo"]==NULL){
$_SESSION["form_caution"]="请先返回网站首页完成体质评估";
header("location:./memberInformation.php");
exit();
}
if($_SESSION["person_age"==Null]){
$_SESSION["form_caution"]="请先填入您的实际年龄";
header("location:./memberInformation.php");
exit();
}
if($_SESSION["person_weight"]==Null){
$_SESSION["form_caution"]="请先填入您的实际体重";
header("location:./memberInformation.php");
exit();
}
if($_SESSION["person_height"]==Null){
$_SESSION["form_caution"]="请先填入您的实际身高";
header("location:./memberInformation.php");
exit();
}
if($_SESSION["person_sex"]==Null){
$_SESSION["form_caution"]="请先选择您的真实性别";
header("location:./memberInformation.php");
exit();
}
//var_dump($_SESSION["bodyOne"]);
//var_dump($_SESSION["bodyTwo"]);
var_dump($_POST["person_situation"]);
//var_dump($_SESSION["person_sex"]);
//var_dump($_SESSION["person_weight"]);
//var_dump($_SESSION["person_height"]);
//var_dump($_SESSION["person_age"]);
echo "准备跳转了";
?>
<body>
</body>
</html>