【问题标题】:Write php array data for rows that are selected by a checkbox to a file将复选框选择的行的php数组数据写入文件
【发布时间】:2010-11-02 14:49:10
【问题描述】:

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

【问题讨论】:

    标签: php arrays post checkbox


    【解决方案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']在你提交表单后会是一个数组。

    【讨论】:

    • 我主要关心 $data[$c] = 这是一个我需要传递的数组。一旦用户选择了一个复选框,我需要在提交时打印相应的数组行。
    【解决方案2】:

    我重写了您的脚本,因为我发现它不干净且难以阅读。

    $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];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-23
      • 2021-07-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多