2017-04-06 5 views
0

ファイルを受け取り、PHPを介してデータベースに提出するHTMLファイルアップロードフォームがあります。コード:HTMLフォーム、2つの異なるPHPアクション/ファイル用の2つのスタイルボタンを提出する

<form method="post" action="confirm.php" enctype="multipart/form-data"> 
<label>Upload File</label> 
<input type="file" name="file"> 
<input type="submit" name="submit" value="Preview" formtarget="_blank"> 
</form> 

私の問題は、プレビュー用のPHPと提出用のPHPを組み合わせる必要があることです。どちらも$ファイルを使用して独立して動作しますが、ユーザーがアップロードする - >プレビューボタンを押す - >情報をプレビューする - >ヒットを送信する - >情報がデータベースに保存されますが、無効。

<body> 
<div class="phpTableWrap"> 
<?php 

$server = "localhost"; 
$user = "root"; 
$pw = "root"; 
$db = "uwsTest"; 

$connect = mysqli_connect($server, $user, $pw, $db); 

if ($connect->connect_error) { 
die("Connection failed: " . $conn->connect_error); 
}else{ 
    echo'success!'; 
} 

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

$file = $_FILES["file"]["tmp_name"]; 
$handle = fopen($file, "r"); 
$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>'; 
    } 
?> 
</div> 

ようにPHPファイルの両方にアップロードされたファイルを共有する方法があります: 私は、それをデータベースに送信する前に情報を確認するようにようにするために、HTMLテーブルの内容を表示するには、いくつかのPHPコードを使用しましたプレビューページからデータを挿入できますか?

+1

あなたはAJAXとの両方のPHPファイルへのアップロードをPOSTではなく、HTMLフォームに依存している必要がありますアクション。 –

+0

しかし、confirm.phpでプレビューテーブルを表示し、upload.phpの最終送信ボタンを押すことを許可するにはどうすればよいですか? –

+1

プレビューのコールバックを使用してプレビューを送信し、データを表示して送信ボタンを表示すると、次の投稿が送信されます。 –

答えて

1

あなたのプレビューボタンを提出する前に、JavaScriptを使用して<input type='hidden' name='action' value='preview' />などの隠しフィールドを追加し、PHPファイルのそれを検知してください:

if ($_POST['action'] == 'preview') { 
// do preview stuff 
} 
+0

パーフェクト、ありがとう! –

+0

簡単な質問:プレビュー関数のPHPの周りにif($ _ POST ....)コードがあり、その後に提出PHPコードの投稿投稿があります。私はまた、私のフォームに隠れた入力タイプを追加しました。これはこのインスタンスの正しいjavascriptでしょうか? var x = document.createElement( "INPUT"); x.setAttribute( "type"、 "hidden"); –

+0

要素を作成しますが、名前属性と値属性を追加してフォームに追加する必要があります。あなたのフォームにid = "myForm"を追加します。var form = document.getElementById( "myForm"); form.appendChild(x); –