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


retrieving multiple values from checkbox and hidden field

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

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/>";

                }
            }

    }

问题是子位置值,即使未选中关联的复选框并选中另一个复选框,它也不断返回第一个值,然后返回第二个值,请任何人帮助我,想不出更多。提前致谢约瑟夫

·

与其测试!empty不如尝试使用 php 的函数 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/>";
  }
}