从PHP中的Checkbox获取数组值

时间:2013-11-21 15:45:05

标签: 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值。我怎么得到它?

2 个答案:

答案 0 :(得分:0)

你需要钥匙:

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在他的回答中所说,在你的循环中设置密钥创建输入可能会更好。

<?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
}
}
?>

答案 1 :(得分:0)

foreach($_POST['area'] as $key => $check) {
    echo $check . $_POST['item_name'][$key];
}

假设您提交的三个数组之间存在1:1的精确对应关系。请注意,选中的复选框 NOT 会随表单一起提交,因此很可能不是这样,并且此代码无法按照书面形式运行。

相关问题