2017-04-06 70 views
0

我有一個當前的網頁,使用HTMl和PHP上傳文件來讀取CSV並插入數據庫。這一切工作正常,但我試圖找到一種相當快速和無痛的方式向用戶顯示數據,然後再提交併插入數據庫。現在我的提交按鈕發佈到PHP,並立即執行VAR轉儲並插入數據庫。我希望在文件被添加到上傳框後,有一種相當簡單的方式可以在頁面上顯示它。PHP網頁 - 在插入數據庫之前預覽CSV上傳

if(isset($_POST['submit'])) 
{ 
ini_set('auto_detect_line_endings', true); 

$file = $_FILES["file"]["tmp_name"]; 
$handle = fopen($file, "r"); 

while(!feof($handle)){ 
$filesop = print_r(fgetcsv($handle, 0, ",")); 
} 


$coldata = array(); 

$coldata[ "orderNumber" ] = $filesop[0]; 
$coldata[ "place" ] = $filesop[1]; 
$coldata[ "workOrderNum" ] = $filesop[2]; 
$coldata["lowSideMIUNum"] = $filesop[3]; 
//rest of array elements and insert statement 
+0

* * 「表示數據傳送給用戶之前** **提交併插入到數據庫中的」 - **和** - *」在**將文件添加到上傳框中後立即在頁面上顯示**「 - - 似乎相互矛盾。 –

+0

對不起,這是一個很好的觀點。後者會很好,但主要是我只需要在插入到db之前顯示它。 –

回答

1

輸出它作爲一個HTML表格

$maxPreviewRows = PHP_INT_MAX; // this will be ~2 billion on 32-bit system, or ~9 quintillion on 64-bit system 
$hasHeaderRow = true; 

echo '<table>'; 

if ($hasHeaderRow) { 
    $headerRow = fgetcsv($handle); 
    echo '<thead><tr>'; 
    foreach($headerRow as $value) { 
     echo "<th>$value</th>"; 
    } 
    echo '</tr></thead>'; 
} 

echo '<tbody>'; 

$rowCount = 0; 
while ($row = fgetcsv($handle)) { 
    echo '<tr>'; 
    foreach($row as $value) { 
     echo "<td>$value</td>"; 
    } 
    echo '</tr>'; 

    if (++$rowCount > $maxPreviewRows) { 
     break; 
    } 
} 
echo '</tbody></table>'; 
+0

那麼我會運行這個並添加一個提交按鈕到這個運行插入的頁面? –

+1

您需要將上傳的文件存儲在某個地方,以便您可以再次訪問它,或者將該文件的來源作爲隱藏字段包含在此頁面中。前者更好,因爲如果CSV文件很大,它甚至可能無法工作,並且可能需要一段時間才能重新發布。 – Augwa

+1

同樣,如果您處理的是較大的行爲而不是整個行爲,那麼您可能希望限制從csv處理的行數。 – Augwa