我写这个来显示csv文件中的数据。当用户选择复选框时,我需要将该行内的所有数据写入文件。我对如何发送数组数据感到困惑。
<form action="SAP_Conversion.php" method="POST" id="submit_to_XML">
<?
$row = 1;
$records[0] = 1;
if (($handle = fopen("upload/Akron.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
$records[] = $data;
echo "<div id=\"row\">
<div id=\"num\">" .$row. "</div>
<div class=\"field\">
<input name=\"checkbox" . $row . "\" type=\"checkbox\" value=\"$row\" />
</div>";
$row++;
for ($c=0; $c < $num; $c++) {
echo "<div class=\"field\">" . $data[$c] . "</div>";
}
echo "</div>";
}
fclose($handle);
}
答案 0 :(得分:1)
要发送数组,请将[]添加到元素的名称中。实际数值是可选的。所以拿走你拥有的东西并改变
echo "<div id=\"row\"><div id=\"num\">" .$row. "</div>
<div class=\"field\"><input name=\"checkbox" . $row . "\" type=\"checkbox\" value=\"$row\" /></div>";
到
echo "<div id=\"row\"><div id=\"num\">" .$row. "</div>
<div class=\"field\"><input name=\"checkbox[" . $row . "]\" type=\"checkbox\" value=\"$row\" /></div>";
然后在PHP $_POST['checkbox']
中提交表单后将是一个数组。
答案 1 :(得分:1)
我重写了你的剧本,因为我发现它不干净且难以阅读。
$fileHandle = fopen("upload/Akron.csv", "r");
$records = array();
$markup = '';
if ($fileHandle)
{
while ($row = fgetcsv($handle, 1000, ","))
{
$records[] = $row;
}
foreach ($records AS $key => $record)
{
$countFields = count($record);
$markup =
'<div id="row">
<div id="num">' . $key . '</div>
<div class="field">
<input name="rows[]" type="checkbox" value="' . $key . '" />
</div>';
for ($c=0; $c < $countFields; $c++)
{
$markup .=
'<div class="field">
' . $record[$c] .
'</div>';
}
$markup .= '</div>';
}
fclose($handle);
echo $markup;
}
现在解决你的问题,正如我所理解的那样。 使用我的脚本版本,你将得到一个整齐的$ records数组和一个$ _POST ['rows']数组,其中包含用户请求(检查)的所有$ record键。
现在,您可以轻松地从$ records数组中获取所需的数据。
示例:
foreach ($_POST['rows'] AS $key)
{
$selectedRecords[] = $records[$key];
}