Drupal 7中如何获取指定日期范围内的Webform提交数据
获取Drupal 7 Webform指定日期范围的提交数据
嘿,这个需求我熟!在Drupal 7里,webform_get_submissions()其实自带了条件过滤的能力,不用先拉取所有提交再自己筛选,直接传日期范围参数就行,效率高多了。
具体操作很简单,核心是把你要的日期转换成Unix时间戳,然后通过submitted字段的条件来限定范围。这里给你写个完整的示例:
// 定义你需要的日期范围,精确到时分秒避免遗漏 $start_timestamp = strtotime('2018-04-16 00:00:00'); $end_timestamp = strtotime('2018-04-28 23:59:59'); // 替换成你目标Webform的节点ID(nid),可以从表单编辑页面URL里找到 $target_webform_nid = 123; // 构建查询条件数组 $filter_conditions = array( 'nid' => $target_webform_nid, 'submitted' => array( 'value' => array($start_timestamp, $end_timestamp), 'operator' => 'BETWEEN', ), ); // 获取符合条件的提交数据 $filtered_submissions = webform_get_submissions($filter_conditions);
给你解释几个关键点:
submitted是Webform存储提交时间的字段,用BETWEEN操作符可以精准限定时间区间,把结束时间设为23:59:59能确保包含当天最后一刻的提交,不会漏掉。- 替换
$target_webform_nid的时候,记得改成你实际使用的Webform的节点ID——比如你打开表单编辑页面,URL是node/456/edit,那nid就是456。 - 关于时区的问题不用太担心,
strtotime()会自动使用Drupal站点设置的时区,所以转换出来的时间戳和Webform存储的是一致的。
如果之后需要调整范围,只要修改起始和结束的日期字符串就行,非常灵活。
内容的提问来源于stack exchange,提问作者Marwen Amri
相关产品推荐
相关产品推荐

