从复选框和隐藏字段中检索多个值

时间:2012-07-02 14:50:27

标签: php

我的代码按预期工作,但发生了一个小问题,我尝试从具有相同名称的隐藏字段和具有相同名称的隐藏字段中检索值,但它可以工作但是其中一个隐藏字段会继续返回第一个值,即使复选框是未选中的。 这是我的代码

while($row=mysql_fetch_array($res1)){
?> 
    <tr><td class='bold'><?php echo $sn;?><input type="hidden" name="snum[]" value="<?php echo $sn; ?>" /></td>
    <td><?php echo $row['subLocationName']; ?>
    <input type="hidden" name="location[]" value="<?php echo $row['dllink_id']; ?>"/></td>
    <td><input type="checkbox" name="available[]" value="<?php echo $row['subLocationName']; ?>"/></td>
    <input type="hidden" name="locationID[]" value="<?php echo $row['locationName']; ?>"/>
    <input type="hidden" name="sublocation[]" value="<?php echo $row['subLocationName']; ?>"/>
    <input type="hidden" name="device[]" value="<?php echo $row['deviceName']; ?>"/>
    <td></td><td></td></tr>
<?php
        $sn++;
    }

值来自我的数据库。 检索代码是这个

if(isset($_POST['submit_btn'])){

        $serial_num = $_POST['snum'];
        $locationDeviceLink = $_POST['location'];
        $linkAvailable =$_POST['available'];
        $location = $_POST['locationID'];
        $subLocation = $_POST['sublocation'];
        $device = $_POST['device']; 
        $measure_date = date("Y-m-d");
        $sn = count($linkAvailable);
            for ($i=0; $i<$sn; $i++ ){
                if(!empty($linkAvailable[$i])){
                    echo "serial number:".$serial_num[$i]."  location:".$locationDeviceLink[$i]."  available:".$linkAvailable[$i]."  Location:".$location[$i]."  subLocation:".$subLocation[$i]."  Device:".$device[$i]."  Date:".$measure_date."<br/>";


                }

            }



    }

问题是subLocation值,它会一直返回第一个值,然后是第二个值,因为它出现即使未选中相关的复选框并且选中了另一个复选框,请任何人帮助我,不能再想到更多。 提前致谢 约瑟夫O

1 个答案:

答案 0 :(得分:0)

而不是使用php的函数!empty测试isset

for ($i=0; $i<$sn; $i++ ){
  if(isset($linkAvailable[$i])) {
    echo "serial number:".$serial_num[$i]."  location:".$locationDeviceLink[$i]."  available:".$linkAvailable[$i]."  Location:".$location[$i]."  subLocation:".$subLocation[$i]."  Device:".$device[$i]."  Date:".$measure_date."<br/>";
  }
}