php - 需要保存两次提交的 $_POST 数据

标签 php html mysql post pdo

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

第一个下拉 $_POST 数组通过以下方式访问:$_POST['dropdownItemID'] 在用户点击提交后。

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

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

enter image description here

<?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();
}
?>

最佳答案

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

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

关于php - 需要保存两次提交的 $_POST 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43012157/

相关文章:

PHPunit 文件测试

php - 如何在 MY_Model 中传递 (is not null)

html - 如何以不同的顺序显示 css 网格?

javascript - 纯 JavaScript : Getting children of body returns undefined

javascript - 使用 MySQL/Javascript 计算百分比

sql - 从一个表中查找另一个表中不存在的记录

php - 如何用php删除表中的特定行

php - 将文件从 localhost 传输到 Bluehost

php - 计算多个运输订单(php/mysql)

html - 是什么原因导致这种奇怪的显示?我怀疑这可能是 CSS 或 Chrome OS X 中的错误?