当我点击提交时,数据会提交到数据库,但该书的网址ID会消失为---- book.php
我希望网址返回页面的ID,例如---- book.php中?ID = 3
是否可以将第一行保留为action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"
并添加value="<?php echo $book_id ?>"
?
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<input type="hidden" value="<?php echo $book_id ?>" name="book_id" />
<p>Author: <input type="text" value="<?php echo $_SESSION['author']; ?>" name="author" id="author" readonly /></p>
<p>Summary: <input type="text" name="summary" value="<?php echo $summary;?>" /></p>
<p><input type="submit" name="submit" value="Submit" /></p>
<input type="hidden" name="submitted" value="TRUE" />
</form>
PHP代码:
if (isset($_GET['id'])) {
$book_id = $_GET['id'];
}
答案 0 :(得分:0)
请尝试以下代码:
// save values in DB
header('Location: book.php?id=' . $book_id);
exit;
答案 1 :(得分:0)
您发送POST表单但正在尝试检索GET值。另外,参数名为book_id
,而不是id
。
使用$book_id = $_POST['book_id'];
if (isset($_GET['id'])) {
也没有工作。
答案 2 :(得分:0)
您可以使用以下任何一种:
PHP_SELF
只返回网址。使用返回带查询字符串的URL的REQUEST_URI
:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["REQUEST_URI"]);?>">
[你也可以省略动作值 - 具有相同的行为]
或者如果您只想要id
,请使用:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]) . "?id=" . $_GET['id'];?>">
注意:在必要时使用验证。我刚刚给了你一个主意。
答案 3 :(得分:0)
"id"
如果您想获得图书ID:
if (isset($_POST['book_id'])) {
$book_id = $_POST['book_id'];
}
OR 像这样修改HTML:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<input type="hidden" value="<?php echo $book_id ?>" name="id" />
<p>Author: <input type="text" value="<?php echo $_SESSION['author']; ?>" name="author" id="author" readonly />
</p>
<p>Summary: <input type="text" name="summary" value="<?php echo $summary;?>" /></p>
<p><input type="submit" name="submit" value="Submit" /></p>
<input type="hidden" name="submitted" value="TRUE" />
</form>
另一方面,如果您遇到POST问题,只需修改此第一行HTML:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]) . "?id=" . echo $book_id; ?>">
答案 4 :(得分:0)
这是因为 $ _ SERVER [&#34; PHP_SELF&#34;] 仅包含网址。它不包含get查询。要解决问题,请将操作留空
e.g
<form method="post" action="">.....