如何使用 href 发送 2 个值?
How to send 2 values with href?
我正在尝试在整个 href 中发送 2 个值。如果我发送一个值,例如 - id,一切都很好。
这是我的代码:
<select id="options" name="options" method="post">
<option value="opt1">Option one</option>
<option value="opt2">Option two</option>
<option value="opt3">Option three</option>
</select>
<br>
<a href="cart.php?action=update&id=<?php echo $row['id']?>">
<span class="btn btn-success">Change</span>
</a>
$row
有我获取的数据,所以我从那里得到我的 ID。我还想发送一个在下拉列表中选择的值。我会将这些值发送到此:
if($_GET["action"] == "update") {
$stat = $_GET['options'];
$itemID = $_GET['id'];
$sql = "UPDATE orders
SET status = '$stat'
WHERE id = '$itemID'";
$connect->query($sql);
header("location:index.php?status=1");
}
可是我的$stat
里面什么都没有。
我尝试了互联网上几乎所有可能的解决方案,但没有一个解决了我的问题。
您使用的是 post 方法,因此请使用 $_POST 而不是 $_GET,并且您应该先连接数据库,然后再向其中写入任何内容。对这类事情使用表单标签可能也更聪明,请参阅 https://www.w3schools.com/tags/tag_form.asp 。希望对你有帮助
要使这项工作适合您的情况,您需要使用带有 GET 方法的 FORM。不是 select 元素上的方法。
<form method="GET" action="cart.php">
<input type="hidden" name="action" value="update">
<input type="hidden" name="id" value="<?php echo $row['id'] ?>">
<select id="options" name="options">
<option value="opt1">Option one</option>
<option value="opt2">Option two</option>
<option value="opt3">Option three</option>
</select>
<button class="btn btn-success" type="submit">Change</button>
</form>
选择选项 1 将提交给 cart.php?action=update&id=1&options=opt1
。
另一种选择是使用 POST:
<form method="POST" action="cart.php?action=update&id=<?php echo $row['id'] ?>">
<select id="options" name="options">
<option value="opt1">Option one</option>
<option value="opt2">Option two</option>
<option value="opt3">Option three</option>
</select>
<button class="btn btn-success" type="submit">Change</button>
</form>
然后在你的 PHP:
$action = $_POST['action'];
$options = $_POST['options'];
//etc
请记住,您 易受 攻击 SQL 注入,应使用 prepared statements.
这是您代码中的两个错误,您使用的方法是 post 方法而不是 get,另一个是您没有表单执行该方法,您需要创建 select 作为表单才能正常工作。
我正在尝试在整个 href 中发送 2 个值。如果我发送一个值,例如 - id,一切都很好。
这是我的代码:
<select id="options" name="options" method="post">
<option value="opt1">Option one</option>
<option value="opt2">Option two</option>
<option value="opt3">Option three</option>
</select>
<br>
<a href="cart.php?action=update&id=<?php echo $row['id']?>">
<span class="btn btn-success">Change</span>
</a>
$row
有我获取的数据,所以我从那里得到我的 ID。我还想发送一个在下拉列表中选择的值。我会将这些值发送到此:
if($_GET["action"] == "update") {
$stat = $_GET['options'];
$itemID = $_GET['id'];
$sql = "UPDATE orders
SET status = '$stat'
WHERE id = '$itemID'";
$connect->query($sql);
header("location:index.php?status=1");
}
可是我的$stat
里面什么都没有。
我尝试了互联网上几乎所有可能的解决方案,但没有一个解决了我的问题。
您使用的是 post 方法,因此请使用 $_POST 而不是 $_GET,并且您应该先连接数据库,然后再向其中写入任何内容。对这类事情使用表单标签可能也更聪明,请参阅 https://www.w3schools.com/tags/tag_form.asp 。希望对你有帮助
要使这项工作适合您的情况,您需要使用带有 GET 方法的 FORM。不是 select 元素上的方法。
<form method="GET" action="cart.php">
<input type="hidden" name="action" value="update">
<input type="hidden" name="id" value="<?php echo $row['id'] ?>">
<select id="options" name="options">
<option value="opt1">Option one</option>
<option value="opt2">Option two</option>
<option value="opt3">Option three</option>
</select>
<button class="btn btn-success" type="submit">Change</button>
</form>
选择选项 1 将提交给 cart.php?action=update&id=1&options=opt1
。
另一种选择是使用 POST:
<form method="POST" action="cart.php?action=update&id=<?php echo $row['id'] ?>">
<select id="options" name="options">
<option value="opt1">Option one</option>
<option value="opt2">Option two</option>
<option value="opt3">Option three</option>
</select>
<button class="btn btn-success" type="submit">Change</button>
</form>
然后在你的 PHP:
$action = $_POST['action'];
$options = $_POST['options'];
//etc
请记住,您 易受 攻击 SQL 注入,应使用 prepared statements.
这是您代码中的两个错误,您使用的方法是 post 方法而不是 get,另一个是您没有表单执行该方法,您需要创建 select 作为表单才能正常工作。