php循环和分组mysql
我目前正在为支付系统添加一个购买历史部分,该系统是在PHP(codeigniter框架)和mysql中构建的。“付款历史记录”部分的思想是,所有客户的购买都按日期分组,因此最终HTML看起来与此类似 我的问题是我可以从数据库中获取数据没有问题,但是我如何循环使用它,以便显示购买日期,然后显示与该日期相关的购买,等等 编辑-从数据库返回的数组的打印输出,以确定大小php循环和分组mysql,php,mysql,codeigniter,loops,group-by,Php,Mysql,Codeigniter,Loops,Group By,我目前正在为支付系统添加一个购买历史部分,该系统是在PHP(codeigniter框架)和mysql中构建的。“付款历史记录”部分的思想是,所有客户的购买都按日期分组,因此最终HTML看起来与此类似 我的问题是我可以从数据库中获取数据没有问题,但是我如何循环使用它,以便显示购买日期,然后显示与该日期相关的购买,等等 编辑-从数据库返回的数组的打印输出,以确定大小 Array ( [0] => Array ( [id] =>
Array
(
[0] => Array
(
[id] =>
[employer_id] => 1
[cv_id] =>
[transaction_id] => -1402310
[date_created] => 20-07-10
[date_updated] =>
[code] => 849711492
[status] => SHOW
[is_complete] => TRUE
[job_status] => 1
[dob] =>
[will_relocate] => Y
[education_level] => HIGH_SCHOOL
[job_looking_for] =>
[keywords_education] => Halifax University
[keywords_employment] => senior applications developer
[self_description] =>
[looking_for] => Lorem ipsum
[sector_id_csv] => 10,23,14,6,3
[key_skills_csv] =>
[expected_salary_level] => LEVEL_6
[expected_salary_low] => 0
[expected_salary_high] => 0
[best_salary_low] => 0
[best_salary_high] => 0
[last_job_salary_low] =>
[last_job_salary_high] =>
[last_job_title_1] => Designer
[last_job_title_2] =>
[last_job_employer_1] => BT
[last_job_employer_2] =>
[qual_highest_level] => 0
[is_grad] => Y
[is_contract] => N
[is_temporary] => Y
[is_permanent] => Y
[is_full_time] => Y
[is_part_time] => Y
[logitude] =>
[latitude] =>
[city] =>
[area] =>
[sign_up_stages_completed] =>
[sign_up_last_stage_completed] =>
[sign_up_complete] =>
[email_authenticated] =>
[email] =>
[email_contact] =>
[phone_contact_number] =>
[password] =>
[firstname] =>
[surname] =>
[address_1] =>
[address_2] =>
[address_3] =>
[postcode] =>
[country] =>
)
[1] => Array
(
[id] =>
[employer_id] => 1
[cv_id] =>
[transaction_id] => -1402310
[date_created] => 20-07-10
[date_updated] =>
[code] => 849719383
[status] => SHOW
[is_complete] => TRUE
[job_status] => 1
[dob] =>
[will_relocate] => Y
[education_level] => HIGH_SCHOOL
[job_looking_for] =>
[keywords_education] => Crewe Art School
[keywords_employment] => senior applications developer
[self_description] =>
[looking_for] => Lorem ipsum
[sector_id_csv] => 13,24,7,17,5
[key_skills_csv] =>
[expected_salary_level] => LEVEL_6
[expected_salary_low] => 0
[expected_salary_high] => 0
[best_salary_low] => 0
[best_salary_high] => 0
[last_job_salary_low] =>
[last_job_salary_high] =>
[last_job_title_1] => Developer
[last_job_title_2] =>
[last_job_employer_1] => Orange
[last_job_employer_2] =>
[qual_highest_level] => 0
[is_grad] => Y
[is_contract] => N
[is_temporary] => Y
[is_permanent] => Y
[is_full_time] => Y
[is_part_time] => N
[logitude] =>
[latitude] =>
[city] =>
[area] =>
[sign_up_stages_completed] =>
[sign_up_last_stage_completed] =>
[sign_up_complete] =>
[email_authenticated] =>
[email] =>
[email_contact] =>
[phone_contact_number] =>
[password] =>
[firstname] =>
[surname] =>
[address_1] =>
[address_2] =>
[address_3] =>
[postcode] =>
[country] =>
)
[2] => Array
(
[id] =>
[employer_id] => 1
[cv_id] =>
[transaction_id] => 23-9-1402338
[date_created] => 17-07-10
[date_updated] =>
[code] => 849711492
[status] => SHOW
[is_complete] => TRUE
[job_status] => 1
[dob] =>
[will_relocate] => Y
[education_level] => HIGH_SCHOOL
[job_looking_for] =>
[keywords_education] => Halifax University
[keywords_employment] => senior applications developer
[self_description] =>
[looking_for] => Lorem ipsum
[sector_id_csv] => 10,23,14,6,3
[key_skills_csv] =>
[expected_salary_level] => LEVEL_6
[expected_salary_low] => 0
[expected_salary_high] => 0
[best_salary_low] => 0
[best_salary_high] => 0
[last_job_salary_low] =>
[last_job_salary_high] =>
[last_job_title_1] => Designer
[last_job_title_2] =>
[last_job_employer_1] => BT
[last_job_employer_2] =>
[qual_highest_level] => 0
[is_grad] => Y
[is_contract] => N
[is_temporary] => Y
[is_permanent] => Y
[is_full_time] => Y
[is_part_time] => Y
[logitude] =>
[latitude] =>
[city] =>
[area] =>
[sign_up_stages_completed] =>
[sign_up_last_stage_completed] =>
[sign_up_complete] =>
[email_authenticated] =>
[email] =>
[email_contact] =>
[phone_contact_number] =>
[password] =>
[firstname] =>
[surname] =>
[address_1] =>
[address_2] =>
[address_3] =>
[postcode] =>
[country] =>
)
[3] => Array
(
[id] =>
[employer_id] => 1
[cv_id] =>
[transaction_id] => 23-9-1402338
[date_created] => 17-07-10
[date_updated] =>
[code] => 849719383
[status] => SHOW
[is_complete] => TRUE
[job_status] => 1
[dob] =>
[will_relocate] => Y
[education_level] => HIGH_SCHOOL
[job_looking_for] =>
[keywords_education] => Crewe Art School
[keywords_employment] => senior applications developer
[self_description] =>
[looking_for] => Lorem ipsum
[sector_id_csv] => 13,24,7,17,5
[key_skills_csv] =>
[expected_salary_level] => LEVEL_6
[expected_salary_low] => 0
[expected_salary_high] => 0
[best_salary_low] => 0
[best_salary_high] => 0
[last_job_salary_low] =>
[last_job_salary_high] =>
[last_job_title_1] => Developer
[last_job_title_2] =>
[last_job_employer_1] => Orange
[last_job_employer_2] =>
[qual_highest_level] => 0
[is_grad] => Y
[is_contract] => N
[is_temporary] => Y
[is_permanent] => Y
[is_full_time] => Y
[is_part_time] => N
[logitude] =>
[latitude] =>
[city] =>
[area] =>
[sign_up_stages_completed] =>
[sign_up_last_stage_completed] =>
[sign_up_complete] =>
[email_authenticated] =>
[email] =>
[email_contact] =>
[phone_contact_number] =>
[password] =>
[firstname] =>
[surname] =>
[address_1] =>
[address_2] =>
[address_3] =>
[postcode] =>
[country] =>
)
)
基本上每次有一个新数据时,我都需要列出它下面数组的内容,如果两个数组有相同的数据,就在一个数据下面列出它们,比如
30-07-10
结果12
三, 28-7-10 4
5使用CodeIgniter,循环查询结果的一种方法如下:
//if your doing your queries in a controller
$data['query']=$this->db->query('SELECT * FROM purchases WHERE clientID=5');
//or if using models
$data['query']=$this->pmnt_model->getPmnts();
//view
foreach($query result() as $row){
echo $row->date;
}
$query
变量是从mysql查询返回的结果数组。可以通过->
操作符访问对象
有关更多信息,请参阅
你也可能想退房
HTH我可以看到两种可能性来实现您的需求。这里有一个;向视图发送两个数组,一个仅包含日期,另一个包含购买信息: 在控制器中
$page_data['purchase_dates'] = $this->yourmodel->get_purchase_dates($record_id);
$page_data['purchases'] = $this->yourmodel->get_purchases($record_id);
注意确保在数据库查询中使用GROUP BY查询购买日期
视图中的
<!-- Start Outer Tree Loop -->
<?php if($purchase_dates != FALSE){?>
<?php foreach($purchase_dates as $id=>$outer_value) { ?>
<!-- Output the date here -->
<!-- Start Purchase table -->
<table>
<tr>
<th>Param One</th>
<th>Param Two</th>
<th>Etcetera</th>
<th></th>
</tr>
<!-- Start inner loop -->
<?php foreach($purchases as $id=>$inner_value) { ?>
<?php if($inner_value['purchase_date'] == $outer_value['purchase_date']) { ?>
<tr>
<td><?php echo $inner_value['Param One'] ?> </td>
<td><?php echo $inner_value['Param Two'] ?></td>
<td><?php echo $inner_value['Etcetera'] ?> </td>
</tr>
<?php } ?>
<?php } ?>
<!-- End inner loop -->
</table>
<!-- End Purchase table -->
<?php } ?>
<?php }?>
<!-- End Outer Tree Loop -->
Param One
参数二
等等
我添加了注释来说明代码(这可能是您的最佳选择,因为您发布的数组是二维的)
第二个:是向视图发送一个三维数组,并以与上面非常相似的方式在其中循环
<?php if($purchases != FALSE){?>
<?php foreach($purchases as $id=>$purchase_day) { ?>
<?php foreach($purchase_day as $purchase) { ?>
<!-- Output here -->
<?php } ?>
<?php } ?>
<?php }?>
希望这有帮助。请显示现有代码和数据库模式。