php - 提交表单

时间:2018-03-18 12:34:38

标签: php database forms file-upload

我有不同的容器,有不同的文件上传形式,但我无法弄清楚是什么错。当我上传文件时,我用于更新数据库的 $ _ POST 变量是错误的。

这是我用循环中打印容器的方式:

echo '<div class="container-r">'.$row['name'].'<div class="im-up">
    <label for="fileup"><img src="logo/upload.png" alt="Upload file"/></label>
    <form action="uploadFile.php" method="post" enctype="multipart/form-data">
        <input type="file" onchange="this.form.submit()" id="fileup" name="fileup"/>
        <input type="hidden" name="idd" id="idd" value="'.$row['id'].'" />
    </form></div><li>'.$row['evname'].'</li></div><br><br>';

我感兴趣的值是 idd 和Firefox的 inspect元素我可以看到所有形式的 idd 值都是正确的(在我的情况下,我有一个值为 10 的表单和一个值为 11 的第二个表单。

问题是,即使我使用 idd 11 的表单,也会直接在第二个php文件中获取 idd 变量来自 $ _ POST 数组 10

uploadFile.php 中我首先有这两行:

$id = $_POST['idd'];
var_dump($id);

$ id 总是 10 ,即使我来自价值 11 的表单。那么,我做错了什么?我该怎么检查?请注意,它是一个学习php的简单项目,它并不假装是一个高级项目。

编辑:这是完整的 uploadFile.php

<?php
// Start the session
session_start();
require 'connection.php';
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
    <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
    <title>Register</title>
    <link href="css/register.css" rel="stylesheet" type="text/css">
</head>
<body>
<table align="center" cellspacing="0" cellpadding="0">
    <tr valign="middle" align="center">
        <td class="menu" background="graphics/button.png" width="120" height="30">
            <a class="mm" href="home.php"><div>Home</div></a>
        </td>
        <td class="menu" background="graphics/button.png" width="120" height="30">
            <a class="mm" href="account.php"><div>Account</div></a>
        </td>
        <?php
                if(isset($_SESSION['loggedin'])){
                    echo '<td class="menu" background="graphics/button3.png" width="120" height="30"><a class="mm" href="logout.php"><div>Logout</div></a></td>';                       
                }
                else
                    echo '<td class="menu" background="graphics/button.png" width="120" height="30"><a class="mm" href="login.php"><div>Login</div></a></td><td class="menu" background="graphics/button3.png" width="120" height="30"><a class="mm" href="register.php"><div>Registrati</div></a></td>'?>
    </tr>
</table>

<?php
    $id = $_POST['idd'];
    var_dump($id);
    $uploaddir = 'progr/';
    $file2 = $uploaddir . basename($_FILES["fileup"]["name"]). date("h i");
    if (move_uploaded_file($_FILES["fileup"]["tmp_name"], $file2)) { 
            $stmt = $conn->prepare("UPDATE presentation SET pres_path=? WHERE user_id LIKE ? AND id LIKE ?");
            $stmt -> bind_param('sii',$file2,$_SESSION['idLog'],$id);
            if($stmt->execute())
                echo "<br><h4>The file ". basename( $_FILES["fileup"]["name"]). " was uploaded</h4>".$id;
            else
                echo mysqli_error($conn); 

    } else {
        echo "<br><h3>Uploading error</h3>";
    }
?>

</body>
</html>

1 个答案:

答案 0 :(得分:0)

通过隐藏输入,您可以调用 $ row [&#39; id&#39;] ,并使用帖子发送此值

input type="hidden" name="idd" id="idd" value=**"'.$row['id'].'**" 

您可以查看从哪里获得.$row['id'].

将此添加到您的页面,以查看您发送的内容。

<?php
echo '<pre> POST raport ';
print_r($_POST);  
echo '</pre>';
?>