【问题标题】:passing an array result to an html form将数组结果传递给 html 表单
【发布时间】:2019-01-28 20:58:50
【问题描述】:

我有一个 mysqli 查询的结果返回并显示在 page1 上。当用户单击“立即注册”链接时,它会在 page2 上向他们发送一个 HTML 表单。我需要将 page1 中的某些数据(例如:$row[1])传递给 page2 上的 html 表单。我被困住了。任何建议表示赞赏。

----这是trip_1.php的更新代码:---

<?php
include('includes/connection.php');


if(isset($_POST['clicked'])) { 
## you can use GET Method or SESSIONS


## with get    
header("Location : reserve-form.php?ID=".$row[1]."");
## or
}

$sql="SELECT * FROM trips WHERE id='1' AND active='1'";
$results=mysqli_query($connection, $sql);

if (mysqli_num_rows($results) < 1) {
echo "<br>We are working on this trip's details.<br><br><h3 
style='color:#C8FE2E'>Check back soon!</h3>";
}   else {

while($row=mysqli_fetch_array($results)) {
    echo"Trip ID: ".$row[1].
        "<br>Date: ".$row[3].
        "<br>Departs From: ".$row[4].
        "<br>Departure Time: ".$row[5]
        ; 
    echo "";
    } 
}
mysqli_close($connection);
?>

<form action="reserve-form.php" method="POST">
<button type="submit" name="clicked">RegisterNow</button>
</form>
...

我需要 .$row[1]。传递到 PAGE2 上的表单字段 (name=tripID)

---这里是reserve-form.php的更新代码:---

<div class='container' id='new-form'>
<div class='row'>
    <div class='col-lg-12'>
     <h2>Reserve your Seat</h2>
<hr/>
<form id="reservation_form" action="/insert-form.php" method="post" >

<div class="form-group">
    <label>Trip ID#</label>
    <input class="form-control" type="text" name="tripID" value="<?php echo 
    $_GET['ID']; ?>" disabled>
</div>

<div class="form-group">
    <label>First Name</label>
    <input class="form-control" type="text" name="firstName" required >
</div>


...

【问题讨论】:

  • 如何访问第 2 页?带链接?如果是....您可以使用 $_GET - 参数将您的 $row[1] 拉到第二页或将其保存在 SESSION 中。
  • 用户如何从 page1 到 page2?他们在提交表格吗?如果是这样,添加一个隐藏输入,将该值作为表单的一部分提交
  • 会话变量可能是最好的。如果您将其作为 URL 参数或隐藏输入传递,则用户可以更改它。
  • 是的。对不起,用户点击页面底部的“注册旅行”。我对 $GET 或使用 SESSION 不是很熟悉。是在 page1 上完成的吗?
  • 我不会使用会话来传递或保存变量,因为它不是很可靠。如果数据不敏感并且您有针对恶意数据的保护措施,那么使用$_GET(又名查询字符串)将是最简单的

标签: php mysqli forms


【解决方案1】:

您可以通过以下几种方式在表单第 2 页的 URL 中附加一个查询字符串:

form-page2.php?name=name&trip=tripID

然后使用 GET['name'] 和 GET['trip'] 抓取第二页上的内容。

另一种选择是将它们设置在 $_SESSION 变量中并以这种方式检索它们。

任何一种方式都可以。

【讨论】:

    【解决方案2】:

    另一种解决方案是使用隐藏的输入类型传递要保留在表单中的数据。 因此它将使用 POST 而不是 GET,这通常更好,因为它不会污染 URL 并且具有更大的大小限制。

    <?php
    include('includes/connection.php');            
    
    $sql="SELECT * FROM trips WHERE id='1' AND active='1'";
    $results=mysqli_query($connection, $sql);
    
    if (mysqli_num_rows($results) < 1) {
    echo "<br>We are working on this trip's details.<br><br><h3 
    style='color:#C8FE2E'>Check back soon!</h3>";
    }   else {
    # put trip ID in a temporary variable
    $tripID = 0;
    while($row=mysqli_fetch_array($results)) {
        echo"Trip ID: ".$row[1].
            "<br>Date: ".$row[3].
            "<br>Departs From: ".$row[4].
            "<br>Departure Time: ".$row[5]
            ;
        $tripID = $row[1];
        echo "";
        } 
    }
    mysqli_close($connection);
    ?>
    
    <form action="reserve-form.php" method="POST">
    # use tripID and pass it as an attribute of your form
    <input type="hidden" name="tripID" value="<?php echo $tripID; ?>"/>
    <button type="submit" name="clicked">RegisterNow</button>
    </form>
    

    然后是你的第二页:

    <div class='container' id='new-form'>
    <div class='row'>
        <div class='col-lg-12'>
         <h2>Reserve your Seat</h2>
    <hr/>
    <form id="reservation_form" action="/insert-form.php" method="post" >
    
    <div class="form-group">
        <label>Trip ID#</label>
        <input class="form-control" type="text" name="tripID" value="<?php echo 
        $_POST['tripID']; ?>" disabled>
    </div>
    
    <div class="form-group">
        <label>First Name</label>
        <input class="form-control" type="text" name="firstName" required >
    </div>
    
    
    ...
    

    【讨论】:

    • 是的,先生。这样可行。谢谢你的帮助。我被难住了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-05
    • 2013-10-15
    • 2012-10-18
    • 2013-09-24
    • 1970-01-01
    相关资源
    最近更新 更多