我有两个动态下拉菜单,每个都有自己的提交按钮。
第一个下拉 $_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();
}
?>
最佳答案
您可以将 $_POST['dropdownItemID']
作为隐藏输入放在第二个表单中:
echo '<input type="hidden" name="dropdownItemID" value="' . $_POST['dropdownItemID'] . '">;
关于php - 需要保存两次提交的 $_POST 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43012157/