如何将 php 变量传递给同一页面中的另一个表单?

Posted

技术标签:

【中文标题】如何将 php 变量传递给同一页面中的另一个表单?【英文标题】:How can I pass a php variable to another form in the same page? 【发布时间】:2016-04-03 18:58:00 【问题描述】:

我在同一个 php 页面中有两个表单。我必须将值保存在第一个表单中,然后保存到数据库中,我可以在下一个表单中使用这些值。

第一种形式的PHP代码:

<?php
    include 'config.php';
    if(isset($_POST['documentRequest']))
    
        $date = $_POST['reqDate'];
        $name = $_POST['name'];

        $insertSql = mysqli_query($conn, "INSERT INTO documentrequest(Person_idPerson, docrequest_date) VALUES ('$name', '$date');");

        //$sql = "INSERT into requestitem (DocumentRequest_idDocumentRequest, Document_idDocument) VALUE ((SELECT idDocumentRequest FROM documentrequest WHERE Person_idPerson = 6), 2)";

        header("Refresh: 2; url=doc_request.php");
        mysqli_close($conn);

    
?>

这是我的第一个表格:

<form class="form-horizontal form-label-left" name = "documentRequest" enctype="multipart/form-data" role="form" method="post" novalidate>

    <div class = "first">
    <div class="item form-group">
        <label class="control-label col-md-3 col-sm-3 col-xs-12">ID <span class="required">*</span></label>
        <div class="col-md-6 col-sm-6 col-xs-12">
            <input id="name" class="form-control col-md-7 col-xs-12" placeholder ="Type in ID number " name="name" required="required" type="number">
        </div>
    </div>

    <div class="ln_solid"></div>
    <div class="form-group">
        <div class="col-md-6 col-md-offset-3">
            <button id="requestDiv" type="submit" class="btn btn-success" name="documentRequest" >Proceed</button>
            <button type="submit" class="btn btn-primary">Cancel</button>
        </div>
    </div>
    </div>
</form>

第二种形式(这是在另一个 div 中):

<form class="form-horizontal form-label-left" name = "documentRequest" enctype="multipart/form-data" role="form" method="post" novalidate>
    <div class = "second">
        <div class="item form-group">
            <label class="control-label col-md-3 col-sm-3 col-xs-12"> Document Request(s)  <span class="required">*</span></label>
        <div class="col-md-6 col-sm-6 col-xs-12">
            <div class = "clearfix"></div>
            <p>Minimum of 1:<p>
            <input type="checkbox" name="docs[]" id="doc1" value="Certificate of Residency" /> Certificate of Residency
            <br/>
            <div class = "col-xs-3">
    <input name="d1" class="form-control col-md-7 col-xs-12" required="required" type="number">
                </div>
    <div class = "clearfix"></div>

    <input type="checkbox" name="docs[]" id="doc2" value="Barangay Clearance"  /> Barangay Clearance                                                    
    <br />
    <div class = "col-xs-3">
    <input name="d2" class="form-control col-md-7 col-xs-12" required="required" type="number">
    </div>


    <input id="a" class="form-control col-md-7 col-xs-12" name="a" value = "<?php echo isset($_POST['name'])? $_POST['name'] : "";?>" required="required" type="text">
    </div>
    </div>
    <div class="ln_solid"></div>
    <div class="form-group">
        <div class="col-md-6 col-md-offset-3">
            <button id="requestDiv" type="submit" class="btn btn-success" name="documentRequest" >Proceed</button>
            <button type="submit" class="btn btn-primary">Cancel</button>
    </div>
    </div>
</form>

基本上,我需要在下一个表单中使用 ID 的值,以便它知道它属于哪个 ID。下一个表单基本上是关于用户的请求(一系列复选框)。我怎样才能做到这一点?请帮我。谢谢。

【问题讨论】:

将您需要的 ID 作为文本保存在隐藏字段中。在后续页面上检索它。 会话可以工作。 如果表单在同一页面上,您应该能够从 $_POST 中第一个表单的提交值中检索 感谢您的想法。将尝试使用会话以及 $_POST。 【参考方案1】:

我很确定当您调用header("Refresh: 2; url=doc_request.php"); 时,您正在刷新页面并丢失提交的表单数据。


如果您从逻辑中删除它,这将起作用:

在您需要值的第二种形式中,执行以下操作:

<input id="name2" class="form-control col-md-7 col-xs-12"  name="other-name" required="required" type="number" value="<?php echo isset($_POST['name']) ? $_POST['name'] : '';?>">

如果发布的值存在,这将自动将发布的值添加到第二个表单的输入元素值

请注意,首先检查isset() 是必要的。尝试简单地回显该值会导致在该值不存在时引发错误(在提交第一个表单之前)


否则你可以使用sessions来达到这个效果:

在您的 php 页面的最顶部添加:

session_start();
$_SESSION['name']=isset($_POST['name']) ? $_POST['name'] :'';

然后在你的第二种形式中这样做:

<input id="name2" class="form-control col-md-7 col-xs-12"  name="other-name" required="required" type="number" value="<?php echo $_SESSION['name']">

【讨论】:

感谢您的创意!将尝试解决这个问题。 顺便问一下,我的页面需要有会话吗? 此方法不需要会话。如果您需要超过这一点的价值,您真的只需要会话。 好的,再次感谢您。如果最后没问题,我会告诉你的。 @WandaMaximoff 您能否更新以显示两种表单的完整 html【参考方案2】:

如果您的表单操作返回到同一页面,您可以试试这个:

<form id="form-two">
<input id="name" name="name" value="<?php echo $_POST['name']; ?>">
</form>

【讨论】:

如果发布的值不存在会报错,需要先检查isset()

以上是关于如何将 php 变量传递给同一页面中的另一个表单?的主要内容,如果未能解决你的问题,请参考以下文章

将变量从一个表传递到另一个 PHP 页面中的另一个 [重复]

将多个变量传递到 url 中的另一个页面

如何将快照数据从 futurebuilder 传递到同一页面中的另一个 futurebuilder?

如何将变量的值从一个 div 传递到同一模板中的另一个 div?

如何将一个道具作为变量传递给 React 中的另一个道具?

PHP 通过 SQL 查询中的 Href 链接将变量传递给弹出页面