2010-11-01 87 views
0

我写这个来显示来自csv文件的数据。当用户选择一个复选框时,我需要将该行内的所有数据写入文件。我很困惑如何发送数组数据。为复选框选中的行写入php数组数据

<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); 
} 

回答

1

发送数组add []添加到元素的名称。实际的数值是可选的。因此,需要你有什么,改变

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']将是一个数组提交表单后。

+0

我主要关心的是由$数据[$ C] =这是我需要传递的阵列打印出来的数据。 一旦用户选择了一个复选框,我需要在提交时打印相应的数组行。 – MG1 2010-11-01 16:52:22

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']数组,其中包含用户请求(检查)的所有$记录密钥。

您现在可以从$ records数组轻松获得所需的数据。

实施例:

foreach ($_POST['rows'] AS $key) 
{ 
    $selectedRecords[] = $records[$key]; 
}