将复选框选中的行的php数组数据写入文件

时间:2010-11-01 16:23:53

标签: php arrays post checkbox

我写这个来显示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);
}

2 个答案:

答案 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];
}