【问题标题】:Need to save the $_POST data from two submits需要保存两次提交的 $_POST 数据
【发布时间】:2017-08-18 03:20:09
【问题描述】:

我有两个动态下拉菜单,每个下拉菜单都有自己的提交按钮。

在用户点击提交后,第一个下拉 $_POST 数组由:$_POST['dropdownItemID'] 访问。

在用户点击$_POST['dropdownItemID'] 的提交按钮后,第二个下拉列表获取其数据,并使用用户想要的项目数填充其下拉列表。按下提交按钮后,$_POST 数组被访问:$_POST['dropdownItems']。似乎在用户从第二个下拉列表中点击提交后,$_POST['dropdownItemID'] 不再可用。

我正在尝试使用它来插入到 mySQL $stmt3->bindParam(':ItemID', $_POST['dropdownItemID'], PDO::PARAM_INT); 我注意到如果我输入一个整数,则可以触发 INSERT。任何帮助将不胜感激。

<?php
$username = $_SESSION['username'];
$pdo = new PDO("mysql:host=127.0.0.1;dbname=acacs;port=8889", 'root', 'root');
$pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, TRUE);
$pdo->setAttribute( PDO::ATTR_EMULATE_PREPARES, FALSE);

$sql = "SELECT ItemID
FROM Item";
$stmt = $pdo->prepare($sql);
//Execute the statement.
$stmt->execute();
//Retrieve the rows using fetchAll.
$users = $stmt->fetchAll();
?>
<body>

<form method="POST">
<select id="dropdownItems" name="dropdownItemID">
    <?php foreach($users as $user): ?>
        <option value="<?= $user['ItemID']; ?>"><?= $user['ItemID']; ?></option>
    <?php endforeach; ?>
</select>
    <p>
        <input type="submit" value="Submit Item choice" name="item"/>
    </p>
</form>

<?php if(isset($_POST['dropdownItemID'] )){
    $sql2 = "SELECT SUM(DISTINCT (NumberOfUnits))
    FROM Item WHERE ItemID =  " . $_POST['dropdownItemID'];

    $stmt2 = $pdo->prepare($sql2);
//Execute the statement.
    $stmt2->execute();
//Retrieve the rows using fetchAll.
    $users2 = $stmt2->fetchColumn();
    #$var = var_dump($users5);
    $range = range(1, $users2);
    echo "<p>";
    echo "ItemID: " . $_POST['dropdownItemID'] . " Is Currently Selected";
    echo "</p>";

    echo "<form method=\"POST\">";
    echo "<select id=\"dropdownNumberOfItems\" name=\"dropdownItems\">";
    foreach ($range as $numberofitems) {
        echo "<option value='$numberofitems'>$numberofitems Items</option>";
    }
    echo "</select>";
        echo "<p>";
        echo "<input type=\"submit\" value=\"Submit Request\"/>";
    echo "</p>";
echo "</form>";

}
?>

<?php if(isset($_POST['dropdownItems'])) {
    $sql3 = "INSERT INTO Request(RequestID,
            UserName,
            TimeStamp,
            ServiceID,
            ItemID,
            ItemQuantity,
            ItemProvided,
            Status) VALUES (
            :RequestID, 
            :UserName, 
            :TimeStamp, 
            :ServiceID, 
            :ItemID,
            :ItemQuantity,
            :ItemProvided,
            :Status)";

    $stmt3 = $pdo->prepare($sql3);

    $stmt3->bindValue(':RequestID', NULL, PDO::PARAM_NULL);
    $stmt3->bindValue(':UserName', $username, PDO::PARAM_STR);
    $stmt3->bindValue(':TimeStamp', 1489874423, PDO::PARAM_INT);
// use PARAM_STR although a number
    $stmt3->bindValue(':ServiceID', 400003, PDO::PARAM_INT);
    $stmt3->bindParam(':ItemID', $$_POST['dropdownItemID'], PDO::PARAM_INT);
    $stmt3->bindParam(':ItemQuantity', $_POST['dropdownItems'], PDO::PARAM_INT);
    $stmt3->bindValue(':ItemProvided', 0, PDO::PARAM_INT);
    $stmt3->bindValue(':Status', 'pending', PDO::PARAM_STR);

    $stmt3->execute();
    $lastId = $pdo->lastInsertId();
}
?>

【问题讨论】:

    标签: php html mysql post pdo


    【解决方案1】:

    您可以将$_POST['dropdownItemID'] 作为隐藏输入放在第二个表单中:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-29
      • 1970-01-01
      • 2014-12-03
      • 2016-05-07
      • 2013-12-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多