Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 未选中的复选框和隐藏的输入问题_Php_Html_Forms_Post_Checkbox - Fatal编程技术网

Php 未选中的复选框和隐藏的输入问题

Php 未选中的复选框和隐藏的输入问题,php,html,forms,post,checkbox,Php,Html,Forms,Post,Checkbox,我们有一个编辑表单:我们用不同数量的复选框填充它,这一切都取决于,比方说,我们要编辑的文章上有多少图片。 所有复选框都是默认选中的,如果没有发生任何情况,则与图片相关的数据保持不变。 虽然如果我们取消选中一个,我们实际上不想将图片保留在编辑后的帖子中,并将其从数据库中删除 我知道未选中的复选框不会被张贴,我有一个解决办法: 在复选框的正前方放置一个同名的隐藏字段。这样,在复选框未选中的情况下,仍然可以发布隐藏的输入。 但我有这样的情况: /*i'm querying the database t

我们有一个编辑表单:我们用不同数量的复选框填充它,这一切都取决于,比方说,我们要编辑的文章上有多少图片。 所有复选框都是默认选中的,如果没有发生任何情况,则与图片相关的数据保持不变。 虽然如果我们取消选中一个,我们实际上不想将图片保留在编辑后的帖子中,并将其从数据库中删除

我知道未选中的复选框不会被张贴,我有一个解决办法: 在复选框的正前方放置一个同名的隐藏字段。这样,在复选框未选中的情况下,仍然可以发布隐藏的输入。 但我有这样的情况:

/*i'm querying the database to load all the article's data and I check if  */
/* there's any picture so I build, with a while loop, an associated checkbox*/
 <input type="checkbox" name="picture[]" value="$row['pic_id]"/>$row['pic_name'] 
当我提交编辑表单时,我会检查数组图片中是否有任何数据,如果有,我想从数据库中删除它。 现在,如果我只是在每个复选框的顶部添加一个隐藏字段,使其具有相同的名称和值。因为这是我需要在下一个查询中使用的值,我陷入了问题: 如果最终选中,如何区分发布的数据是来自实际复选框还是来自隐藏的输入

再次感谢
Luca

为什么不在服务器端检查一下呢

你知道原来的名单是什么,你有你的新名单。那些不在新列表中,但在原始列表中的,应该删除


因此,您不需要添加任何javascript攻击或隐藏输入。

为什么不在服务器端检查它

你知道原来的名单是什么,你有你的新名单。那些不在新列表中,但在原始列表中的,应该删除


因此,您不需要添加任何javascript攻击或隐藏输入。

在服务器端,您可以使用以下方法:

$array_of_ids_to_delete=array_diff($array_with_all_ids, $posted_ids);
带有所有ID的$array\u必须已经可用,因为我想您可以使用它来输出所有复选框$发布的_id表示图片[]数组


在此之后,您只需在$array\u of \u id\u上运行foreach即可删除并清除这些图像。

在服务器端,您可以使用以下方法:

$array_of_ids_to_delete=array_diff($array_with_all_ids, $posted_ids);
带有所有ID的$array\u必须已经可用,因为我想您可以使用它来输出所有复选框$发布的_id表示图片[]数组


之后,您只需在$array\u of \u id\u上运行foreach即可删除并清除这些图像。

我如何在两个列表之间进行比较?如何查看新列表中是否缺少某些内容?我不懂PHP,因此无法提供代码示例。但基本上,您可以循环使用旧列表,并检查新列表中是否存在每个值。PHP是否有包含函数。如果不是,则在新列表上使用内部循环,检查旧列表中的值是否=新列表中的值。如果等于,则继续使用旧列表中的下一个值。如果它到达循环的末尾,就意味着它不再存在,您将执行删除。刚才看到PHP有一个in_数组函数,您可以在原始列表的循环中使用它。如果新列表包含旧值:确定,如果不删除。祝你好运。如果它不起作用,发布一个关于PHP中循环等的问题,以便PHP人员能够帮助您。这是最干净的解决方案。我如何在这两个列表之间进行比较?如何查看新列表中是否缺少某些内容?我不懂PHP,因此无法提供代码示例。但基本上,您可以循环使用旧列表,并检查新列表中是否存在每个值。PHP是否有包含函数。如果不是,则在新列表上使用内部循环,检查旧列表中的值是否=新列表中的值。如果等于,则继续使用旧列表中的下一个值。如果它到达循环的末尾,就意味着它不再存在,您将执行删除。刚才看到PHP有一个in_数组函数,您可以在原始列表的循环中使用它。如果新列表包含旧值:确定,如果不删除。祝你好运。如果它不起作用,发布一个关于PHP中循环等的问题,以便PHP人员能够帮助您。这是最干净的解决方案。