如果在同一个php页面上不同时间提交两个$ _POST值,我怎么能缓存它们?

时间:2014-04-01 13:44:45

标签: php http-post

我有一个html表单,它通过$_POST生成第二个html表单。

第一个表单提交$_POST['id'],然后会生成另一个表单,提交$ _POST ['fields'],用于更新mysql db。但是,用于更新mysqli query的{​​{1}}依赖于db $_POST['id']值。

我无法解决如何在未$_POST['fields']重置的情况下提交$_POST['fields'],因为$_POST['id']正是由提交$_POST['fields']生成的。

我尝试将$_POST['id']值传递给$_POST,并且在成功传递值时,$_SESSION值将在提交$_POST['id']后始终重置为NULL。这是完整的代码:

$_POST['fields']

4 个答案:

答案 0 :(得分:1)

尝试会话变量。在PHP文件的顶部(在任何HTML之前)放置session_start(),然后设置$_SESSION['id'] = $_POST['id'],最后使用$_SESSION['id']访问mysql调用中的存储变量。

会话变量将保持可访问状态,直到用户关闭浏览器窗口(或大约20分钟后,超时时间),并且由于存储在服务器上而不是cookie,因此是安全的。

答案 1 :(得分:0)

生成第二个表单时,将$_POST['id']传递给它并将其放入hidden输入中。

答案 2 :(得分:0)

不知道是否是最好的方法,但在这种情况下,我会在第二种形式中添加一个名为ID的额外隐藏输入。

类似的东西:

echo "<input type='hidden' name='id' value='".$_POST['id']."' />";

答案 3 :(得分:0)

您可以在隐藏代码中发送id参数。

    for($column_value = 0; $column_value < 17; $column_value++) 
     {
        if (in_array($column_value, $exclude)) 
        {
            continue;
        }
            $field = mysqli_field_name($querytwo, $column_value);
            echo "<form method=\"POST\">" . "$field" . ": <input type=\"text\" name=\"fields\" value=\"$rowtwo[$column_value]\"> <input type=\"hidden\" name=\"id\" value=\"$_POST['id']\"> <input type=\"submit\"></form>";    
    }