0

我编写了一个 PHP 程序来显示一个制表符分隔的文件。这样做的目的是允许用户查看行并通过选中每条记录的行中给出的复选框来选择他们想要的行。在他们点击提交后,我有一个 PHP 程序来显示这些值,但问题是只有最后一行的 ID 被传递。但是,当用户点击提交按钮时,我可以看到检查行的所有值:

   process_form.php?download=5108&download=5110&download=5114

我应该如何在 process_form.php 中解析它?我已经完成了 $_POST 和 $_REQUEST 的 var_dump,但它只显示了最后一个值 5114。我有点理解这个问题,大多数情况下,表单程序员每个输入字段只能得到一个值,但是当有很多记录吗?似乎他们不应该都有自己独特的“名字”。

<td align=center><input type="checkbox" name="download" value="<?php echo $row['ID']; ?>"></td>

我在这里做错了什么,但我不确定是什么。有没有办法传递一个 ID 数组(我猜)?还是我应该查看解析 ?download=5108&download=5110&download=5114 的 URL,因为它具有我需要的所有值?如果是这样,我该怎么做?谢谢!

4

2 回答 2

1

这是我的解决方案:

<td align=center><input type="checkbox" name="download[]" value="<?php echo $row['ID']; ?>"></td>

请注意,download 现在是 download[],因此创建了一个数组以传递给 PHP 程序以处理表单。

然后使用这个演示 PHP 代码,我能够访问数组:

$my_array = ($_REQUEST["download"]);
print_r($my_array);
echo "<P>";
foreach ($my_array as $value)
{
    echo $value . "<BR>";
}
于 2013-05-03T10:02:46.583 回答
-1

我宁愿用你rowID的名字<input>而不是值来识别。

<td align=center><input type="checkbox" name="download_<?php echo $row['ID']; ?>" value="1"></td>

然后你可以处理你的请求数组,如:

foreach( $_REQUEST as $key => $value ) {
  if( preg_match('/^download_([0-9]+)$/', $key, $reg ) {
    $rowId = $reg[1];  // Your row ID
    $isChecked = $value;  // State of checkbox 
  }
}

行 ID 是使用正则表达式从变量名中解析出来的。

编辑: 正如评论中提到的,这不是读取复选框数组的最简单方法。最简单的方法是命名复选框download[]并在 PHP 中解析这个数组。但是,这更通用,例如当您需要获取输入文本数组而不是复选框时。

于 2013-05-03T09:44:02.637 回答