2012-03-31 34 views
0

我一直在研究這個問題幾個小時,並使用了來自網絡和堆棧溢出的許多資源,但我似乎無法通過這最後一件事。我正在嘗試獲取csv文件的內容並將它們存儲在數組中,並通過會話將結果打印在另一頁上。上傳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); 
?> 

來自上傳頁面的print_r應該與來自yes頁面的print_r相同,但是我t不是。它只顯示最後一個數組。我不明白我會怎麼處理這個問題。

作爲一個方面說明:我只在PHP編程約2周,所以請足夠深思熟慮以解釋您的答案。這真的有幫助!謝謝=)

回答

2

你需要追加而不是覆蓋$_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); 
+1

哦!所以即使$ line是一個數組。每當while循環運行時它都會被覆蓋。所以,爲了追加,我必須創建另一個數組。疑難雜症。感謝您的明確迴應。 – EGHDK 2012-03-31 03:58:07

+0

是的,你懂了! – Josh 2012-03-31 03:59:26

相關問題