首先我是 php 初学者,其次我试图追踪隐藏输入的值,即“表产品中图像的 ID”,但是每当我单击任何图像的删除按钮时,它总是给我产品表中最后一张图片的最后一个 ID,当我将输入更改为文本时,它会打印正确的 ID,但如果我将它与 POST 一起使用,它将不起作用。
代码如下:
<?php
if(isset($_POST['delete'])){
$dataBase = mysql_connect("localhost","root","");
mysql_select_db('HouseOfCake');
$PID = $_POST['PID'];
echo $PID ;
}
?>
<!DOCTYPE html>
<html>
<head>
<style>
</style>
</head>
<body>
<form method="POST" action="Delete.php">
<div class="container">
<?php
$dataBase = mysqli_connect("localhost","root","" , "HouseOfCake");
?>
<div class="row text-center">
<?php
$r=mysqli_query($dataBase,"SELECT*FROM Products");
while($Products=mysqli_fetch_array($r, MYSQLI_ASSOC)){
?>
<div class="col-lg-3 col-md-6 mb-4">
<div class="card" name= <?php $Products['CakeID']; ?>>
<image src = <?php echo
'data:image/jpg;base64,'.base64_encode($Products['Image']).'' ; ?> />
<div class="card-body">
<h4 class="card-title"> <?php echo $Products['Price']; ?> SR. </h4>
<p class="card-text"> Details.</p>
</div>
<div class="card-footer">
<input type="text" value= "<?php echo $Products['CakeID'] ?>" name="PID" >
<input type = "submit" name="delete" value=" Delete Item."
style="width:250px" >
</div>
</div>
</div>
<?php
}
?>
</div>
</div>
</form>
</body>
</html>
最佳答案
为了清理你正在做的事情,让它更容易理解,你有这个简而言之:
<form>
while {
<inputs>
}
</form>
这样做的目的是将所有这些输入提交给 PHP。由于 while
中的每个输入都具有相同的名称,PHP 将只使用“最后一个收到的”。
你想要这样的流程:
while {
<form>
<inputs>
</form>
}
这样每个表单只提交其中定义的输入(而不是页面上的所有输入)。
所以回顾一下你的代码,你会希望在页面上有多个表单:
<?php while($Products=mysqli_fetch_array($r, MYSQLI_ASSOC)){ ?>
<form method="POST" action="Delete.php">
<input type="text" value="<?php echo $Products['CakeID'];?>" name="PID">
<input type="submit" name="delete" value="Delete Item." style="width:250px">
</form>
<?php }?>
关于php - 为什么隐藏输入字段的值总是给我相同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49392726/