尝试制作一个标记项目的按钮,让它使用单个项目但是如果我有一个包含多个订单的列表,它总是使用最后一个项目的$ id而不是我想要的那个是我的PHP代码:
<?php
$con=mysqli_connect("-------","-------","-------","admin");
$result = mysqli_query($con,"SELECT * FROM Orders");
while($row = mysqli_fetch_array($result)) {
$firstname = $row['firstname'];
$id = $row['id'];
$status = $row['status'];
echo "<div id=" . $status .">" . $row['id'] . " " . $firstname . " " . $status . "</div>" .
"<form id=" . "form1" . " " . "name=" . "form1" . " " . "method=" . "post" . " " .
"action=" . " " . ">" .
"<input type=" . "hidden" . " " . "name=" . "mark" . " " .
"value=" . $id . ">" .
"<input type=" . "submit" . " " . "name=" . "sendvalue" . " " .
"value=" . "SHIPPED" . ">" .
"</form>" . "<br>";
}
if(isset($_POST['mark'])){
$test = $_POST['mark'];
mysqli_query($con,"UPDATE Orders SET status='shipped'
WHERE id='$test'");
echo $test;
}
我纠正了错误,这只是一个错字......
这是输出:
<html>
<head>
<style>
#shipped{color:green}
#unshipped{color:red}
</style>
</head>
<body>
<div id="unshipped">1 Jamie unshipped</div>
<form id="form1" name="form1" method="post" action="">
<input type="hidden" name="mark" value="1">
<input type="submit" name="sendvalue" value="SHIPPED">
</form>
<br>
<div id="shipped">6 Callum shipped</div>
<form id="form1" name="form1" method="post" action="">
<input type="hidden" name="mark" value="2">
<input type="submit" name="sendvalue" value="SHIPPED">
</form>
<br>
</body>
</html>
答案 0 :(得分:0)
你这里有一个错字:
"<form>" . "<br>";
}
将其更改为</form>
。
由于您有多个打开的表单,原始表单不会关闭。这就是原因,我觉得你有第一个或最后一个提交相同的值......
另请记住使用mysqli_real_escape_string()
。
答案 1 :(得分:0)
您的代码有很多话要说,我认为您应该重新考虑,特别是有关安全性的提示(提示:POST = ' OR ''='
)。
你的直接问题来自这一行:
echo "<div id=" . $status .">" .... "value=" . "SHIPPED" . ">" . "<form>" . "<br>";
在您编写<form>
而不是</form>
的最后一个细分中,这会创建一个单一的大表单,而不是一系列表单,因此始终使用最后一个项目ID。