Записать данные массива php для строк, выбранных флажком в файл - PullRequest
0 голосов
/ 01 ноября 2010

Я написал это для отображения данных из 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 ]

1 голос
/ 01 ноября 2010

Я переписал твой сценарий, потому что считаю его нечистым и трудным для чтения.

$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 ['lines'], содержащий все ключи $ record, запрошенные (проверенные) пользователем.

Теперь вы можете легко получить необходимые данные из массива $ records.

Пример:

foreach ($_POST['rows'] AS $key)
{
    $selectedRecords[] = $records[$key];
}
1 голос
/ 01 ноября 2010

Чтобы отправить массив, добавьте [] к имени элемента. Фактическое числовое значение не является обязательным. Так что бери что у тебя и меняй

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'] будет массив после отправки формы.

...