PHP表单未通过$\u POST方法传输所有数据

PHP表单未通过$\u POST方法传输所有数据,php,html,forms,post,submit,Php,Html,Forms,Post,Submit,目前,我正在尝试使用PHP中的form和$\u POST方法删除带有复选框的多个项目。但是,当我提交表单时,我只收到提交按钮的值,没有任何复选框值 因此,首先,我有一个index.html.php文件(模板文件),我的提交按钮位于该文件中(最后一个导航项) 但是,我得到的消息是:注意:未定义索引:C:\xampp\htdocs\scandiweb\deleteproducts.php中的复选框 那么,除了提交按钮本身的值之外,POST方法不会传输任何内容的原因是什么呢。您误解了表单的工作方式 你

目前,我正在尝试使用PHP中的form和$\u POST方法删除带有复选框的多个项目。但是,当我提交表单时,我只收到提交按钮的值,没有任何复选框值

因此,首先,我有一个index.html.php文件(模板文件),我的提交按钮位于该文件中(最后一个导航项)

但是,我得到的消息是:注意:未定义索引:C:\xampp\htdocs\scandiweb\deleteproducts.php中的复选框


那么,除了提交按钮本身的值之外,POST方法不会传输任何内容的原因是什么呢。

您误解了表单的工作方式

你认为命名相同的东西会以某种方式将它们联系在一起的想法是错误的。
id
属性在页面上应该是唯一的。浏览器不会将几个具有相同
id
的小表单组合成一个大表单

根据您发布的HTML,您正在创建如下内容:

<input type="submit" value="Mass Delete" name="deleteProducts" form="deleteForm" class="btn btn-primary">

<form action="deleteproducts.php" method="post" class="text-center" id="deleteForm">
    <input type="checkbox" name="checkbox[]" class="text-center" value="<?=$product['sku']?>"> 
</form>
<form action="deleteproducts.php" method="post" class="text-center" id="deleteForm">
    <input type="checkbox" name="checkbox[]" class="text-center" value="<?=$product['sku']?>"> 
</form>
<form action="deleteproducts.php" method="post" class="text-center" id="deleteForm">
    <input type="checkbox" name="checkbox[]" class="text-center" value="<?=$product['sku']?>"> 
</form>
<?php
$products = [
    ['sku'=>"product 1"],
    ['sku'=>"product 2"],
    ['sku'=>"product 3"],
    ['sku'=>"product 4"],

];

?>

<form method="POST">
<input type="submit" name="delete" value="Mass Delete"><br>
<?php foreach($products as $product) { ?>
<input type="checkbox" name="checkbox[]" class="text-center" value="<?=$product['sku']?>"><br> 
<?php  } ?>
</form>
Array
(
[delete] => Mass Delete
[checkbox] => Array
(
[0] => product 1
[1] => product 3
)

)
包装用于创建表的所有HTML,包括
Submit
按钮和所有复选框。点击
submit
时,将提交
submit
按钮的值以及所有活动复选框的值

您将在
$\u POST
数组中看到如下内容:

<input type="submit" value="Mass Delete" name="deleteProducts" form="deleteForm" class="btn btn-primary">

<form action="deleteproducts.php" method="post" class="text-center" id="deleteForm">
    <input type="checkbox" name="checkbox[]" class="text-center" value="<?=$product['sku']?>"> 
</form>
<form action="deleteproducts.php" method="post" class="text-center" id="deleteForm">
    <input type="checkbox" name="checkbox[]" class="text-center" value="<?=$product['sku']?>"> 
</form>
<form action="deleteproducts.php" method="post" class="text-center" id="deleteForm">
    <input type="checkbox" name="checkbox[]" class="text-center" value="<?=$product['sku']?>"> 
</form>
<?php
$products = [
    ['sku'=>"product 1"],
    ['sku'=>"product 2"],
    ['sku'=>"product 3"],
    ['sku'=>"product 4"],

];

?>

<form method="POST">
<input type="submit" name="delete" value="Mass Delete"><br>
<?php foreach($products as $product) { ?>
<input type="checkbox" name="checkbox[]" class="text-center" value="<?=$product['sku']?>"><br> 
<?php  } ?>
</form>
Array
(
[delete] => Mass Delete
[checkbox] => Array
(
[0] => product 1
[1] => product 3
)

)

只有
中的输入标记在单击提交按钮时发送。你只在表单标签中有复选框,从外观上看没有提交按钮。不清楚你实际上是如何提交的(不管怎样)。好吧,我的提交按钮(在第一个代码段中,与我的表单具有相同的ID,因此它们应该链接在一起)。如果没有,是否有其他方法将表单外部的提交按钮与表单本身连接起来?因为我需要submit按钮保持在顶部,而所有复选框都是用foreach循环生成的,与您当前的问题无关,但是您希望在任何输出之前,将delete测试放在脚本的顶部。并在重定向后退出或死亡。重新定向的荣誉;这里的大多数海报都不这样做。将所有迭代的内容封装在一个表单标签中,将submit按钮更改为plain按钮,并使用javascript在单击按钮时触发表单提交。