始终使用$ _POST中的最后一个值

时间:2014-07-07 19:41:20

标签: php

尝试制作一个标记项目的按钮,让它使用单个项目但是如果我有一个包含多个订单的列表,它总是使用最后一个项目的$ 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>

2 个答案:

答案 0 :(得分:0)

你这里有一个错字:

  "<form>" . "<br>";
}

将其更改为</form>

由于您有多个打开的表单,原始表单不会关闭。这就是原因,我觉得你有第一个或最后一个提交相同的值......

另请记住使用mysqli_real_escape_string()

答案 1 :(得分:0)

您的代码有很多话要说,我认为您应该重新考虑,特别是有关安全性的提示(提示:POST = ' OR ''=')。

你的直接问题来自这一行:

echo "<div id=" . $status .">" ....  "value=" . "SHIPPED" . ">" . "<form>" . "<br>";

在您编写<form>而不是</form>的最后一个细分中,这会创建一个单一的大表单,而不是一系列表单,因此始终使用最后一个项目ID。