这是我的第二个代码,但问题是我有3个查询。所以它只返回最后一个product_id当我点击更新它总是返回product_id = 3,但我想更新product_id = 2
<form action="update_qty.php" method="POST">
<?php while($getorder = mysqli_fetch_array($order)){ ?>
<input type="hidden" value="<?=$getorder['price']?>" name="actual_price">
<input type="hidden" value="<?=$getorder['product_id']?>" name="product">
<input type="text" value="<?=$getorder['qty']?>" name="qty" size="1" style="text-align:center">
<input type="submit" value="update" name="update">
<?php } ?>
</form>
答案 0 :(得分:0)
您可以添加更多信息,例如
<a href="update_qty.php?product_id=<?=$getorder['product_id']?>&type=text">update</a>
答案 1 :(得分:0)
你的问题是PHP是服务器端,你需要客户端的东西来读取文本框的值。您需要页面刷新才能将文本字段值传递给服务器,以便将其写入锚标记中的URL。表单提交的内容是什么,但由于它已经提交了值,因此锚标记将毫无意义
要在没有页面刷新的情况下使用Javascript。使用jQuery很容易。您可以添加一个事件,该事件会在键入时将锚标记href写入文本框中输入的内容。
答案 2 :(得分:0)
<a href="update_qty.php?product_id=<?php echo $getorder['product_id']?>">update</a>
在update_qty.php
上你可以像这样使用
<?php echo $_GET['product_id'];?>
答案 3 :(得分:0)
我会做更像这样的事情。 每个产品一个表单。在您提交表单的情况下,qty值将始终为las。
<?php while($getorder = mysqli_fetch_array($order)){ ?>
<form action="update_qty.php" method="POST">
<input type="hidden" value="<?=$getorder['price']?>" name="actual_price">
<input type="hidden" value="<?=$getorder['product_id']?>" name="product">
<input type="text" value="<?=$getorder['qty']?>" name="qty" size="1" style="text-align:center">
<input type="submit" value="update" name="update">
</form>
<?php } ?>
答案 4 :(得分:0)
您无法获得所有值,因为输入名称会在每次循环迭代中覆盖。
对于多个值,您可以尝试两种方式:
<?php
while($getorder = mysqli_fetch_array($order)){
$newArr[] = $getorder['price']."~".$getorder['product_id']."~". $ getorder['qty'];
} //while end
?>
<input type="hidden" name="allinputs" value="<?=$newArr?>">
循环外的输入字段。
在php中使用〜展开数组值并获取所有值。
其他解决方案就是这样 您的输入字段名称必须更改为:
<?php while($getorder = mysqli_fetch_array($order)){ ?>
<input type="hidden" value="<?=$getorder['price']?>" name="actual_price_<?=$getorder['product_id']?>">
<?php } ?>
在每次迭代中更改字段名称。
在当前场景中,您需要三个不同的按钮或使用AJAX请求的最佳解决方案。