如何将行从HTML表单传递给PHP?

时间:2013-05-03 09:35:07

标签: php html

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

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

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

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

我在这里做错了,但我不确定是什么。有没有办法传递ID(我猜)ID?或者我应该考虑解析URL的下载?download = 5108&amp; download = 5110&amp; download = 5114因为它具有我需要的所有值?如果是这样,我该怎么做?谢谢!

2 个答案:

答案 0 :(得分:1)

这是我的解决方案:

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

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

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

$my_array = ($_REQUEST["download"]);
print_r($my_array);
echo "<P>";
foreach ($my_array as $value)
{
    echo $value . "<BR>";
}

答案 1 :(得分:-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 
  }
}

使用regexp从变量名解析行ID。

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