2017-04-06 7 views
0

HTMlとPHPでファイルをアップロードして現在のWebページを作成し、CSVを読み込んでデータベースに挿入しました。これはすべて正常に動作しますが、データを送信してデータベースに挿入する前に、ユーザーにデータを表示することはかなり簡単で無駄な方法を見つけることを試みています。今すぐ私の送信ボタンは、PHPに投稿し、すぐにVARのダンプを行い、DBに挿入します。ファイルがアップロードボックスに追加されるとすぐに、ページに表示する方法がかなり簡素化されることを願っています。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ファイルが大きければうまくいかない可能性があります。また、CSVファイルを再度投稿するには時間がかかる可能性があります。 – Augwa

+1

大規模なものを扱う場合は、処理する行の数をcsvから制限して、全体よりも多くのプレビューを処理することができます。 – Augwa

関連する問題