从PHP中的复选框获取数组值


Getting Array Value from Checkbox in PHP

我正在尝试构建一个列表,用户可以在其中选择任何复选框,并可以将该行的所有选择值发送到下一页。

这是我所拥有的:

第一页:

    <table border="0">
        <tr>
<td><a href="#" onClick="select_all('area', '1');">Check All</a> | <a href="#" onClick="select_all('area', '0');">Uncheck All</a></td>
<td>Item Name</td>
<td>Item Description</td>
        </tr>
<?php
 if ($num_rows == 0) {
           return "No Data Found";
}else{
   while ($row = dbFetchAssoc($result)) {
        $item_id = $row['item_id']; 
       $item_name = $row['item_name'];
        $item_desc = $row['item_desc'];
        $item_qty = $row['item_qty'];
        $item_upc = $row['item_upc'];
         $item_price = $row['item_price'];
         $vendor_id = $row['vendor_id'];
 ?>
        <tr>
        <td> <input type="checkbox" name="area[]" value="<?=$item_id?>" /></td>
        <td><input type="text" name="item_name[]" value="<?=$item_name?>"></td>
        <td><input type="text" name="item_desc[]" value="<?=$item_desc?>"></td>
        </tr>
<?php
}
}
?>
        <tr><td colspan="3"><input type="submit"></td></tr>
    </table>
  </form>

下一页:

<table>
    <tr><td colspan="3"><?php "Total Item(s) selected: "; echo count($_POST['area']); ?></td></tr>
<?php
if(!empty($_POST['area'])) {
    foreach($_POST['area'] as $check) {
            echo "<tr><td>".$check."</td><td>".$_POST['item_name']."</td><td>".$_POST['item_name']."</td></tr>"; 
    }
}
?>
</table>

我还需要读取item_name和item_desc值。我该怎么得到它?

您需要密钥:

if(!empty($_POST['area'])) {
    foreach($_POST['area'] as $key => $check) {
            echo "<tr><td>".$check."</td><td>".$_POST['item_name'][$key]."</td><td>".$_POST['item_desc'][$key]."</td></tr>"; 
    }
}

正如Marc在回答中所说,在创建输入的循环中设置key可能会更好。

<?php
 if ($num_rows == 0) {
           return "No Data Found";
}else{
    $counter = 0;
   while ($row = dbFetchAssoc($result)) {
        $counter++;
        $item_id = $row['item_id']; 
       $item_name = $row['item_name'];
        $item_desc = $row['item_desc'];
        $item_qty = $row['item_qty'];
        $item_upc = $row['item_upc'];
         $item_price = $row['item_price'];
         $vendor_id = $row['vendor_id'];
 ?>
        <tr>
        <td> <input type="checkbox" name="area[<?=$counter?>]" value="<?=$item_id?>" /></td>
        <td><input type="text" name="item_name[<?=$counter?>]" value="<?=$item_name?>"></td>
        <td><input type="text" name="item_desc[<?=$counter?>]" value="<?=$item_desc?>"></td>
        </tr>
<?php
}
}
?>
foreach($_POST['area'] as $key => $check) {
    echo $check . $_POST['item_name'][$key];
}

假设您提交的三个数组之间存在精确的1:1对应关系。请记住,NOT选中的复选框会随表单一起提交NOT,因此这很可能不是真的,并且此代码将无法正常工作。