2017-04-06 72 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