Загрузка CSV с последующим сохранением результата в массив - PullRequest
0 голосов
/ 31 марта 2012

Я работал над этой проблемой в течение нескольких часов и использовал много ресурсов из Интернета и переполнения стека, но, похоже, я не могу обойти эту последнюю вещь.Я пытаюсь получить содержимое файла csv, сохранить его в массиве и распечатать результаты на другой странице через сеанс.

index.php (показывает форму для загрузки файла)

<html>
<form action="http://mysite.org/~me/upload.php" method="POST" enctype="multipart/form-data">
<input type="file" name="file"><br />
<input type="submit" value="Now upload it!">
</form>
</html>

upload.php (если CSV, размер выходного файла, print_r массив, который должен содержать все данные)

<?php
session_start();

if (($_FILES["file"]["type"] == "application/vnd.ms-excel"))
{
  if ($_FILES["file"]["error"] > 0)
    {
        echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }
else
{
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";

    $file = fopen($_FILES["file"]["tmp_name"], 'r');
    while (($line = fgetcsv($file)) !== FALSE) {
    //$line is an array of the csv elements
    print_r($line);
    $_SESSION['line']=$line;

}
fclose($file);

   }
 }
else
 {
 echo "Invalid file";
 }
  echo "<a href='http://mysite.org/~me/yes.php'>Yes</a>";

 ?>

yes.php

<?php
session_start();
$data = $_SESSION['line'];
print_r($data);
?>

The print_rсо страницы загрузки должен быть таким же, как print_r со страницы да, но это не так.Это только показывает последний массив.Я не понимаю, как бы я решил эту проблему.

В качестве примечания: я программирую на php всего 2 недели, поэтому, пожалуйста, будьте достаточно внимательны, чтобы объяснить свои ответы.Это действительно помогает!Спасибо =)

1 Ответ

2 голосов
/ 31 марта 2012

Вам нужно добавить вместо перезаписать $_SESSION['line'].

Вместо:

$_SESSION['line'] = $line; // overwriting $_SESSION['line'] w/ each iteration

Вам необходимо:

$_SESSION['lines'][] = $line; // pushes the line to an array

Затем, yes.php , вы можете:

session_start();
$data = $_SESSION['lines'];
print_r($data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...