需要一些有关复选框的帮助(选择/取消选择特色帖子)

时间:2012-03-27 作者:booota

我正在从事一个项目,该项目具有基于此的“featured\\u posts”功能discussion. 我创建了一个表,其中列出了所有帖子。我在每一行中都有一个复选框,单击该复选框可以通过javascript提交for。选中该框后,它会更新所有内容并将帖子标记为特色。作为测试,我禁用了所有特色帖子。取消选中最后一个复选框后,我得到

警告:提供的参数无效

警告我的代码是

foreach( $_POST[\'list_id\'] as $listID ) {
    if( update_post_meta( $listID, \'_property_featured\', \'true\' ) ) {
        $featureMessage = "Selected listings have been marked as featured successfully.";
    }
    else $featureError = "An error occurred. Please try again.";
}
list\\u id指的是post\\u id,位于checkbox的value属性中。我知道当最后一个复选框被取消选中时,我不得不面对这个警告。问题是我如何跟踪复选框的取消选中,因为它不包括在表单的POST数据中。

2 个回复
SO网友:soulseekah

这似乎是一个一般的PHP警告,您在foreach

$_POST[\'list_id\'] 应为数组或任何其他(可迭代对象),如果未选中复选框,则我假定$_POST[\'list_id\'] 完全未定义。

$_POST[\'list_id\'] = isset( $_POST[\'list_id\'] ) ? (array) $_POST[\'list_id\'] : array();
在迭代所有内容之前添加此选项将有助于完全消除警告。

SO网友:Geert

永远不要假设$_POST. 它是用户输入,可以包含任何内容。首先检查是否$_POST[\'list_id\'] 存在,使用isset()empty(). 然后确保它是一个数组。如果愿意,您可以简单地将其投射到数组中。最后,确保数组值实际上是绝对整数。

$ids = (isset($_POST[\'list_id\'])) ? array_map(\'absint\', (array) $_POST[\'list_id\']) : array();
在提交的列表中未找到的所有帖子ID都应取消特征。

结束

相关推荐