foreach 中的表单操作仅适用于 php 的第一个值

地下

我创建了一个表单,每次它都会在 foreach 循环期间存储不同的 id

<?php
foreach ($res as $r) {
                        ?>
<form id="clearitem" action="clearitem.php" method="POST" enctype="multipart/form-data">
<input type="text" name="clearitem" value="<?php echo $r['cart_id'];?>">
<button type="Submit">&times;</button>
</form>
<?php
}
?>

并且数据的检索工作完美,它一个接一个地向我显示每个ID,但是当我单击按钮(在本例中为清除项目)时,它仅适用于第一个值,即如果我单击按钮第二个或第三个值,它只删除第一个,而不是与按钮对应的那个。

如果有人可以提供,请帮忙,为什么会发生这种情况以及适当的解决方案!

clearitem.php

 if(isset($_POST['clearitem'])){
            $clear=$_POST['clearitem'];
            $sql = "DELETE FROM cart WHERE id=".$clear;

            if ($conn->query($sql) === TRUE) {
  echo "Record deleted successfully of id".$clear;
} else {
  echo "Error deleting record: " . $conn->error;
}
}

肯·李

in each form在这样的“多表单”环境下,系统应该能够根据数据值正确处理提交的数据。

因此,下面的代码应该可以工作(经过测试):

<?php

$conn = new mysqli("localhost","dbuser","dbpassword","dbname");

$sql = "SELECT * FROM cart";
$stmt = $conn->prepare($sql); 
$stmt->execute();
$res = $stmt->get_result();

foreach ($res as $r) {
?>

<form id="clearitem" action="clearitem.php" method="POST" enctype="multipart/form-data">
<input type="text" name="clearitem" value="<?php echo $r['cart_id'];?>">
<button type="Submit">&times;</button>
</form>
<?php } ?>

以下是clearitem.php代码

<?php

if (isset($_POST["clearitem"])) {

$conn = new mysqli("localhost","dbuser","dbpassword","dbname");
$sql = "delete FROM cart where cart_id=?" ;
$stmt = $conn->prepare($sql); 

$id=$_POST["clearitem"]; 
$stmt->bind_param("i", $id);
$stmt->execute();
}
?>

<script>
    alert("Done !");
    if ('referrer' in document) {
        window.location = document.referrer;
        /* OR */
        //location.replace(document.referrer);
    } else {
        window.history.back();
    }
</script>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我的 jQuery show() 函数在 php foreach 循环中仅适用于第一个元素

有条件的PHP foreach仅提取第一个值

foreach php仅获得第一个值,而不是循环

在foreach循环php中跳过变量的第一个值

PHP在第一个循环值旁边的td中显示2nd foreach

如何从foreach PHP中获取第一个非空过滤值?

jQuery函数仅适用于laravel中foreach的第一个元素

Foreach仅返回第一个值

带有表单字段的 PHP Foreach 循环仅提交第一个条目

脚本IF ELSE仅适用于php中的第一个数据

如何仅获取第一个结果mysql php-foreach中的多个查询

JavaScript MouseOver 仅适用于 Velocity #foreach 语句中的第一个实例

Foreach循环仅返回多维数组PHP上的第一个索引

MYSQL PHP Foreach语句仅提交第一个插入到语句

如何使用foreach在Php中获取第一个元素结果?

jQuery click slidetoggle仅适用于PHP的第一个DIV重复的DIVS

PHP While ID循环仅适用于第一个ID

PHP foreach不显示第一个数组值

第一个元素的PHP foreach循环问题

Laravel PHP 表单不会提交到数据库或在 web.php 中识别我的路由(但适用于我的第一个表单)

PHP-Foreach循环仅回显字符串的第一个字母

PowerShell ForEach-Object 仅匹配第一个传递的值

在foreach中创建数组,键为循环中的第一个值

Foreach循环仅返回第一个结果

在foreach中返回第一个键

PHP数组获取项目值仅给出第一个字符

Php-在[data]循环中,$ Post仅返回第一个值

PHP相关数组仅显示值的第一个字母

递归PHP函数仅获取第一个值