HTML表单,2个提交样式按钮,用于2个不同的PHP操作/文件

时间:2017-04-06 20:21:17

标签: php html sql post

我有一个HTML文件上传表单,它接受一个文件并通过PHP将其提交到数据库,工作正常。代码:

<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。两者都使用$ file独立工作,但我试图让用户上传 - &gt;点击预览按钮 - &gt;预览信息 - &gt;点击提交 - &gt; info进入数据库,但上传php会说文件无效。 我使用了一些PHP代码来显示html表中的内容,以便在将信息提交到数据库之前验证信息,如下所示:

<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文件共享上传的文件,以便我可以从预览页面插入数据?

1 个答案:

答案 0 :(得分:1)

使用预览按钮在提交之前使用javascript添加隐藏字段,例如<input type='hidden' name='action' value='preview' />,并在PHP文件中检测到该字段:

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