【发布时间】:2014-08-21 07:29:11
【问题描述】:
如果您有任何建议,请告诉我,因为我完全坚持这一点!真的需要任何帮助。如果我能说得更清楚一些,请告诉我!
我的模特:
Query #1 -- 从会话中检索 CampaignId 列表
public function retrieve_campaign($CompanyId)
{
$this->db->select('*');
$this->db->from('Campaign');
$this->db->join('Product', 'Campaign.ProductId=Product.ProductId');
$this->db->where('Product.CompanyId', $CompanyId);
$query = $this->db->get();
return $query->result_array();
}
查询 #2 -- 收集网站每天的点击次数
public function week_data($i, $CampaignId, $StartDate) {
$query = $this->db->query('SELECT COUNT(*) AS MyCount
FROM Record
WHERE CampaignId = ' . $CampaignId . '
AND DATE(TimeStamp) = ' . $StartDate . ' + interval ' . $i . ' day');
return $query;
}
我的控制器: 如您所见,我设置了会话数据,将其插入查询#1。 然后在 foreach 循环中使用该数据来查询 #2 七次(一周中的每一天一次)。然后将此数据存储在数组中 $data['test']
public function index()
{
// Set Session Varaible
$CompanyId = $this->session->userdata('CompanyId');
$StartDate = "'2014-06-23'";
// Assign query result to array to be used in view
$data['campaigns'] = $this->model_record->retrieve_campaign($CompanyId);
foreach($data['campaigns'] as $item) {
for($x = 0;$x > 6;$x++) {
echo $item['CampaignId'];
$data['test'] = $this->model_record->week_data($x,$item,$StartDate);
}
}
// Load views, pass query result array
$this->load->view('templates/header');
$this->load->view('dashboard/index', $data);
$this->load->view('templates/footer');
}
我的观点:这就是我遇到问题的地方——我想遍历 CampaignId 的回显它们,然后回显查询 #2 中与该 CampaignId 相关的所有关联数据。
示例:
1) 检索 CampaignId,在一周中的每一天查询每个 CampaignId 7 次,然后在视图上打印类似这样的内容:
广告系列 ID:1 网络点击:55,63,32,39,22,33,61
等等……
请建议会有所帮助,我已经为此工作了 3 天,但碰壁了。 非常感谢大家!
编辑
非常感谢 Scrowler 帮助我完成每一步。工作编辑:
控制器:
public function index()
{
// Set Session Varaible
$CompanyId = $this->session->userdata('CompanyId');
$StartDate = "'2014-06-23'";
// Assign query result to array to be used in view
$data['campaigns'] = $this->model_record->retrieve_campaign($CompanyId);
foreach($data['campaigns'] as $item) {
for($x = 0; $x < 7; $x++) {
$data['CampaignData'][$item['CampaignId']][] = $this->model_record->week_data($x, $item['CampaignId'], $StartDate);
}
}
// Load views, pass query result array
$this->load->view('templates/header');
$this->load->view('dashboard/index', $data);
$this->load->view('templates/footer');
}
查看:
<?php
foreach($CampaignData as $campaign_id => $week_data) {
echo 'Campaign: ' . $campaign_id . ', web hits: ' . implode(', ', $week_data) . PHP_EOL;
}
?>
【问题讨论】:
-
难道你不能把
echo $item['CampaignId'];放在for循环之前,然后在每次迭代中检索$data['test']的结果后回显它吗? -
很遗憾,我无法在控制器中回显。数据必须放回 $data[''] 数组中才能转移到视图中
-
对,所以把它添加到一个数组中,并使用CampaignId作为key:
$data['CampaignData'][$item['CampaignId']][] = $this->model_record->week_data($x, $item, $StartDate); -
非常感谢您,这真的很有帮助。我已经为我当前的问题更新了我的帖子——我不确定如何格式化 forloop 以在视图上显示我的信息
标签: php mysql arrays codeigniter multidimensional-array